RetroDev
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

3 participantes

Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Vie Jul 12, 2013 3:31 pm

No es ni por asomo lo que se considera un juego, me tomo más tiempo del que pensaba ya que pues, soy nuevo con SDL, pero poco a poco avanzo, aún estoy mirando el uso de fuentes con ttf, el uso de flip y blit, si es mejor usar canales alpha para imagenes y textos...en fin, son muchas cosas, y eso que es el PONG!!! el juego más simple del mundo.

Dejo solo el src, ya que considero que hasta que este en un estado alpha no vale la pena dejar ejecutables para windows y linux, bsd, android...cafeteras y microondas...no se, lo que sea que pueda ejecutar este jueguito.

De momento solo funciona las colisiones, no hay puntuacion, no he podido hacer que sirva correctamente el mensaje de texto, pues parece un incomodo parpadeo que aun estoy averiguando de implementar correctamente, funciona con las teclas W-S para el jugador 1, y Flecha Arriba-Flecha Abajo para el segundo jugador. Pero tambien tengo pendiente implementar el uso de la barra del primer jugador con mouse y que funcione contra una IA para el segundo jugador.


[Tienes que estar registrado y conectado para ver este vínculo]

Lo repito, es un estado beta, no esperen mucho, pero me siento orgulloso de que haber avanzado tanto, realmente en solo 1 mes y medio han habido progresos, no soy un genio como mis senseis Kaltorak y Amchacon, les estoy muy agradecidos por su incondicional apoyo y tutoria, es por eso que me siento motivado a seguir por aqui. Sigo camellando en esto, si señor afro afro 

PONG, mi primer jueguito hecho solito, en un estado ULTRABETA, pero algo es algo, todavia tiene que mejorarse muchas cosas, Colisiones, tamaños de formas, puntuaciones, anotaciones, eventos con mouse, implementar una IA, uso de textos, blitting, fliping, uso de doble buffer... en fin, poco a poco, pero ahi vamos entendiendo la cosa. SDL es una nota, y de paso voy entendiendo allegro, vamos bien vamos bien!!! proxima estacion, nerdolandia!!


Última edición por dato000 el Vie Jul 19, 2013 3:35 pm, editado 2 veces
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por amchacon Sáb Jul 13, 2013 9:57 pm

Ahora mismo estoy en el movil, mañana vuelvo a casa y comento.
amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por amchacon Lun Jul 15, 2013 4:23 am

Uf, hay mucha capuza de por medio (no te preocupes, todos lo hacemos Very Happy ).

Código:
            // Comprobando teclas de movimiento
            if(evento.key.keysym.sym == SDLK_w) // Si se oprime arriba
            {
                Direccion = 1;
            }
            if(evento.key.keysym.sym == SDLK_s) // Si se oprime abajo
            {
                Direccion = 2;
            }


            if(evento.key.keysym.sym == SDLK_UP) // Si se oprime derecha
            {
                Direccion = 3;
            }

            if(evento.key.keysym.sym == SDLK_DOWN) // Si se oprime izquierda
            {
                Direccion = 4;
            }

            //...

         // Comprobando direcciones de Jugadores con Pared
        if(Direccion == 1)
        {
            Vel_Jugador1 = -10;
        }

        if(Direccion == 2)
        {
            Vel_Jugador1 = 10;
        }

        if(Direccion == 3)
        {
            Vel_Jugador2 = -10;
        }

        if(Direccion == 4)
        {
            Vel_Jugador2 = 10;
        }
¿Para que necesitas dirreción? Ponlo directamente dentro del if:

Código:
if(evento.key.keysym.sym == SDLK_w) // Si se oprime arriba
{
      Vel_Jugador1 = -10;
}

Bajando un poco más abajo:

Código:
// Colisiones Pelota con Pared

if( pelota.y < 10 )
{
   Vel_PelotaY = 10;
}
if((pelota.y + pelota.h + Vel_PelotaY) >= tam_y)
{
   Vel_PelotaY = -10;
}
if( pelota.x < 10 )
{
   Vel_PelotaX = 10;
}
if((pelota.x + pelota.w + Vel_PelotaX) >= tam_x)
{
   Vel_PelotaX = -10;
}

Esto es incorrecto, la verdadera velocidadx y velocidady dependerá del angulo con el que impacte. No tiene sentido un rebote recto con muy poca inclinación.

