Skip to content

Instantly share code, notes, and snippets.

@jonmircha
Created November 27, 2025 06:11
Show Gist options
  • Select an option

  • Save jonmircha/388738c6b8b1f8530ceb6c66950122df to your computer and use it in GitHub Desktop.

Select an option

Save jonmircha/388738c6b8b1f8530ceb6c66950122df to your computer and use it in GitHub Desktop.

Pong

Crea el juego de Pong creado por Atari en 1972.

Crea un juego en Vanilla HTML, CSS y JS donde el personaje principal sea Mario, que pueda moverse hacia la derecha y saltar sobre plataformas.

El juego debe tener un fondo azul, un suelo verde y bloques flotantes. Mario se controla con las flechas izquierda/derecha y espacio para saltar.

Si cae fuera de la pantalla, la partida se reinicia autom谩ticamente. Todo en un solo archivo HTML, usando canvas y sin im谩genes externas.

Termina el primer nivel del juego.

Toma como referencia el gameplay que te agrego en este video de YouTube:

Crea un juego completo de Tetris en un solo archivo HTML (con CSS y JavaScript integrados, sin librer铆as externas).

Crea un juego web de naves espaciales 3D pulido, de bajo poligonaje y estilo "Caja de Juguetes", estructurado como una aplicaci贸n React de m煤ltiples archivos. El juego debe presentar una est茅tica brillante y juguetona con las siguientes especificaciones:

Pila Principal (Core Stack): React, React Three Fiber, @react-three/drei, @react-three/postprocessing, y Zustand para la gesti贸n de estados.

1. Estilo Visual y Atm贸sfera

  • Est茅tica: Un entorno brillante y vibrante que se asemeja a un juego de juguetes digital. Utiliza geometr铆a gruesa y una paleta de colores pastel compuesta por azules suaves, verdes menta, amarillos soleados y rojos coral.
  • Materiales e Iluminaci贸n: Utiliza MeshStandardMaterial en todas las mallas. La iluminaci贸n debe usar AmbientLight (intensidad 0.5) y DirectionalLight (intensidad 1.0, con sombras proyectadas) para simular un d铆a soleado.
  • Post-Procesamiento: Utiliza el EffectComposer con SSAO (Screen Space Ambient Occlusion) para hacer que la geometr铆a resalte.
  • Entorno: Un fondo s贸lido de Azul Celeste (propiedad color en Canvas o background attach). Agrega nubes de aspecto volum茅trico (compuestas por grupos de esferas blancas agrupadas) y monta帽as geom茅tricas de bajo poligonaje que se mueven m谩s all谩 del jugador para simular velocidad.
  • Assets: Crea la Nave del Jugador y los Enemigos mediante programaci贸n utilizando grupos de BoxGeometry y ConeGeometry. No utilices modelos externos.

2. Mec谩nicas de Jugabilidad

  • Perspectiva: C谩mara fija detr谩s de la nave (Tercera persona), ligeramente elevada.
  • Bucle Central (Core Loop): El jugador se mueve en X/Y. Los enemigos aparecen a una profundidad Z negativa y se mueven hacia una Z positiva. Establece la velocidad del juego a una dificultad media (velocidad atractiva pero justa para el movimiento de los enemigos y las tasas de aparici贸n).
  • Combate:
    • La barra espaciadora dispara proyectiles (esferas amarillas).
    • Colisi贸n: Utiliza comprobaciones sencillas basadas en la distancia (p. ej., position.distanceTo() dentro del bucle useFrame) para la detecci贸n de colisiones entre balas/enemigos y nave/enemigos.
  • Explosi贸n: Cuando un enemigo muere, genera un grupo temporal de cubos peque帽os (part铆culas) que se expanden y se desvanecen.
  • UI (Interfaz de Usuario): Una superposici贸n HTML que muestra la Puntuaci贸n (Score) (arriba a la izquierda) y una pantalla de Game Over con un bot贸n de Reinicio (Restart). Utiliza una fuente redondeada y sans-serif.

3. Controles

  • Estado: Utiliza Zustand para gestionar las entradas, la puntuaci贸n y el estado de juego terminado para evitar que el Canvas se vuelva a renderizar.
  • Escritorio: WASD o Teclas de Flecha. Utiliza lerp en la posici贸n de la nave para un movimiento suave y flotante.
  • M贸vil: Detecta el toque. Tocar la mitad izquierda de la pantalla act煤a como un D-pad virtual (arrastre relativo que mueve la nave). Tocar la mitad derecha dispara.

4. Estructura del C贸digo

  • Proporciona la soluci贸n en m煤ltiples archivos.
  • Aseg煤rate de que el Canvas sea responsivo y llene el contenedor padre.

Ecos del Guard铆an

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment