1º Reto de Retrodev

Iniciado por kaltorak, 18 Junio 2013, 14:53 PM

0 Miembros y 1 Visitante están viendo este tema.

kaltorak

Hola a todos.

Aquí tenemos el Primer reto del Grupo de programación retrodev.

Mientras decidimos que juego va a ser el siguiente que realicemos, os propongo este reto el cual nos servirá para no perder el interés en el proyecto, también nos servirá para pulir un poco más nuestras actitudes y que los programadores noveles practiquen con la librería SDL.

Reto:

Juego de la Serpiente.



Participantes:

Apolo.
Dato000.
Ferreter17.
SrCooper.
BlackMaster.
Puntoinfinito.
Kaltorak.


Normas del Reto:

1-Todo el que quiera participar en el reto tiene que enviar un privado apuntándose o postear su inscripción en este post.

2-Una vez finalizado el tiempo de inscripción se dispondrá de 15 días para subir una versión Alpha del juego y luego 15 días más para subir la versión definitiva de dicho juego.

3-se puede usar cualquier lenguaje de programación (Pero primara el uso de C/C++ y la librería SDL, pues son los que usaremos en los sucesivos proyectos).

4-Se podrán usar cualquier tipo de gráficos y sonidos, no hay por qué ceñirse a los originales del juego.

5-Se puede incluir cualquier mejora en la mecánica del juego que consideremos oportuna.

6-Se debe compilar tanto para Windows como para Linux.

7-Deben subirse el código fuente y el binario para Windows y Linux, así como todos los archivos que sean necesarios para su compilación y ejecución.

8-Los Binarios y el código fuente deben tener un Link Activo, que deberemos mantener durante mínimo una semana después de finalizado el concurso.

9-Tras la finalización del reto se posteara una encuesta para ver quien a resuelto mejor el reto.


BlackMaster



-----------------------------------------------------------
Binario Windows: https://www.dropbox.com/s/uxjoyc872t4yudg/Juego%20Isc%20Snake.zip  
Binario Linux: ??
Codigo: http://ultrashare.net/hosting/fl/9aa5f7a47b
-----------------------------------------------------------

Ferreter



-----------------------------------------------------------
Binario Windows: http://www.mediafire.com/?k56fd69g82paglj
Binario Linux: ??
Codigo: ??
-----------------------------------------------------------

SrCooper



-----------------------------------------------------------
Codigo y Binario Windows: http://www.mediafire.com/?2bktsm8qoi087z8
Binario Linux: ??
-----------------------------------------------------------


Puntoinfinito



-----------------------------------------------------------
Binario Windows: ??
Binario Linux: https://docs.google.com/file/d/0B_bICudPUUcpcmh5UmtveHM5TTg/edit?usp=sharing
Codigo: https://docs.google.com/file/d/0B_bICudPUUcpdElUUDFuVXc2Szg/edit?usp=sharing
-----------------------------------------------------------


Kaltorak



-----------------------------------------------------------
Binario Windows: http://ultrashare.net/hosting/fl/62ce21b834
Binario Linux: http://ultrashare.net/hosting/fl/28a0c065f5
Codigo: http://ultrashare.net/hosting/fl/df1913ec96
-----------------------------------------------------------




Un saludo
Kaltorak.



el-brujo



Reto superado xD (es broma)


OmarHack

I like to test things.

kaltorak

#3
;-) ;-) Genial el-brujo  ;-) ;-)

Te robo el gif para ponerlo en el post original sobre el reto, me ha encantado.

Un saludo
Kaltorak.



EI: juntando mensajes.



Gracias por participar la inscripción finaliza el lunes 24/06/2013 así que los que queráis participar en el reto no tardéis en apuntaros.
A partir del día 24/06/2013 tendréis que subir una primera versión del videojuego escogido para el reto antes de 15 días o lo que es lo mismo antes del día 09/07/2013
Después tendréis otros 15 días para subir la versión final de dicho videojuego hasta el día 24/07/2013.

Un saludo
Kaltorak.



0xFer

cuantos mas participaran en este reto?
ya tengo medio terminado el mio  :-*
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

BlackM4ster

#5
Yo ya hice el mio
https://www.dropbox.com/s/uxjoyc872t4yudg/Juego%20Isc%20Snake.zip  :silbar:

Pensé que al ser el snake, necesitaba que fuese en consola, para respetar los primeros juegos

Main.cpp
Código (cpp) [Seleccionar]
#pragma region Includes

#include <windows.h>
#include <string>
#include <conio.h>
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <dos.h>
using namespace std;
#define Izquierda 97
#define Derecha 100
#define Arriba 119
#define Abajo 115

void Color(int foreground, int background);
void gotoxy( short x, short y );
void cls();
void Lineas(int Estilo,int xA,int yA,int hA,int wA);
void DibujarPuntos (int p);
void MoverSerpiente(); void PintarSerpiente();
void DibujarMapa();
void BorrarZona(); void BorrarCola();
void PintarZona();
void GameOver(); void AlargarSerpiente();
void MoverComida(); void Comer(int n); void DibujarComida();

#pragma endregion
#pragma region Variables

int Tecla;
int Puntos = 0;
char* IconoFondo = " ";
int IconoSerpiente = 184; //184, 219
int IconoComida = 15; //3, 15
int SerpienteX = 30; int SerpienteY = 10;
int FinalSerpienteX = 28; int FinalSerpienteY = 10;
int sFinalSerpienteX; int sFinalSerpienteY;
int Largura=2; string DireccionSerpiente = "De"; string DireccionFinalSerpiente = "De"; string DireccionsFinalSerpiente;
int Zona [76][18];
int MaxX = 77; int MinX = 2;
int MaxY = 22; int MinY = 5;
int Velocidad = 100;

int c1x; int c1y; bool c1v = true;
int c2x; int c2y; bool c2v = true; bool DibujarC = true;
int c3x; int c3y; bool c3v = true;

#pragma endregion

int main(){

system("title Snake - Blackm4ster 2012");
BorrarZona();
cout << "Pulsa una tecla para Jugar" << endl;
getch();
cls();
DibujarMapa();

Color(10,0);
gotoxy (SerpienteX, SerpienteY);
printf("%c", IconoSerpiente); //Dibuja la Serpiente por 1º vez
MoverComida();
Color(15,0);
do{
if (DibujarC == true){
DibujarComida();
DibujarC = false;
}
BorrarCola();
MoverSerpiente();
PintarSerpiente(); //PintarZona();
DibujarPuntos(Puntos);
Sleep(Velocidad);

/*
gotoxy (2, 22); cout << SerpienteY;
gotoxy (2, 21); cout << SerpienteX;

gotoxy (7, 21); cout << FinalSerpienteX;
gotoxy (7, 22); cout << FinalSerpienteY;

gotoxy (13, 21); cout << DireccionSerpiente;
gotoxy (13, 22); cout << DireccionFinalSerpiente;

gotoxy (18, 20); cout << c1x << " - " << c1y;
gotoxy (18, 21); cout << c2x << " - " << c2y;
gotoxy (18, 22); cout << c3x << " - " << c3y;
*/
}while(1);
return 0;
}