No te puedo decir el algoritmo exacto (habría que hacer pruebas y pensarlo bien) pero casi seguro que es con senos/cosenos.

Código:
int numero = 0;
sprintf (Texto,"%d", numero);
PTexto = TTF_RenderText_Solid(Fuente, Texto, FgColor);

//Apply the images to the screen
apply_surface( 300, 100, PTexto, pantalla );

SDL_FreeSurface( PTexto );

Generando y borrando BITMAPS sobre la marcha Shocked . Quita lo de TTF_RenderText y ponlo en el main (después de iniciar ttf). Declara la variable numero también en el main.

Debería quedar así:
Código:

sprintf (Texto,"%d", numero);
apply_surface( 300, 100, PTexto, pantalla );

Código:
SDL_Flip(pantalla);

SDL_FillRect(pantalla, 0, SDL_MapRGB(pantalla->format, 0, 0, 0)); // pintando la pantalla
SDL_FillRect(pantalla, &jugador1, SDL_MapRGB(pantalla->format, 255, 255, 255)); // pintando el jugador1
SDL_FillRect(pantalla, &jugador2, SDL_MapRGB(pantalla->format, 255, 255, 255)); // pintando el jugador2
SDL_FillRect(pantalla, &pelota, SDL_MapRGB(pantalla->format, 255, 255, 255));   // pintando la pelota

SDL_Flip(pantalla);
SDL_Delay(10);

2 SDL_Flip? quita el primero, por otro lado tener 10 de DELAY es absurdo (implicaría 100 FPS por segundo y ningún monitor tiene tanto refresco como eso, dejalo 18-30).

dato000 escribió:PONG, mi primer jueguito hecho solito, en un estado ULTRABETA, pero algo es algo, todavia tiene que mejorarse muchas cosas, Colisiones, tamaños de formas, puntuaciones, anotaciones, eventos con mouse, implementar una IA, uso de textos, blitting, fliping, uso de doble buffer... en fin, poco a poco, pero ahi vamos entendiendo la cosa. SDL es una nota, y de paso voy entendiendo allegro, vamos bien vamos bien!!! proxima estacion, nerdolandia!!
Ya usas doble buffer:
Código:
SDL_SetVideoMode(tam_x, tam_y, profundidad_color,
                                           SDL_SWSURFACE|SDL_DOUBLEBUF);

//...

 SDL_Flip(pantalla);
amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Mar Jul 16, 2013 4:36 pm

Vale gracias por los datos, los tendre en cuenta aunque dejame decir dos cosas:

1) Lo de senos y cosenos lo entiendo, pero realmente no hay inclinacion en un pong, solo sube y baja - Izquierda - Derecha, asi que no hay ciencia en esto, no es como si fuera un juego como micromachines (como menciona el manual)

2) puse direcciones diferentes para que las barras se muevan independientemente de los demás objetos, de forma continua con solo presionar una vez, no me gusta que se mantenga presionado para mover la barra, ya que si se alza el dedo la barra queda estatica y le quita dinamica al juego, bueno, asi me gusta, luego trato de implementar IA y mouse asi que no es la gran cosa, lo hice para saber como funciona todo esto

maese seguire trabajando, gracias por los comentarios
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Jue Jul 18, 2013 4:41 pm

Bueno señores, les dejo un poco más del pong, puliendo y añadiendo según tus criticas, maese Amchacon, tenias razón en muchas cosas, claro que falta organizar codigo en funciones para hacerlo más practico, pero eso lo hare al final cuando tenga eventos por mouse y la IA listos para el juego.

De momento he mejorado bastante, se siente bien avanzar, ya he entendido muchisisisisisisismo de este tema, muy pero muy bueno,

Que cosas he mejorado, facil: decoración, textos y rediseños. Puse un sistema de puntuación bastante facil de poner pero que pues, era fundamental para el juego, el score.

Ya voy entendiendo como funciona el blit, más o menos.

[Tienes que estar registrado y conectado para ver este vínculo]

PONG CUASI-ALPHA:

Siento que estoy logrando una meta, casi me dan ganas de brincar en una pata y llorar de la dicha, ya se que es solo un jueguito basico, pero es mio!!!!!! XDDDD

Nuevamente hasta que no tenga bien avazando el proyecto no genero ejecutables para linux y windows.
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por amchacon Jue Jul 18, 2013 6:53 pm

No lo puedo probar porque no tengo las fuentes...

