Estoy creando un juego de las "Motos de luz". Manejas una moto que deja un rastro de color a su paso y tienes que intentar matar al otro (haciendo que se estrelle contra una pared).
El caso es que quiero crearle una IA, el problema esque siempre que llega a la esquina superior izquierda. Empieza a cabecear de forma rara hasta suicidarse (la amarilla es la maquina):
La funcion que gestiona los movimientos de la maquina es la siguiente:
Código C++:
Ver originalvoid InteligenciaArtificial(Vehiculo &Jugador2)
{
int color;
int color2;
bool Movido = false;
// Si se choca en el eje X
if (Jugador2.MovimientoX != 0) // Si se mueve en el eje x
{
color = getpixel(screen,Jugador2.X+50*Jugador2.MovimientoX, Jugador2.Y); // Comprobamos si hay algun obstaculo
if ((color != 0)&& (color != palette_color[15]))
{
color = getpixel(screen,Jugador2.X, Jugador2.Y+50);
color2= getpixel(screen,Jugador2.X, Jugador2.Y-50);
if ((color!= 0)&& (color != palette_color[15])&& (color2 != 0)&& (color2!= palette_color[15]))
Jugador2.MovimientoY = 1;
else
Jugador2.MovimientoY = -1;
Jugador2.MovimientoX = 0;
Movido = true;
// return;
}
}
// Si se choca en el eje Y
if ((Jugador2.MovimientoY != 0)&& (Movido == false))
{
color = getpixel(screen,Jugador2.X, Jugador2.Y+50*Jugador2.MovimientoY);
if ((color != 0)&& (color != palette_color[15]))
{
color = getpixel(screen,Jugador2.X+50, Jugador2.Y);
color2= getpixel(screen,Jugador2.X-50, Jugador2.Y);
if ((color!= 0)&& (color != palette_color[15])&& (color2 != 0)&& (color2 != palette_color[15]))
Jugador2.MovimientoX = 1;
else
Jugador2.MovimientoX = -1;
Jugador2.MovimientoY = 0;
Movido = true;
//return;
}
}
}
La función GetPixel es una función de la librería gráfica que te devuelve el color de un determinado adyacente. Lo uso para determinar si el siguiente pixel es un obstaculo o solo parte del fondo.
Saludos!