-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial Pong_es
Selecciona tu idioma / Choisissez votre langue / Wählen Sie Ihre Sprache:
English | Français | Deutsch | Italiano | Español | Português | Slovenščina | Українська | Русский
En este tutorial, crearás un juego clásico Pong - ¡uno de los primeros videojuegos jamás creados! Pong es un juego para dos jugadores donde cada jugador controla una paleta e intenta golpear la pelota pasando la paleta de su oponente para anotar puntos.
Lo que aprenderás:
- Crear sprites para paletas, pelota y paredes
- Manejar entrada de teclado para dos jugadores
- Hacer que los objetos reboten entre sí
- Rastrear y mostrar puntuaciones de ambos jugadores
- Usar variables globales
Dificultad: Principiante Preset: Preset para Principiantes
Antes de comenzar, entendamos lo que necesitamos:
| Elemento | Propósito |
|---|---|
| Pelota | Rebota entre jugadores |
| Paleta Izquierda | Jugador 1 controla con teclas W/S |
| Paleta Derecha | Jugador 2 controla con flechas Arriba/Abajo |
| Paredes | Límites superior e inferior |
| Zonas de Gol | Áreas invisibles detrás de cada paleta para detectar puntuaciones |
| Marcador | Muestra las puntuaciones de ambos jugadores |
- En el Árbol de Recursos, haz clic derecho en Sprites y selecciona Crear Sprite
- Nómbralo
spr_ball - Haz clic en Editar Sprite para abrir el editor de sprites
- Dibuja un pequeño círculo blanco (aproximadamente 16x16 píxeles)
- Haz clic en Aceptar para guardar
Crearemos dos paletas, una para cada jugador:
Paleta Izquierda (Jugador 1):
- Crea un nuevo sprite nombrado
spr_paddle_left - Dibuja un rectángulo alto y delgado curvado como un paréntesis ")" - se recomienda color azul
- Tamaño: aproximadamente 16x64 píxeles
Paleta Derecha (Jugador 2):
- Crea un nuevo sprite nombrado
spr_paddle_right - Dibuja un rectángulo alto y delgado curvado como un paréntesis "(" - se recomienda color rojo
- Tamaño: aproximadamente 16x64 píxeles
- Crea un nuevo sprite nombrado
spr_wall - Dibuja un rectángulo sólido (gris o blanco)
- Tamaño: 32x32 píxeles (lo estiraremos en la sala)
- Crea un nuevo sprite nombrado
spr_goal - Hazlo de 32x32 píxeles
- Déjalo transparente o hazlo de un color sólido (será invisible en el juego)
![]()
El objeto pared crea límites en la parte superior e inferior del área de juego.
- Haz clic derecho en Objetos y selecciona Crear Objeto
- Nómbralo
obj_wall - Establece el sprite en
spr_wall - Marca la casilla "Sólido" - ¡esto es importante para el rebote!
- No se necesitan eventos - la pared solo está ahí

- Crea un nuevo objeto nombrado
obj_paddle_left - Establece el sprite en
spr_paddle_left - Marca la casilla "Sólido"
Agrega Eventos de Teclado para Movimiento:
Evento: Presionar Tecla W
- Agregar Evento → Teclado → Presionar W
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
-8(se mueve hacia arriba)
Evento: Soltar Tecla W
- Agregar Evento → Teclado → Soltar W
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
0(deja de moverse)
Evento: Presionar Tecla S
- Agregar Evento → Teclado → Presionar S
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
8(se mueve hacia abajo)
Evento: Soltar Tecla S
- Agregar Evento → Teclado → Soltar S
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
0(deja de moverse)
Evento: Colisión con obj_wall
- Agregar Evento → Colisión → obj_wall
- Agregar Acción: Movimiento → Rebotar (no se necesita configuración — siempre rebota en objetos sólidos)
- Crea un nuevo objeto nombrado
obj_paddle_right - Establece el sprite en
spr_paddle_right - Marca la casilla "Sólido"
Agrega Eventos de Teclado para Movimiento:
Evento: Presionar Flecha Arriba
- Agregar Evento → Teclado → Presionar Arriba
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
-8
Evento: Soltar Flecha Arriba
- Agregar Evento → Teclado → Soltar Arriba
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
0
Evento: Presionar Flecha Abajo
- Agregar Evento → Teclado → Presionar Abajo
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
8
Evento: Soltar Flecha Abajo
- Agregar Evento → Teclado → Soltar Abajo
- Agregar Acción: Movimiento → Establecer Velocidad Vertical
- Establece la velocidad vertical en
0
Evento: Colisión con obj_wall
- Agregar Evento → Colisión → obj_wall
- Agregar Acción: Movimiento → Rebotar (no se necesita configuración — siempre rebota en objetos sólidos)

