no te juzgo siento si te he dado esa impresión
ya esta modificado tu nick en el post principal por nanodiLL0.
ya esta modificado tu nick en el post principal por nanodiLL0.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
//Juego Snake realizado por kaltorak para el manual Snake en SDL/C++
#include <cstdlib>
#include <vector>
#include <time.h>
#include <SDL/SDL.h>
//Prototipo de la funcion Colision.
int Colision(SDL_Rect,SDL_Rect);
//Prototipo de la funcion Iniciar.
void Iniciar(void);
/*definimos la direcciones que pude tomas la seriente con esto conseguimos que el codigo sea mucho mas
mas comprensible*/
#define Arriba 1
#define Derecha 2
#define Abajo 3
#define Izquierda 4
/*Declaramos e inicializamos como constantes el ancho, el alto y la profundidad de color
de la ventana principal.*/
const int ResolucionX = 640;
const int ResolucionY = 480;
const int PColor = 32;
const int DELAY = 85;
//Declaramos e inicializamos la varible LongitudSerpiente la cual contendra el tamaño de la serpiente.
int LongitudSerpiente = 0;
/*Declaramos e inicializamos la variable Direccion que contendra la direccion en la que se esta
moviendo la Serpiente.*/
int Direccion = 0;
//Declaramos e inicializamos la variable control para controlar que la manzana no coincida con al cola.
int Control = 0;
/*Declaramos la variable memoria del tipoc SDL_Rect donde almacenaremos la posion anterior anterior
de la cabeza de la serpiente para poder mover la cola*/
SDL_Rect Ultimo;
//Declaramos e inicializamos la variable Puntos que contendra los puntos del juego.
int Puntos = 0;
//Delcaramos e inicializamos la variable Titulo que contendra el titulo de la ventana y la puntuacion.
char Titulo[255];
using namespace std;
/*Declaramos la estructura Cuadro que sera la encargada de almacenar la posicion
y el tamaño de cada una de las partes que formaran el cuerpo de la Serpiente*/
struct Cuadro
{
SDL_Rect Posicion;
Cuadro(){Posicion.x = 0;Posicion.y = 0;Posicion.w = 20;Posicion.h = 20;}
}Manzana;
//Declaramos el Vector Serpiente del tipo Cuadro.
vector <Cuadro> Serpiente;
int main ( int argc, char** argv )
{
srand(time(NULL));
//Inicializamos el modo de video de las SDL y comprobamos que se inicialize bien.
if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "Imposible iniciar la libreria SDL: %s\n", SDL_GetError() );
return 1;
}
//Itroducimos SDL_Quit en atexit para que se inice al finalizar el programa.
atexit(SDL_Quit);
/*Creamos la Surface principal del juego, la que se va a mostrar en pantalla.
y comprobamos que se inicie correctamente.*/
SDL_Surface* PantallaV = SDL_SetVideoMode(ResolucionX, ResolucionY, PColor,SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( !PantallaV )
{
printf("Imposible crear la ventana Principal: %s\n", SDL_GetError());
return 1;
}
//Llamamos a la funcion Iniciar par poner todos los valores a cero.
Iniciar();
// program main loop
bool done = false;
while (!done)
{
// message processing loop
SDL_Event event;
while (SDL_PollEvent(&event))
{
// check for messages
switch (event.type)
{
// exit if the window is closed
case SDL_QUIT:
done = true;
break;
// check for keypresses
case SDL_KEYDOWN:
{
// exit if ESCAPE is pressed
if (event.key.keysym.sym == SDLK_ESCAPE)
{
done = true;
break;
}
if(event.key.keysym.sym == SDLK_UP && Direccion != Abajo)
{
Direccion = Arriba;
break;
}
if(event.key.keysym.sym == SDLK_DOWN && Direccion != Arriba)
{
Direccion = Abajo;
break;
}
if(event.key.keysym.sym == SDLK_LEFT && Direccion != Derecha)
{
Direccion = Izquierda;
break;
}
if(event.key.keysym.sym == SDLK_RIGHT && Direccion != Izquierda)
{
Direccion = Derecha;
break;
}
}
} // end switch
} // end of message processing
// DRAWING STARTS HERE
if(Direccion != 0)
{
//Almacenamos la posicion del ultimo de los elementos que forman la cola en la variable Ultimo.
Ultimo.x = Serpiente[LongitudSerpiente].Posicion.x;
Ultimo.y = Serpiente[LongitudSerpiente].Posicion.y;
//Movemos la cola de la serpiente.
for(int I = LongitudSerpiente; I >= 1; I--)
{
Serpiente[I].Posicion.x = Serpiente[I-1].Posicion.x;
Serpiente[I].Posicion.y = Serpiente[I-1].Posicion.y;
}
}
if(Direccion == Arriba)
{
Serpiente[0].Posicion.y -= Serpiente[0].Posicion.h;
}
else if(Direccion == Abajo)
{
Serpiente[0].Posicion.y += Serpiente[0].Posicion.h;
}
else if(Direccion == Derecha)
{
Serpiente[0].Posicion.x += Serpiente[0].Posicion.w;
}
else if(Direccion == Izquierda)
{
Serpiente[0].Posicion.x -= Serpiente[0].Posicion.w;
}
//Comprobamos la colision de la serpiente con el borde.
if(((Serpiente[0].Posicion.x + Serpiente[0].Posicion.w) > ResolucionX)
|| (Serpiente[0].Posicion.x < 0)
|| ((Serpiente[0].Posicion.y + Serpiente[0].Posicion.h) > ResolucionY)
|| (Serpiente[0].Posicion.y < 0))
{
Iniciar();
}
//Comprobamos la colision de la serpiente con la cola.
for(int I = 1; I <= LongitudSerpiente; I++)
{
if(Colision(Serpiente[0].Posicion,Serpiente[I].Posicion))
{
Iniciar();
}
}
//Comprobamos la colision de la serpiente con la Manzana.
if(Colision(Serpiente[0].Posicion,Manzana.Posicion))
{
LongitudSerpiente++;
Puntos += 10;
Serpiente.push_back(Cuadro());
Serpiente[LongitudSerpiente].Posicion.x = Ultimo.x;
Serpiente[LongitudSerpiente].Posicion.y = Ultimo.y;
//Metemos en la varible Titulo el titulo de la ventana seguido de la puntuacion del juego.
sprintf(Titulo,"Snake -- Puntos: %d",Puntos);
/*Posicionamos denuevo la manazana en pantalla y comprobamos que la nueva ubicacion
no este ocupada por la cola de la Serpiente.*/
do
{
Manzana.Posicion.x = ((rand() % ((ResolucionX-Manzana.Posicion.w)/Manzana.Posicion.w))*Manzana.Posicion.w);
Manzana.Posicion.y = ((rand() % ((ResolucionY-Manzana.Posicion.h)/Manzana.Posicion.h))*Manzana.Posicion.h);
Control = 0;
for(int I = 1; I <= LongitudSerpiente; I++)
{
if(Colision(Manzana.Posicion,Serpiente[I].Posicion))
{
Control = 1;
I = LongitudSerpiente;
}
}
}
while(Control == 1);
}
//Borramos la surface principal
SDL_FillRect(PantallaV, 0, SDL_MapRGB(PantallaV->format, 0, 0, 0));
//Pintamos la serpiente en la Surface principal
for(int I = 0; I <= LongitudSerpiente; I++)
{
SDL_FillRect(PantallaV,&Serpiente[I].Posicion,SDL_MapRGB(PantallaV->format, 255, 255, 255));
}
//Pintamos la manzana en la Surface principal
SDL_FillRect(PantallaV,&Manzana.Posicion,SDL_MapRGB(PantallaV->format, 0, 255, 0));
//Cambiamos el titulo de la ventana por Snake.
SDL_WM_SetCaption (Titulo, NULL);
//Mostramos la Surface principal en pantalla.
SDL_Flip(PantallaV);
SDL_Delay(DELAY);
} // end main loop
return 0;
}
//Funcion que compruba las colisiones entre los elementos de juego.
int Colision(SDL_Rect H,SDL_Rect M)
{
if (((H.x + H.w) > M.x) && ((H.y + H.h) > M.y) &&
((M.x + M.w) > H.x) && ((M.y + M.h) > H.y))
{
return 1;
}
else
{
return 0;
}
}
//Funcion que reinicia el juego cuando la serpiente colisiona con ella misma o el borde.
void Iniciar(void)
{
/*Ponemos el valor de la variable longitudSerpiente a 0 para que la serpiente solo este formada por
la cabeza.*/
LongitudSerpiente = 0;
//Ponemos el valor de la variable Direccion a 0 para que la serpiente aparezca parada al comenzar el juego.
Direccion = 0;
//Ponemos el valor de la variable Puntos a 0 para reiniciar el marcador de puntos.
Puntos = 0;
//Metemos en la varible Titulo el titulo de la ventana seguido de la puntuacion del juego.
sprintf(Titulo,"Snake -- Puntos: %d",Puntos);
//Borramos todos los miembros que forman el vector Serpiente
Serpiente.clear();
//Añadimos un miembro en el vector serpiente que contendra la cabeza de la serpiente.
Serpiente.push_back(Cuadro());
//Posicionamos aleatoriamente la manzana en la pantalla.
Manzana.Posicion.x = ((rand() % ((ResolucionX-Manzana.Posicion.w)/Manzana.Posicion.w))*Manzana.Posicion.w);
Manzana.Posicion.y = ((rand() % ((ResolucionY-Manzana.Posicion.h)/Manzana.Posicion.h))*Manzana.Posicion.h);
//Posicionamos la cabeza de la serpiente en el centro de la pantalla.
Serpiente[0].Posicion.x = (((ResolucionX/Serpiente[0].Posicion.w)/2)*Serpiente[0].Posicion.w);
Serpiente[0].Posicion.y = (((ResolucionY/Serpiente[0].Posicion.h)/2)*Serpiente[0].Posicion.h);
}
#include <cstdlib>
#include <vector>
#include <time.h>
#include <SDL/SDL.h>
int Colision(SDL_Rect,SDL_Rect);
void Iniciar(void);
#define Arriba 1
#define Derecha 2
#define Abajo 3
#define Izquierda 4
const int ResolucionX = 640;
const int ResolucionY = 480;
const int PColor = 32;
const int DELAY = 85;
int LongitudSerpiente = 0;
int Direccion = 0;
int Control = 0;
SDL_Rect Ultimo;
int Puntos = 0;
char Titulo[255];
using namespace std;
struct Cuadro
{
SDL_Rect Posicion;
Cuadro(){Posicion.x = 0;Posicion.y = 0;Posicion.w = 20;Posicion.h = 20;}
}Manzana;
vector <Cuadro> Serpiente;
int main ( int argc, char** argv )
{
srand(time(NULL));
if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "Imposible iniciar la libreria SDL: %s\n", SDL_GetError() );
return 1;
}
atexit(SDL_Quit);
SDL_Surface* PantallaV = SDL_SetVideoMode(ResolucionX, ResolucionY,PColor,SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( !PantallaV )
{
printf("Imposible crear la ventana Principal: %s\n", SDL_GetError());
return 1;
}
Iniciar();
void Iniciar(void)
{
/*Ponemos el valor de la variable longitudSerpiente a 0 para que la serpiente solo este formada por
la cabeza.*/
LongitudSerpiente = 0;
/*Ponemos el valor de la variable Direccion a 0 para que la serpiente aparezca parada al comenzar el juego.*/
Direccion = 0;
//Ponemos el valor de la variable Puntos a 0 para reiniciar el marcador de puntos.
Puntos = 0;
//Metemos en la variable Titulo el titulo de la ventana seguido de la puntuación del juego.
sprintf(Titulo,"Snake -- Puntos: %d",Puntos);
//Borramos todos los miembros que forman el vector Serpiente
Serpiente.clear();
//Añadimos un miembro en el vector serpiente que contendrá la cabeza de la serpiente.
Serpiente.push_back(Cuadro());
//Posicionamos aleatoriamente la manzana en la pantalla.
Manzana.Posicion.x = ((rand() % ((ResolucionX-Manzana.Posicion.w)/Manzana.Posicion.w))*Manzana.Posicion.w);
Manzana.Posicion.y = ((rand() % ((ResolucionY-Manzana.Posicion.h)/Manzana.Posicion.h))*Manzana.Posicion.h);
//Posicionamos la cabeza de la serpiente en el centro de la pantalla.
Serpiente[0].Posicion.x = (((ResolucionX/Serpiente[0].Posicion.w)/2)*Serpiente[0].Posicion.w);
Serpiente[0].Posicion.y = (((ResolucionY/Serpiente[0].Posicion.h)/2)*Serpiente[0].Posicion.h);
}
Manzana.Posicion.x = ((rand() % ((ResolucionX-Manzana.Posicion.w)/Manzana.Posicion.w))*Manzana.Posicion.w);
Manzana.Posicion.y = ((rand() % ((ResolucionY-Manzana.Posicion.h)/Manzana.Posicion.h))*Manzana.Posicion.h);
(ResolucionX-Manzana.Posicion.w)
(ResolucionY-Manzana.Posicion.h)
(ResolucionX-Manzana.Posicion.w)/Manzana.Posicion.w)
(ResolucionY-Manzana.Posicion.h)/Manzana.Posicion.h)
Manzana.Posicion.x = ((rand() % ((ResolucionX-Manzana.Posicion.w)/Manzana.Posicion.w))*Manzana.Posicion.w);
Manzana.Posicion.y = ((rand() % ((ResolucionY-Manzana.Posicion.h)/Manzana.Posicion.h))*Manzana.Posicion.h);
Serpiente[0].Posicion.x = (((ResolucionX/Serpiente[0].Posicion.w)/2)*Serpiente[0].Posicion.w);
Serpiente[0].Posicion.y = (((ResolucionY/Serpiente[0].Posicion.h)/2)*Serpiente[0].Posicion.h);
bool done = false;
while (!done)
{
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_QUIT:
done = true;
break;
case SDL_KEYDOWN:
{
if (event.key.keysym.sym == SDLK_ESCAPE)
{
done = true;
break;
}
if(event.key.keysym.sym == SDLK_UP && Direccion != Abajo)
{
Direccion = Arriba;
break;
}
if(event.key.keysym.sym == SDLK_DOWN && Direccion != Arriba)
{
Direccion = Abajo;
break;
}
if(event.key.keysym.sym == SDLK_LEFT && Direccion != Derecha)
{
Direccion = Izquierda;
break;
}
if(event.key.keysym.sym == SDLK_RIGHT && Direccion != Izquierda)
{
Direccion = Derecha;
break;
}
}
}
}
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_QUIT:
done = true;
break;
case SDL_KEYDOWN:
{
if (event.key.keysym.sym == SDLK_ESCAPE)
{
done = true;
break;
}
if(event.key.keysym.sym == SDLK_UP && Direccion != Abajo)
{
Direccion = Arriba;
break;
}
if(event.key.keysym.sym == SDLK_DOWN && Direccion != Arriba)
{
Direccion = Abajo;
break;
}
if(event.key.keysym.sym == SDLK_LEFT && Direccion != Derecha)
{
Direccion = Izquierda;
break;
}
if(event.key.keysym.sym == SDLK_RIGHT && Direccion != Izquierda)
{
Direccion = Derecha;
break;
}
}
}
}
if(Direccion != 0)
{
Ultimo.x = Serpiente[LongitudSerpiente].Posicion.x;
Ultimo.y = Serpiente[LongitudSerpiente].Posicion.y;
//Movemos la cola de la serpiente.
for(int I = LongitudSerpiente; I >= 1; I--)
{
Serpiente[I].Posicion.x = Serpiente[I-1].Posicion.x;
Serpiente[I].Posicion.y = Serpiente[I-1].Posicion.y;
}
}
if(Direccion == Arriba)
{
Serpiente[0].Posicion.y -= Serpiente[0].Posicion.h;
}
else if(Direccion == Abajo)
{
Serpiente[0].Posicion.y += Serpiente[0].Posicion.h;
}
else if(Direccion == Derecha)
{
Serpiente[0].Posicion.x += Serpiente[0].Posicion.w;
}
else if(Direccion == Izquierda)
{
Serpiente[0].Posicion.x -= Serpiente[0].Posicion.w;
}
if(Direccion == Arriba)
{
Serpiente[0].Posicion.y -= Serpiente[0].Posicion.h;
}
else if(Direccion == Abajo)
{
Serpiente[0].Posicion.y += Serpiente[0].Posicion.h;
}
else if(Direccion == Derecha)
{
Serpiente[0].Posicion.x += Serpiente[0].Posicion.w;
}
else if(Direccion == Izquierda)
{
Serpiente[0].Posicion.x -= Serpiente[0].Posicion.w;
}
if(((Serpiente[0].Posicion.x + Serpiente[0].Posicion.w) > ResolucionX)
|| (Serpiente[0].Posicion.x < 0)
|| ((Serpiente[0].Posicion.y + Serpiente[0].Posicion.h) > ResolucionY)
|| (Serpiente[0].Posicion.y < 0))
{
Iniciar();
}
int Colision(SDL_Rect H,SDL_Rect M)
{
if (((H.x + H.w) > M.x) && ((H.y + H.h) > M.y) &&
((M.x + M.w) > H.x) && ((M.y + M.h) > H.y))
{
return 1;
}
else
{
return 0;
}
}
//Comprobamos la colision de la serpiente con la cola.
for(int I = 1; I <= LongitudSerpiente; I++)
{
if(Colision(Serpiente[0].Posicion,Serpiente[I].Posicion))
{
Iniciar();
}
}
if(Colision(Serpiente[0].Posicion,Manzana.Posicion))
{
LongitudSerpiente++;
Puntos += 10;
Serpiente.push_back(Cuadro());
Serpiente[LongitudSerpiente].Posicion.x = Ultimo.x;
Serpiente[LongitudSerpiente].Posicion.y = Ultimo.y;
sprintf(Titulo,"Snake -- Puntos: %d",Puntos);
do {
Manzana.Posicion.x = ((rand() % ((ResolucionX-Manzana.Posicion.w)/Manzana.Posicion.w))*Manzana.Posicion.w);
Manzana.Posicion.y = ((rand() % ((ResolucionY-Manzana.Posicion.h)/Manzana.Posicion.h))*Manzana.Posicion.h);
Control = 0;
for(int I = 1; I <= LongitudSerpiente; I++)
{
if(Colision(Manzana.Posicion,Serpiente[I].Posicion))
{
Control = 1;
I = LongitudSerpiente;
}
}
}
while(Control == 1);
}
SDL_FillRect(PantallaV, 0, SDL_MapRGB(PantallaV->format, 0, 0, 0));
for(int I = 0; I <= LongitudSerpiente; I++)
{
SDL_FillRect(PantallaV,&Serpiente[I].Posicion,SDL_MapRGB(PantallaV->format, 255, 255, 255));
}
SDL_FillRect(PantallaV,&Manzana.Posicion,SDL_MapRGB(PantallaV->format, 0, 255, 0));
SDL_WM_SetCaption (Titulo, NULL);
SDL_Flip(PantallaV);
SDL_Delay(DELAY);
}
return 0;
}
class Hola
{
public static void main(String args[])
{
System.out.println("Hola Mundo");
}
}
Cita de: amchacon en 28 Julio 2013, 10:44 AM
Eso no es cierto, hoy en día existen cifrados muy potentes que están al alcanze de cualquiera. Por ejemplo, el AES256 que usa Estados Unidos para sus documentos top-secret se puede encontrar en cualquier copia de Winrar.
Cita de: Stakewinner00 en 28 Julio 2013, 10:12 AM
kaltorak, lo de criptografía no tiene por que tener relación con ingeniería inversa. Puedes crear un programa que cifre un texto y listo. De todas formas creo que estaría bien hacer retos de temas diversos.
Si los retos eran de juegos pues nada, ya intentare participar en alguno cuando tenga tiempo
Saludos.
Cita de: kaltorak en 28 Julio 2013, 07:36 AM
Se agradece mucho la propuesta aun que Retrodev se formó principalmente para el desarrollo de videojuegos, podríamos mirar otras cosas.
Cita de: SrCooper en 27 Julio 2013, 22:22 PM
Una pregunta, cuando pones hechos en mappy te refieres a algo similar a lo que yo he hecho con Snake (crear una serie de caracteres y leerlos con una funcion) o te refieres a alguna libreria en concreto.
Cita de: SrCooper en 27 Julio 2013, 21:55 PM
Muchas gracias, me gustaria que me aclarases todos los errores cuando vuelva y tenga mas tiempo, porque la verdad es que hay algunos que se cuales son pero no se como arreglarlos.
La verdad es que veo mucho futuro por este grupo, me preguntaba si vamos a hacer algun proyecto entre todos, porque veo buenos juegos por aqui
Cita de: Stakewinner00 en 28 Julio 2013, 01:06 AM
Os dejo una idea para más retos de programación.
Puesto que esta demostrado que los gobiernos nos espían podríamos hacer un reto de criptografia para fomentarla y para que surgieran más ideas y de ese modo mejorar la libertad. Esta idea se la propuse al que creo otros retos muy recientes pero como parece que este grupo esta bastante animado...
Aquí lo dejo.