void MoverSerpiente(){

// CABEZA ----------------------------------------------

if(kbhit()){
Tecla = getch();

switch(Tecla){
case Izquierda:
//Movimiento
if(DireccionSerpiente == "De"){
GameOver();
return;
}
Zona[SerpienteX - MinX +1][SerpienteY - MinY +1] = 4;
DireccionSerpiente = "Iz";
break;

case Derecha:
//Movimiento
if(DireccionSerpiente == "Iz"){
GameOver();
return;
}
Zona[SerpienteX - MinX +1][SerpienteY - MinY +1] = 2;
DireccionSerpiente = "De";
break;

case Arriba:
//Movimiento
if(DireccionSerpiente == "Ab"){
GameOver();
return;
}
Zona[SerpienteX - MinX +1][SerpienteY - MinY +1] = 1;
DireccionSerpiente = "Ar";
break;

case Abajo:
//Movimiento
if(DireccionSerpiente == "Ar"){
GameOver();
return;
}
Zona[SerpienteX - MinX +1][SerpienteY - MinY +1] = 3;
DireccionSerpiente = "Ab";
break;

} //End Case
Beep(900,5);
} //End If Tecla

// ------------------ MOVIMIENTO ----------------------

if (DireccionSerpiente == "Ar"){
SerpienteY = SerpienteY - 1;
}
if (DireccionSerpiente == "Iz"){
SerpienteX = SerpienteX - 1;
}
if (DireccionSerpiente == "Ab"){
SerpienteY = SerpienteY + 1;
}
if (DireccionSerpiente == "De"){
SerpienteX = SerpienteX + 1;
}

// -------------------- COMIDA ------------------------

if(SerpienteX == c1x + MinX && SerpienteY == c1y + MinY && c1v == true){
Comer(1);
}
if(SerpienteX == c2x + MinX && SerpienteY == c2y + MinY && c2v == true){
Comer(2);
}
if(SerpienteX == c3x + MinX && SerpienteY == c3y + MinY && c3v == true){
Comer(3);
}

// -------------------- CHOQUES -----------------------

//Paredes

if (SerpienteX < MinX || SerpienteY < MinY || SerpienteX > MaxX || SerpienteY > MaxY){
GameOver();
return;
}

//Simulación Cabeza vs Cuerpo.

sFinalSerpienteX = FinalSerpienteX; sFinalSerpienteY = FinalSerpienteY; DireccionsFinalSerpiente = DireccionFinalSerpiente;

for (int i=1; i!=Largura; i++){

//Comparación si coinciden
if (SerpienteX == sFinalSerpienteX && SerpienteY == sFinalSerpienteY){
GameOver();
return;
}

switch(Zona[sFinalSerpienteX - MinX +1][sFinalSerpienteY - MinY +1]){
case 1:
DireccionsFinalSerpiente = "Ar";
break;
case 2:
DireccionsFinalSerpiente = "De";
break;
case 3:
DireccionsFinalSerpiente = "Ab";
break;
case 4:
DireccionsFinalSerpiente = "Iz";
break;
default:
DireccionsFinalSerpiente = DireccionsFinalSerpiente;
break;
}

if (DireccionsFinalSerpiente == "Ar"){
sFinalSerpienteY = sFinalSerpienteY - 1;
}
if (DireccionsFinalSerpiente == "Iz"){
sFinalSerpienteX = sFinalSerpienteX - 1;
}
if (DireccionsFinalSerpiente == "Ab"){
sFinalSerpienteY = sFinalSerpienteY + 1;
}
if (DireccionsFinalSerpiente == "De"){
sFinalSerpienteX = sFinalSerpienteX + 1;
}

}

// COLA ----------------------------------------------

//Leer giros en la Matriz
switch(Zona[FinalSerpienteX - MinX +1][FinalSerpienteY - MinY +1]){
case 1:
DireccionFinalSerpiente = "Ar";
Zona[FinalSerpienteX - MinX +1][FinalSerpienteY - MinY +1] = 0;
break;
case 2:
DireccionFinalSerpiente = "De";
Zona[FinalSerpienteX - MinX +1][FinalSerpienteY - MinY +1] = 0;
break;
case 3:
DireccionFinalSerpiente = "Ab";
Zona[FinalSerpienteX - MinX +1][FinalSerpienteY - MinY +1] = 0;
break;
case 4:
DireccionFinalSerpiente = "Iz";
Zona[FinalSerpienteX - MinX +1][FinalSerpienteY - MinY +1] = 0;
break;
default:
DireccionFinalSerpiente = DireccionFinalSerpiente;
Zona[FinalSerpienteX - MinX +1][FinalSerpienteY - MinY +1] = 0;
break;
}

if (DireccionFinalSerpiente == "Ar"){
FinalSerpienteY = FinalSerpienteY - 1;
}
if (DireccionFinalSerpiente == "Iz"){
FinalSerpienteX = FinalSerpienteX - 1;
}
if (DireccionFinalSerpiente == "Ab"){
FinalSerpienteY = FinalSerpienteY + 1;
}
if (DireccionFinalSerpiente == "De"){
FinalSerpienteX = FinalSerpienteX + 1;
}
}
void PintarSerpiente(){

Color(10,0);
gotoxy(SerpienteX, SerpienteY); printf("%c", IconoSerpiente);
Color(15,0);
}
void Comer(int n){
switch (n){
case 1:
Puntos = Puntos + 10;
c1v = false;
break;
case 2:
Puntos = Puntos + 10;
c2v = false;
break;
case 3:
Puntos = Puntos + 10;
c3v = false;
break;
}
Beep(800,5);
AlargarSerpiente();
if (c1v == false && c2v == false && c3v == false){
MoverComida();
DibujarC = true;
}
}
void DibujarComida(){
Color(13,0);
gotoxy(c1x + MinX, c1y + MinY); printf("%c", IconoComida);
gotoxy(c2x + MinX, c2y + MinY); printf("%c", IconoComida);
gotoxy(c3x + MinX, c3y + MinY); printf("%c", IconoComida);
Color(15,0);
}
void MoverComida(){
c1x = (rand() % 76); c1y = (rand() % 18);
c2x = (rand() % 76); c2y = (rand() % 18);
c3x = (rand() % 76); c3y = (rand() % 18);
c1v = true; c2v = true; c3v = true;
}
void AlargarSerpiente(){
Largura = Largura + 1;
Velocidad = Velocidad - 2;
if (DireccionFinalSerpiente == "Ar"){
FinalSerpienteY = FinalSerpienteY + 1;
}
if (DireccionFinalSerpiente == "Iz"){
FinalSerpienteX = FinalSerpienteX + 1;
}
if (DireccionFinalSerpiente == "Ab"){
FinalSerpienteY = FinalSerpienteY - 1;
}
if (DireccionFinalSerpiente == "De"){
FinalSerpienteX = FinalSerpienteX - 1;
}
}
void GameOver(){
cls();
cout << "- Game Ov3r -" << endl;
cout << "Puntos: " << Puntos << endl;
cout << "> Pulsa Enter para Salir <" << endl;
do{Tecla = getch();}while(Tecla != 13);
exit(1);
}
void BorrarCola() {

//Borrar Cola Vieja
if (FinalSerpienteX == c1x && FinalSerpienteY == c1y && c1v == true){}else{
gotoxy(FinalSerpienteX,FinalSerpienteY); puts(IconoFondo);}

if (FinalSerpienteX == c2x && FinalSerpienteY == c2y && c2v == true){}else{
gotoxy(FinalSerpienteX,FinalSerpienteY); puts(IconoFondo);}

if (FinalSerpienteX == c3x && FinalSerpienteY == c3y && c3v == true){}else{
gotoxy(FinalSerpienteX,FinalSerpienteY); puts(IconoFondo);}

/*
gotoxy(SerpienteX,SerpienteY);
puts(IconoFondo);
*/
}
void PintarZona(){
for (int x=1; x<77;x++){
for (int y=1; y<19; y++){
gotoxy(1+x,4+y);
switch(Zona[x][y]){
case 0:
cout << " ";
break;
case 1:
cout << "1";
break;
case 2:
cout << "2";
break;
case 3:
cout << "3";
break;
case 4:
cout << "4";
break;
default:
cout << "?";
break;
}
}
}

}
void DibujarPuntos(int p){

gotoxy(54,2); cout << "PUNTOS: ";
Color(12,0); printf("%d", p);
Color(15,0);
}
void BorrarZona(){

for (int x=1; x<77;x++){
for (int y=1; y<19; y++){
Zona[x][y] = 0;
}}
}
void DibujarMapa(){

Color(15, 0);
Lineas(1,2,2,1,48);
Color(7, 0);
Lineas(2,53,2,1,25);
Color(15, 0);
Lineas(1,2,5,18,76);

//Mensaje Isc
Color(14, 0);
gotoxy(16,2); cout << "Snake - Black M4ster";
Color(15, 0);
}


