Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Gals Panic Clon

Iniciado por blau, 07 de Enero de 2010, 01:18:14 AM

« anterior - próximo »

blau

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

Quedan que perfilar muchas cosillas pero ya es "jugable".   :..

Se aceptan criticas contructivas.  ;)

cybernoid

pues pinta muy bien :)

que algoritmo estas utilizando para mostrar las partes de la imagen?

blau



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);
         }






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.