Documentos de Académico
Documentos de Profesional
Documentos de Cultura
- Anatomía de un Robot
- Mi primer Robot
- Física del juego
- Puntuaciones
- Un vistazo a la API
- Ejercicio 1
- Ejercicio 2
- Manejando Eventos
- Ejercicio 3
- Ejercicio 4
- Ejercicio 5
Anatomía de un Robot
turnGunRight(360);
}
Física del Juego
-Coordenadas:
Sistema Cartesiano (x,y)
x = Anchura
y = Altura
-Dirección:
Se mide en grados
-Tiempo y distancia:
El tiempo (t) se mide en "ticks". 1 tick = 1 turno
La distancia se mide en pixeles de precisión doble, es decir, un robot
se puede mover incluso una fracción de pixel.
-Colisiones:
Con otro robot: Cada robot recibe 0,6 de daño
Con un muro: velocidad * 0,5 -1 (nunca menor que 0)
Física del Juego
- Balas:
Potencia del disparo: minimo = 0, maximo = 3.
Daño: 4 * potencia. Sí potencia > 1, se le suma 2*(potencia -1)
Velocidad: 20 - 30*potencia
Sobrecalentamiento: 1 + potencia / 5. Igual a 0 para disparar.
Disparar consume la potencia del disparo de tu propia energía.
Energía restaurada por impacto: 3 * potencia
Puntuaciones
Esta es la tabla de puntuaciones al terminar el juego:
Eventos:
- void run(): Es el método principal, en el se ejecutan los movimientos básicos del robot
- Robot que avance hasta el muro superior y una vez llegue se desplace
a la derecha hasta que choque y se dé la vuelta, y así sucesivamente, el
cañón apuntará hacia abajo, para que dispare siempre que detecte un
enemigo.
Manejando eventos
En las funciones que reciben un evento como parámetro de entrada, podemos acceder a
los elementos de dicho evento para obtener información que nos pueda resultar
relevante, por ejemplo:
Clase HitRobotEvent
- double getBearing(): Devuelve la orientación del robot con el que hemos chocado, con
respecto a nosotros (-180 < getBearing < 180)
-double getEnergy(): Devuelve la energía del robot con el que chocamos
-boolean isMyFault(): Devuelve verdadero si hemos provocado el choque
Clase HitByBulletEvent
- double getBearing()
- double getPower(): Devuelve la potencia de la bala
- double getVelocity(): Devuelve la velocidad de la bala
Manejando eventos
El evento más usado, ya que es el que más posibilidades ofrece y donde se pueden
realizar más cálculos.
Clase ScannedRobotEvent
- double getHeading(): devuelve la orientación del robot detectado, en grados (0 <
getHeading < 360)
- double getBearing()
- double getDistance(): devuelve la distancia con el robot detectado
- double getEnergy(): devuelve su energía
- double getVelocity(): devuelve la velocidad del robot
Ejercicio 3
- Robot que dispare con más o menos fuerza (y por lo tanto menos o
más velocidad) según la distancia a la que esté el enemigo, asi como si
este se esta moviendo o no (si no se mueve podemos disparar más
lento). Además debemos tener en cuenta la energía del enemigo, si es
muy poca (menor de 3) no es conveniente desperdiciar energía con un
disparo de potencia mayor.
Ejercicio 4
Pista: La función double getBearing() puede sernos muy útil, pues nos
da la orientación de nuestro enemigo, pero con respecto a nuestra
propia orientación.
Y ahora...
¡A COMBATIR!
Muchas gracias por vuestra atención!!
Este programa ha sido realizado con fi nanciación del Proyecto de Mejora Docente "Consolidación
de los conocimientos de programación mediante el desarrollo de videojuegos: una experiencia en el
año de Turing" (código AAA_13_019) de la Convocatoria de Actuaciones Avaladas para la Mejora
Docente, Formación del Profesorado y Difusión de Resultados de la Unidad de Innovación Docente
de la Universidad de Cádiz, Curso 2012/2013, cuyos fondos proceden de la Consejería de
Economía, Innovación, Ciencia y Empleo de la Junta de Andalucía.