- Crea un nuevo objeto nombrado
obj_ball - Establece el sprite en
spr_ball
Evento: Crear
- Agregar Evento → Crear
- Agregar Acción: Movimiento → Empezar a moverse (dirección)
- Elige una casilla diagonal en el selector de dirección 3x3 (no recta hacia arriba o abajo)
- Establece la velocidad en
6
Evento: Colisión con obj_paddle_left
- Agregar Evento → Colisión → obj_paddle_left
- Agregar Acción: Movimiento → Rebotar (no se necesita configuración — siempre rebota en objetos sólidos)
Evento: Colisión con obj_paddle_right
- Agregar Evento → Colisión → obj_paddle_right
- Agregar Acción: Movimiento → Rebotar (no se necesita configuración — siempre rebota en objetos sólidos)
Evento: Colisión con obj_wall
- Agregar Evento → Colisión → obj_wall
- Agregar Acción: Movimiento → Rebotar (no se necesita configuración — siempre rebota en objetos sólidos)

Las zonas de gol son áreas invisibles detrás de cada paleta. Cuando la pelota entra en una zona de gol, el jugador opuesto anota.
- Crea un nuevo objeto nombrado
obj_goal_left - Establece el sprite en
spr_goal - Desmarca "Visible" - la zona de gol debe ser invisible
- Marca "Sólido"
- Crea un nuevo objeto nombrado
obj_goal_right - Establece el sprite en
spr_goal - Desmarca "Visible"
- Marca "Sólido"
global.p1score/global.p2score son variables con nombre
personalizado, una por jugador — la acción integrada Set Score no
sirve aquí, porque siempre escribe la única puntuación integrada, sin
forma de apuntar a un nombre de variable. Set Variable es la acción
real para una variable con nombre personalizado y admite un ámbito
global:
Vuelve a obj_ball y agrega estos eventos:
Evento: Colisión con obj_goal_left
- Agregar Evento → Colisión → obj_goal_left
- Agregar Acción: Movimiento → Saltar a Posición de Inicio (reinicia la pelota)
- Agregar Acción: Control → Set Variable
- Variable:
p2score - Valor:
1 - Ámbito:
global - Marca "Relative" (suma 1 a la puntuación actual)
- Variable:
Evento: Colisión con obj_goal_right
- Agregar Evento → Colisión → obj_goal_right
- Agregar Acción: Movimiento → Saltar a Posición de Inicio
- Agregar Acción: Control → Set Variable
- Variable:
p1score - Valor:
1 - Ámbito:
global - Marca "Relative"
- Variable:

- Crea un nuevo objeto nombrado
obj_score - No se necesita sprite
Evento: Crear
- Agregar Evento → Crear
- Agregar Acción: Control → Set Variable
- Variable:
p1score, Valor:0, Ámbito:global
- Variable:
- Agregar Acción: Control → Set Variable
- Variable:
p2score, Valor:0, Ámbito:global
- Variable:
Evento: Dibujar
- Agregar Evento → Dibujar
- Agregar Acción: Dibujo → Dibujar Texto
- Texto:
Jugador 1: - X:
10 - Y:
10
- Texto:
- Agregar Acción: Dibujo → Dibujar Variable
- Variable:
global.p1score - X:
100 - Y:
10
- Variable:
- Agregar Acción: Dibujo → Dibujar Texto
- Texto:
Jugador 2: - X:
10 - Y:
30
- Texto:
- Agregar Acción: Dibujo → Dibujar Variable
- Variable:
global.p2score - X:
100 - Y:
30
- Variable:

- Haz clic derecho en Salas y selecciona Crear Sala
- Nómbrala
room_pong - Establece el tamaño de la sala (por ejemplo, 640x480)
Coloca los objetos:
-
Paredes: Coloca instancias de
obj_walla lo largo de los bordes superior e inferior de la sala -
Paleta Izquierda: Coloca
obj_paddle_leftcerca del borde izquierdo, centrada verticalmente -
Paleta Derecha: Coloca
obj_paddle_rightcerca del borde derecho, centrada verticalmente -
Pelota: Coloca
obj_ballen el centro de la sala -
Zonas de Gol:
- Coloca instancias de
obj_goal_lefta lo largo del borde izquierdo (detrás de donde está la paleta) - Coloca instancias de
obj_goal_righta lo largo del borde derecho
- Coloca instancias de
-
Marcador: Coloca
obj_scoreen cualquier lugar (no tiene sprite, solo dibuja texto)
Ejemplo de Diseño de Sala:
[PARED PARED PARED PARED PARED PARED PARED PARED PARED PARED]
[GOL] [PALETA_I] [PELOTA] [PALETA_D] [GOL]
[GOL] [PALETA_I] [PALETA_D] [GOL]
[GOL] [GOL]
[PARED PARED PARED PARED PARED PARED PARED PARED PARED PARED]

- Haz clic en Ejecutar o presiona F5 para probar tu juego
- Jugador 1 usa W (arriba) y S (abajo)
- Jugador 2 usa Flecha Arriba y Flecha Abajo
- ¡Intenta golpear la pelota pasando la paleta de tu oponente!
Haz que la pelota sea más rápida cada vez que golpea una paleta.
speed no se puede usar directamente aquí — en este motor es la
velocidad de animación del sprite, no la velocidad de movimiento —
así que rastrea la velocidad de la pelota en una variable
personalizada:
- En el evento Crear de
obj_ball, agrega Control → Set Variable (Variable:ball_speed, Valor:6) justo después de la acción Empezar a moverse. - En cada evento de colisión con una paleta, después de la acción
Rebotar, agrega Control → Set Variable (Variable:
ball_speed, Valor:0.5, Relative marcado), luego Movimiento → Establecer Velocidad con Valorself.ball_speedpara aplicar la nueva velocidad manteniendo la dirección actual (Rebotar ya la invirtió).
Agrega sonidos cuando:
- La pelota golpea una paleta
- La pelota golpea una pared
- Un jugador anota
Agrega una verificación en el evento Dibujar:
- Si
global.p1score >= 10, muestra "¡Jugador 1 Gana!" - Si
global.p2score >= 10, muestra "¡Jugador 2 Gana!"
| Problema | Solución |
|---|---|
| La pelota pasa a través de la paleta | Asegúrate de que las paletas tengan "Sólido" marcado |
| La paleta no se detiene en las paredes | Agrega evento de colisión con obj_wall |
| La puntuación no se actualiza | Verifica que los nombres de las variables coincidan exactamente (global.p1score, global.p2score) |
| La pelota no se mueve | Verifica que el evento Crear tenga la acción de movimiento |
¡Felicidades! ¡Has creado un juego Pong completo para dos jugadores! Aprendiste:
- Cómo manejar entrada de teclado para dos jugadores diferentes
- Cómo usar eventos de Soltar Tecla para detener el movimiento
- Cómo hacer que los objetos reboten entre sí
- Cómo usar variables globales para rastrear puntuaciones
- Cómo mostrar texto y variables en la pantalla
- Preset para Principiantes - Descripción general de características para principiantes
- Tutorial: Breakout - Crear un juego de rompecabezas de ladrillos
- Referencia de Eventos - Documentación completa de eventos
- Referencia Completa de Acciones - Todas las acciones disponibles