Eso si:
que falta organizar codigo en funciones para hacerlo más practico, pero eso lo hare al final cuando tenga eventos por mouse y la IA listos para el juego.

Este es el mayor defecto de tu código (tiene muchas sentencias repetidas así:


Código:
// Pelota VS Barra Jugador 1
if( ( (pelota.y+pelota.h) >= jugador1.y) &&
  pelota.y <= (jugador1.y+jugador1.h)  )
{
    if( (jugador1.x + jugador1.w) > pelota.x )
    {
        Vel_PelotaX = 20;
    }
}

// Pelota VS Barra Jugador 2
if( ( (pelota.y+pelota.h) >= jugador2.y) &&
  pelota.y <= (jugador2.y+jugador2.h)  )
{
    if(  (pelota.x+pelota.h) > jugador2.x )
    {
        Vel_PelotaX = -20;
    }
}



¡Suerte! Que ya terminas ^^
amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Jue Jul 18, 2013 7:13 pm

lo se lo se, aun no se muy bien como reutilizar codigo y cosas asi, eso va ligado a estructuras y pues no se como hacerlo digamos "en terminos practicos"

maldita sea las fuentes...

ok vale mira:

[Tienes que estar registrado y conectado para ver este vínculo]

Viejo ayudame a trabajar con la IA, no se como hacerlo, en esencia si, pero como algoritmo, no se me ocurre nada elegante, como puedo hacer que la barra se mueva pero sin que sea imposible de vencer?? debo añadir velocidad a la pelota pero en que direccion, X/Y o ambas?? o como lo trabajaria???

lo del mouse fue bastante facil, SDL es un regalo de los dioses la verdad Razz Razz 
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por amchacon Vie Jul 19, 2013 10:39 am

Mi opinión:  Juego muy rápido, las física no es muy convincente (si lo golpeas con un extremo de la barra, debería ir más rápido que golpeandolo desde el centro)... Soy un poco crítico pero aver Evil or Very Mad 

Y hablando de física, la pelota/barra van muy rápido Very Happy 

dato000 escribió:lo del mouse fue bastante facil, SDL es un regalo de los dioses la verdad Razz Razz 
SDL es un regalo de los dioses? Pues tienes que probar SFML (te hace casi todo y sin necesidad de instalar 500 expansiones extras Very Happy ).

dato000 escribió:Viejo ayudame a trabajar con la IA, no se como hacerlo, en esencia si, pero como algoritmo, no se me ocurre nada elegante, como puedo hacer que la barra se mueva pero sin que sea imposible de vencer?? debo añadir velocidad a la pelota pero en que direccion, X/Y o ambas?? o como lo trabajaria???
Mira esta formula matemática:

Y = (VelY*VelX/(TamX-BolaX)+BolaY)


Con esta fórmula puedes optener en que coordenada Y llegará la pelota (VelY, VelX corresponden a la velocidad de la pelota, Tamx corresponde al tamaño de la pantalla/campo).

Una vez que tienes la posición donde va a caer, tienes que desplazar la barra a esa posición, pero no la muevas al instante, en cada iteración se vaya moviendo una determinada cantidad (que será su velocidad). Si la barra está en un extremo y le lanzas la pelota al otro extremo no le dará tiempo a llegar y le marcaras Wink

PD: Te dije que el pong era complicado ^^
amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Vie Jul 19, 2013 1:28 pm

No conozco SFML... sera así de bueno, bueno, supongo que ya tengo otro para aprender, añadiendo a la lista junto con SDL, Allegro, OpenGL, Android, ahora, SFML

Vale bajare la velocidad, pero lo de la fisica, esta un poco por encima de mis posibilidades, para ser un primer juego, es aceptable, hey no le pidas tanto a un novato que experimenta las posibilidades XD

Ven puedes decir algo sobre el movimiento de la barra 2, para que sea automatico que recomiendas, un movimiento aleatorio o que intente seguir la pelota (cuadrada Smile) supongo que teniendo esa parte lista comenzare a organizar mejor el codigo.
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Vie Jul 19, 2013 3:42 pm

Señores con mucho orgullo he pulido un poco (solo un poco, realmente no se como trabajar bien tanta referencia para funciones)  el codigo y ahora esta mucho mejor de verdad.

Señores la IA y la fisica realmente la estudiare en los siguientes juegos y cuando entienda bien todo esto actualizare mi pong con imagenes y toda la onda, pero de momento considero este el primer juego que he realizado esta hecho, aceptablemente, he puesto bastante empeño, y creo que puedo avanzar.

Pequeñas correcciones

1. Añadi una libreria de apoyo para cargar todos los datos, asi tambien los que inician SDL
2. El jugador 2 se mueve automaticamente rebotando con las paredes
3. Añadi una pausa al juego cuando alguno de los jugadores hace un punto, y se reinicia la posicion de la pelotita para que inicie una nueva ronda desde la barra vertical
4. Reduci un poco la velocidad para que se vea más agradable el movimiento, aunque aun no se hacer que digamos, se vea fluido como en los pongs online
5. Cambie el tamaño del tablero, asi es más comodo jugar, aunque uno se aburre rapidamente de este "juego", pero bueno XD

[Tienes que estar registrado y conectado para ver este vínculo]

src: [Tienes que estar registrado y conectado para ver este vínculo]

Ayyy señores este es mi juego para el reto, lastima que kaltorak desaparecio y nadie más siguio por aqui, tenemos que realizar otra jornada de reclutamiento, a lo mejor alguien se anima luego, si señor, yo si sigo, tengo toda una vida para hacerme un juego decente tipo SNES y luego un batman arkham asylum XD
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por amchacon Sáb Jul 20, 2013 8:52 pm

Pues sí, está bastaaaante mejor Very Happy 

Algunas críticas:

Código:
retorno = inicio();
if(retorno == 1)
{
    return 0;
}

Los mensajes de error se simbolizan devolviendo un número distinto de cero (1,2,3,4...). El cero es para simbolizar una salida exitosa.

dato000 escribió:4. Reduci un poco la velocidad para que se vea más agradable el movimiento, aunque aun no se hacer que digamos, se vea fluido como en los pongs online
En vez de mover de 20 en 20, mueve de 5 en 5 o de 2 en 2 Very Happy 

Para compensar la velocidad aumenta el delay

amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por kaltorak Lun Jul 22, 2013 1:29 am

Muy chulo el pong Dato000 hay que pulirlo un poco pero esta genial.

Como llevas el Snake??

kaltorak
kaltorak
Admin

Mensajes : 178
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Lun Jul 22, 2013 3:56 pm

amchacon escribió:Pues sí, está bastaaaante mejor Very Happy 

Algunas críticas:

Código:
retorno = inicio();
if(retorno == 1)
{
    return 0;
}

Los mensajes de error se simbolizan devolviendo un número distinto de cero (1,2,3,4...). El cero es para simbolizar una salida exitosa.

dato000 escribió:4. Reduci un poco la velocidad para que se vea más agradable el movimiento, aunque aun no se hacer que digamos, se vea fluido como en los pongs online
En vez de mover de 20 en 20, mueve de 5 en 5 o de 2 en 2 Very Happy 

Para compensar la velocidad aumenta el delay


What??? me quedo muy lento así, no seria que para que el delay compensara seria bajarlo, como decias el fps pues se jode no?? aún no se muy bien como hacer movimientos suavizado, pero va poco a poco


kaltorak escribió:Muy chulo el pong Dato000 hay que pulirlo un poco pero esta genial.

Como llevas el Snake??


No tan bien, no se como carajos puedo implementar la cola de la serpiente, mirando el código de amchacon simplemente me quedo perdido, pues usa clases y eso no lo manejo muy bien (triste cierto) he tratado de hacerlo como el sensei paueky con listas...pero maldita sea no me sale no me sale, estoy seguro que con un poco más de tiempo y dedicación podre originar uno mejor que el que digamos, tengo en mi celular, un asco en serio, ese si que esta muy mal hecho, estoy seguro que podre hacerlo mejor.

Pero me jode el saber como crear una cola que siga la cabeza (de hecho, me conformo con saber como crear una cola que se mueva, asi sea un movimeinto de izquierda a derecha, eso sería bastante para mi) pero bueno, lo realizare con listas, que generen nuevos cuadros sdl_rect...

no creo que lo tenga para julio, he estado ocupado con las cosas de la universidad, pero yo sigo trabajando.

PD: DONDE ANDABAS K!?!?!?!??! QUE TE PASO VIEJO!!!!
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por amchacon Lun Jul 22, 2013 5:28 pm

dato000 escribió:What??? me quedo muy lento así, no seria que para que el delay compensara seria bajarlo, como decias el fps pues se jode no?? aún no se muy bien como hacer movimientos suavizado, pero va poco a poco
Bajar velocidad y subir delay.

La idea esque se vea el desplazamiento del objeto y no vaya "a saltos".

dato000 escribió:
kaltorak escribió:Muy chulo el pong Dato000 hay que pulirlo un poco pero esta genial.

Como llevas el Snake??


No tan bien, no se como carajos puedo implementar la cola de la serpiente, mirando el código de amchacon simplemente me quedo perdido, pues usa clases y eso no lo manejo muy bien (triste cierto) he tratado de hacerlo como el sensei paueky con listas...pero maldita sea no me sale no me sale, estoy seguro que con un poco más de tiempo y dedicación podre originar uno mejor que el que digamos, tengo en mi celular, un asco en serio, ese si que esta muy mal hecho, estoy seguro que podre hacerlo mejor.

Pero me jode el saber como crear una cola que siga la cabeza (de hecho, me conformo con saber como crear una cola que se mueva, asi sea un movimeinto de izquierda a derecha, eso sería bastante para mi) pero bueno, lo realizare con listas, que generen nuevos cuadros sdl_rect...

no creo que lo tenga para julio, he estado ocupado con las cosas de la universidad, pero yo sigo trabajando.

PD: DONDE ANDABAS K!?!?!?!??! QUE TE PASO VIEJO!!!!
¿Quieres un snake sencillo? Aquí tienes uno que no está orientado a objetos:

Código:
#include <allegro.h>

#define TEC_ARRIBA_1 KEY_W
#define TEC_ABAJO_1  KEY_S
#define TEC_IZQDA_1  KEY_A
#define TEC_DCHA_1   KEY_D

const int RESOLUCIONX = 640;
const int RESOLUCIONY = 480;
const int POSICIONINICIALX = RESOLUCIONX/2;
const int POSICIONINICIALY = RESOLUCIONY/2;
const int MOVIMIENTOX = 1;
const int MOVIMIENTOY = 0;
const int LONGITUDINICIAL = 50;
const int COLOR1 = 12;

int DELAY = 8;

const int CRECIMIENTO = 50;
const int COMIDA = 14;
const int TAMANYO_COMIDA = 10;

// Las posiciones aquí van por vectores, pues es importante que tenga todas las posiciones guardadas para irlas eliminando conofrme crezca la serpiente

struct Vehiculo
{
       int X[10000],Y[10000],MovimientoX,MovimientoY,Longitud;
};

void init();
void deinit();

int main() {
 init();
 
Vehiculo Jugador1;
 
int Color;
 int Comida = 0;
 
char tecla;
 
srand(time(0));
 
int Comida_POSICIONX = rand() % RESOLUCIONX+1;
 int Comida_POSICIONY = rand() % RESOLUCIONY+1;
 
Jugador1.Longitud = LONGITUDINICIAL;
 
for (int i = 0; i < LONGITUDINICIAL; i++)
 {
 Jugador1.X[i] = POSICIONINICIALX-i;
 Jugador1.Y[i] = POSICIONINICIALY-i;
    }
 
Jugador1.MovimientoX = MOVIMIENTOX;
 Jugador1.MovimientoY = MOVIMIENTOY;
 Jugador1.Longitud = LONGITUDINICIAL;
 

circle(screen,Comida_POSICIONX,Comida_POSICIONY,TAMANYO_COMIDA,palette_color[COMIDA]);
 


while (!key[KEY_ESC])
   {
          // COLISIONES
          
        Color = getpixel(screen,Jugador1.X[0]+Jugador1.MovimientoX, Jugador1.Y[0]+Jugador1.MovimientoY);
 
if (Color != 0 && Color != palette_color[COMIDA] && Color != palette_color[15])
        {
                  textout(screen,font,"Has perdido",100,100,palette_color[10]);
                  readkey();
                  readkey();
                  readkey();
                  break;
        }
        
        // Comprobar Comida
        
        if (Color == palette_color[COMIDA])
        {
           Comida++;
           Jugador1.Longitud += CRECIMIENTO;
          
          circle(screen,Comida_POSICIONX,Comida_POSICIONY,TAMANYO_COMIDA,0);
          
          srand(time(0));
          
          Comida_POSICIONX = rand() % RESOLUCIONX+1;
           Comida_POSICIONY = rand() % RESOLUCIONY+1;
          
          circle(screen,Comida_POSICIONX,Comida_POSICIONY,TAMANYO_COMIDA,palette_color[COMIDA]);
        }
        
        // MOVER
        
        // Borrar Rastros
        
        putpixel(screen, Jugador1.X[Jugador1.Longitud-1], Jugador1.Y[Jugador1.Longitud-1],0);
        
        
        // Recalculamos posiciones
        
        for (int i = Jugador1.Longitud; i > 0;i--)
        {
            Jugador1.X[i] = Jugador1.X[i-1];
            Jugador1.Y[i] = Jugador1.Y[i-1];
        }

         // Movemos
        
       Jugador1.X[0] += Jugador1.MovimientoX;
        Jugador1.Y[0] += Jugador1.MovimientoY;
        
        
        putpixel (screen, Jugador1.X[0], Jugador1.Y[0],palette_color[COLOR1]);
        
        
        
        // IGUAL QUE EN EL DE LAS MOTOS (^^)
        
        if ( keypressed() )
          {
            tecla = readkey() >>8;
           
             switch(tecla)
              {
                            case TEC_ARRIBA_1:
                                               if(Jugador1.MovimientoY == 0) // Nos vamos arriba, siempre que no estuvieramos yendo arriba o abajo
                                                {
                                                       Jugador1.MovimientoX =  0; Jugador1.MovimientoY = -1;
                                                }
                                                break;
                            case TEC_ABAJO_1:
                                              if(Jugador1.MovimientoY == 0) // Nos vamos abajo, siempre que no estuvieramos yendo arriba o abajo
                                               {
                                                       Jugador1.MovimientoX =  0; Jugador1.MovimientoY =  1;
                                               }
                                               break;
                            case TEC_IZQDA_1:
                                              if(Jugador1.MovimientoX == 0) // Proceso identico
                                               {
                                                       Jugador1.MovimientoX = -1; Jugador1.MovimientoY =  0;
                                               }
                                               break;
                            case TEC_DCHA_1:
                                             if(Jugador1.MovimientoX == 0)
                                               {
                                                      Jugador1.MovimientoX =  1; Jugador1.MovimientoY =  0;
                                               }
                                              break;
                                              
                             case KEY_J:
                                              if (DELAY != 1)
                                              DELAY--;
                                              break;
        
           }
        }
        
        textprintf(screen,font,5,5,palette_color[15],"Longitud: %d",Jugador1.Longitud);
        textprintf(screen,font,5,15,palette_color[15],"Comida: %d",Comida);
        textprintf(screen,font,5,25,palette_color[15],"Delay: %d",DELAY);
        rest (DELAY);
   }
    
    

deinit();
 return 0;
}
END_OF_MAIN()

void init() {
 int depth, res;
 allegro_init();
 depth = desktop_color_depth();
 if (depth == 0) depth = 32;
 set_color_depth(depth);
 res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, RESOLUCIONX, RESOLUCIONY, 0, 0);
 if (res != 0) {
 allegro_message(allegro_error);
 exit(-1);
 }

 install_timer();
 install_keyboard();
 install_mouse();
 /* add other initializations here */
}

