Buenas, esta Nochevieja enchufé la recreativa para echar unas partiditas y apareció el Gals Panic.
Me entró la nostalgia y en unas horillas que he tenido estas fiestas, he hecho un semiclon.
Aqui teneis un video http://www.youtube.com/watch?v=UaQo4tRukro (http://www.youtube.com/watch?v=UaQo4tRukro)
Quedan que perfilar muchas cosillas pero ya es "jugable". :..
Se aceptan criticas contructivas. ;)
pues pinta muy bien :)
que algoritmo estas utilizando para mostrar las partes de la imagen?
El algoritmo lo he diseñado a partir de un supuesto metodo que vi para saber si un punto esta dentro o no de un poligono. Luego use para saber si esta dentro el metodo de ir sumando los angulos. :)
En fin que lo que hago es que cojo la posicion del enemigo principal, y desde ahi trazo lineas horizontales a ambos lados y cuando topo con un borde voy cambiando entre pintar y no.
Aqui tienes la chicha del algoritmo:
void LanzaRayoHorizontalParcial(int x, int y, int dx, int dy, bool pintar, int destino)
{
if (x == destino) return;
do
{
if (Data_Estado[x - dx + width * y] != Estados.Borde && Data_Estado[x + width * y] == Estados.Borde)
{
if (Data_Estado[x + dx + width * y] != Estados.Borde)
{
pintar = !pintar;
}
else
{
int estado = 0;
if (Data_Estado[x + width * ( y + dy)] == Estados.Borde) estado = 1;
else if (Data_Estado[x + width *( y - dy)] == Estados.Borde) estado = 2;
while (x != destino && Data_Estado[x + dx+ width * y] == Estados.Borde) x += dx; ;
if ((estado == 2 && Data_Estado[x + width * (y + dy)] == Estados.Borde)
|| (estado == 1 && Data_Estado[x + width * (y - dy)] == Estados.Borde))
{
{
pintar = !pintar;
}
}
if (x == destino) return;
}
}
else if (pintar && Data_Estado[x + width * y] != Estados.Borde)
{
Data_Estado[x + width * y] = Estados.Iluminado;
}
x += dx;
} while (x != destino);
}