Isc.cpp
Código (cpp) [Seleccionar]
#include <windows.h>
#include <conio.h>
#include <iostream>
using namespace std;

void gotoxy( short x, short y ) {
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD position = { x, y };
SetConsoleCursorPosition( hStdout, position );
}

void cls() {
  DWORD n;
  DWORD size;
  COORD coord = {0};
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
  GetConsoleScreenBufferInfo ( h, &csbi );
  size = csbi.dwSize.X * csbi.dwSize.Y;
  FillConsoleOutputCharacter ( h, TEXT ( ' ' ), size, coord, &n );
  GetConsoleScreenBufferInfo ( h, &csbi );
  FillConsoleOutputAttribute ( h, csbi.wAttributes, size, coord, &n );
  SetConsoleCursorPosition ( h, coord );
}

void Lineas(int Estilo,int xA,int yA,int hA,int wA){
int ch,cv,eari,eard,eai,ead;

switch (Estilo){
case 1:
ch = 196; cv = 179;
eari = 218; eard = 191;
eai = 192; ead = 217;
break;
case 2:
ch = 205; cv = 186;
eari = 201; eard = 187;
eai = 200; ead = 188;
break;
default:
ch = 196; cv = 179;
eari = 218; eard = 191;
eai = 192; ead = 217;
break;
}
//Horizontal
for (int i=xA;i<wA+xA;i++){
gotoxy(i,yA-1); printf("%c",ch);
}
for (int i=xA;i<wA+xA;i++){
gotoxy(i,yA+hA); printf("%c",ch);
}

//Vertical
for (int i=yA;i<hA+yA;i++){
gotoxy(xA-1,i); printf("%c",cv);
}
for (int i=yA;i<hA+yA;i++){
gotoxy(xA+wA,i); printf("%c",cv);
}

//Esquinas
gotoxy(xA-1,yA-1); printf("%c",eari);
gotoxy(xA+wA,yA-1); printf("%c",eard);

gotoxy(xA-1,yA+hA); printf("%c",eai);
gotoxy(xA+wA,yA+hA); printf("%c",ead);
}

void Color(int foreground, int background) {
int Colorfinal = (background * 16) + foreground;
SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE),Colorfinal);
}
- Pásate por mi web -
https://codeisc.com

amchacon

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

MeCraniDOS

Cita de: BlackM4ster en 26 Junio 2013, 08:29 AM
Yo ya hice el mio

Podrías subir el código para ver como lo hiciste??  :silbar: :silbar:
"La física es el sistema operativo del Universo"
     -- Steven R Garman

OmarHack

I like to test things.

kaltorak

#9
Hola BlackMaster

No costaba nada apuntarse para llevar un control de las personas que iban a realizar el reto  ;D, pero bueno bienvenido bordo.

2 pegas, una la que ya te a comentado MeCraniDos tienes que subir el código, otra que lo tienes que subir compilado para windows y linux.

Una última cosa al intentar ejecutarlo me sale este error.



Alguno sabe por qué puede ser por que por lo que veo os funciona a todos :-(

(Ya lo solucione  ;D)


Un saludo
Kaltorak.