void deinit() {
 clear_keybuf();
 /* add other deinitializations here */
}
amchacon
amchacon
Admin

Mensajes : 171
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por kaltorak Mar Jul 23, 2013 8:03 am

Nada que en el curro me han metido más horas este mes y por eso he estado fuera pero ya he vuelto así que ahora a darle caña.

Animo que seguro que eres capaz de hacer el Snake.


kaltorak
kaltorak
Admin

Mensajes : 178
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por dato000 Dom Jul 28, 2013 1:55 pm

Pues por estar trabajando en otras cosas no he podido iniciar el proyecto para hacer mi snake, tengo pensado hacer algunas cosas bien buenas, sin embargo aun no entiendo las colas, jejeje, o mejor dicho, no he tenido tiempo para entenderlo.

Intente instalar allegro pero me dio problemas, y no pude compilar el codigo que me dejaste amchacon, sin embargo aprecio el detalle y vio una que otra cosa, iniciar todas las funciones aparte por defecto para la libreria es muy buena idea, ya lo tenia pensado, pero eso me dio la claridad para hacerlo.

En fin, en unos dias veremos si hay avances, como van uds??
dato000
dato000
Admin

Mensajes : 161
Fecha de inscripción : 30/05/2013

Volver arriba Ir abajo

Mi juego para el reto: PONG --Estado: ALPHA n00b!!!-- Empty Re: Mi juego para el reto: PONG --Estado: ALPHA n00b!!!--

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.