| 
	
		|  Autor | Tema: ¿Me dan una manita en este juego simple en C++?  (Leído 8,325 veces) |  
	| 
			| 
					
						| theluigy13etv 
								
								 Desconectado 
								Mensajes: 179
								
								 
								Primero se hace, después se mejora
								
								
								
								
								
								   | 
 
Hola, ayer se me ocurrió tratar de programar un juego en C++ y la verdad que se necesita de bastante ingenio y creatividad. Bueno, estoy usando el Borland C++ 5.02 (un poco antiguo) y me estoy ayudando de las funciones de la librería no estándar conio, como textcolor(), gotoxy(), clrscr(), etc... también uso rand().
 Mi juego se trata de una especie de laberinto con minas en donde tienes que mover el cursor mediante las flechas direccionales del teclado, y se trata de llegar desde un posición inicial hasta una posición final (representado por un asterisco *).
 Las minas están representados por equis x.
 
 El problema está en que al terminar el juego, ocurre un error inesperado.
 
 Espero que alguien me ayude a terminar mi juego, que es el primero que hago en toda mi vida. Uso el borland C++ 5.02. Muchas gracias.
 
 YA sé que todavía faltan muchas cosas más, pero la lógica me preocupa por ahora.
 
 Usé:
 - Funciones en C.
 - Paso por valor y por seudoreferencia (paso por valor de la dirección de memoria)
 - Punteros
 - función rand() de stdlib.h
 - gotoxy(), clrscr(), getch() de conio.h
 - Estructuras
 - Arreglos y cadenas
 - Estructuras de control (if, else, switch, for, while, do-while)
 
 El código es el de abajo:
 
 
 |  
						| 
								|  |  
								| « Última modificación:  3 Mayo 2012, 16:04 pm por theluigy13etv » |  En línea | 
 
 |  |  |  | 
			| 
					
						| theluigy13etv 
								
								 Desconectado 
								Mensajes: 179
								
								 
								Primero se hace, después se mejora
								
								
								
								
								
								   | 
 
Aquí encontré el problema, pero no sé porqué no puedo asignar un valor a esas variables. Si es que los pongo en el problema, me da error, pero si no los pongo, funciona normal. Alguien que sepa porqué???. Las variables a las que me refiero están casi al final de este código fuente. #include <iostream.h>#include <conio.h>#include <stdio.h>#include <time.h>#include <stdlib.h>#include <string.h> #define LIM_DE 55#define LIM_IZ 5#define LIM_AR 6#define LIM_AB 21 int a[19][81]; void borde_mapa() {   char titulo1[]="LABERINTO Y ESQUIVA MINAS 2D";   gotoxy( (LIM_DE-LIM_IZ+1)/2 - strlen(titulo1)/2 ,LIM_AR-3 ); cout<<titulo1;   // borde superior	gotoxy(LIM_IZ,LIM_AR-1);					//------------------   for(int i=LIM_IZ; i<=LIM_DE; i++) {      cout<<"Ä";   }    // borde inferior   gotoxy(LIM_IZ,LIM_AB+1);					//------------------   for(int i=LIM_IZ; i<=LIM_DE; i++) {      cout<<"Ä";   }    // borde izquierdo y derecho   for(int i=LIM_AR; i<=LIM_AB; i++) {   	gotoxy(LIM_IZ-1,i); cout<<"³";      gotoxy(LIM_DE+1,i); cout<<"³";    }    // esquinas   gotoxy(LIM_IZ-1,LIM_AR-1); cout<<"Ú"; // izquierda superior   gotoxy(LIM_DE+1,LIM_AR-1); cout<<"¿"; // derecha superior   gotoxy(LIM_IZ-1,LIM_AB+1); cout<<"À"; // izquierda inferior   gotoxy(LIM_DE+1,LIM_AB+1); cout<<"Ù"; // derecha inferior} void llena_minas() {   srand(time(NULL));    for(int i=LIM_AR; i<=LIM_AB; i++)   	for(int j=LIM_IZ; j<=LIM_DE; j++) {      	a[i][j]=rand()%5;      }}  void determina_posicion(char caracter, int *x, int *y, int *cont, int *ax, int *ay) {   int si=1;    *ax=*x;   *ay=*y;	switch(caracter) {         case 77:         	if((*x)<LIM_DE) {         		(*x)++;               (*cont)++;            }            else printf("\a");            break; // derecha          case 80:         	if((*y)<LIM_AB) {         		(*y)++;               (*cont)++;            }            else printf("\a");            break; // abajo          case 72:         	 if((*y)>LIM_AR) {             	 (*y)--;                (*cont)++;             }             else printf("\a");             break; // arriba          case 75:         	 if((*x)>LIM_IZ) {         	    (*x)--;                (*cont)++;             }             else printf("\a");            break; // izquierda         default: si=0;      }       if(si) {         textcolor(LIGHTRED); textbackground(BLUE); cprintf("0");      	a[*ay][*ax]=1;      }} void llena_pantalla() {	for(int i=LIM_AR; i<=LIM_AB; i++) {   	for(int j=LIM_IZ; j<=LIM_DE; j++) {      	gotoxy(j,i);         if(a[i][j]!=1)         	cout<<"²";         else cout<<"x";      }   }   borde_mapa(); } void etiqueta(int x, int y, int *cont) {	gotoxy(58,LIM_AR-1); cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";   for(int i=LIM_AR; i<=LIM_AR+6; i++) {      gotoxy(58,i); cout<<"³";      gotoxy(78,i); cout<<"³";   }	gotoxy(63,LIM_AR); printf("Posicion:");   gotoxy(63,LIM_AR+1); printf("--------");    gotoxy(61,LIM_AR+2); printf("     Fila: %d", y);   gotoxy(61,LIM_AR+3); printf("  Columna: %d", x);   gotoxy(61,LIM_AR+4); printf("# movidas: %d", *cont);   gotoxy(58,LIM_AR+6); cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";    // regresa el cursor a su sitio original   gotoxy(x,y);} void posicion_inicial(int *x, int *y) {	srand(time(NULL));   do {   	*x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;   	*y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;   }while(!(a[*y][*x]==0));   gotoxy(*x,*y);} void posicion_meta(int *x, int *y) {	do {   	*x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;   	*y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;   } while(!(a[*y][*x]==0));    gotoxy(*x,*y);   textcolor(YELLOW); cprintf("*");} void guarda_partida(int cont, char resultado[]) {   FILE *arch;	clrscr();   system("color 0a");    char titulo[]="GUARDAR PARTIDA";	gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   gotoxy((80-strlen(titulo))/2,3); cout<<"--------------";    struct Persona {	char nombre[80];   int puntaje;   char resultado[80];   } jugador;    gotoxy(5,5); cout<<"Nombres: "; gets(jugador.nombre);   jugador.puntaje=cont;   strcpy(jugador.resultado,resultado);     arch=fopen("Resultados","a+b");   fwrite(&jugador,sizeof(jugador),1,arch);   fclose(arch);    // Para ver los puntajes recientes    clrscr();   system("color 0a");    strcpy(titulo,"PUNTAJES RECIENTES");	gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";    arch=fopen("Resultados","rb");    if(arch==NULL) {   	cout<<"\n\n\n\t\tNO HAY JUGADORES REGISTRADOS!!!";      return;   }    fread(&jugador,sizeof(jugador),1,arch);   gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");   int num_lin=1;   while(!feof(arch)) {      printf("%20s%9d%15s\n",jugador.nombre,jugador.puntaje,jugador.resultado);      if(num_lin>15) {      	num_lin=0;      	cout<<"\n\tContinuar..."; getchar();         clrscr();         system("color 0a");    		strcpy(titulo,"PUNTAJES RECIENTES");			gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   		gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";         gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");      }      num_lin++;      fread(&jugador,sizeof(jugador),1,arch);   }    fclose(arch);} int main(void) { 	char c;   //int resp1=0;   //int resp2=1;   int x=0, y=0,ay=0,ax=0;   int metax=0, metay=0;   int cont=0;   char resultado[50];   int reinicia=5,sigue=1;   _setcursortype(_SOLIDCURSOR);    while(reinicia!=1) {   	cont=0;   	clrscr();      system("color 1a");      system("title MI LABERINTO LUIGY");   	llena_minas();  	 	llena_pantalla();      posicion_meta(&metax,&metay);   	posicion_inicial(&x,&y);       while(sigue) {      	etiqueta(x,y,&cont);       	c=getch();         determina_posicion(c,&x,&y,&cont,&ax,&ay);         gotoxy(x,y);         if( a[y][x]==1 ) {               //printf("\a\a\a");               clrscr();               system("color 4e");               gotoxy(25,15); cout<<"PERDISTE\a\a";               reinicia=1;  //  <====== PROBLEMA DETECTADO,               sigue=0;   //  <====== PROBLEMA DETECTADO,               break;         }          if(x==metax && y==metay) {            clrscr();            system("color 1e");            gotoxy(25,15); cout<<"GANASTE\a\a\a";            break;         }        }     } } 
 Si desean que el juego funcione, entonces agréguenle las barritas para convertir las instrucciones en comentarios:                reinicia=1;                  sigue=0;   Por:                // reinicia=1;                  // sigue=0;  
 
 |  
						| 
								|  |  
								| « Última modificación:  3 Mayo 2012, 16:21 pm por theluigy13etv » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Ferno 
								 
								
								 Desconectado 
								Mensajes: 375
								
								
								
								
								
								   | 
 
¿Podrías especificar qué tipo de error es? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| theluigy13etv 
								
								 Desconectado 
								Mensajes: 179
								
								 
								Primero se hace, después se mejora
								
								
								
								
								
								   | 
 
El error es el programa termina inesperadamente y el compilador me envía un mensaje diciendo lo siguiente: Thread stoppedC:\JUEGO\Juego2.exe: Fault:
 access violation at 0x2: read
 of address 0x2
 Espero que me ayuden!!!! |  
						| 
								|  |  
								| « Última modificación:  3 Mayo 2012, 16:56 pm por theluigy13etv » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Ferno 
								 
								
								 Desconectado 
								Mensajes: 375
								
								
								
								
								
								   | 
 
Hay un par de funciones en tu code que sinceramente no tengo idea que hacen.Pero el al asignarle 1 a tu variable "reinicia" fijate que está en condiciones de salir de todos los while, por ende, llega al final del main y termina el programa (no se si eso es lo que querés justamente).
 Ahora bien, desconozco específicamente qué ocurre con ese tipo de error, pero probablemente sea causado por alguna de las funciones no estándar de por ahí. ¿Quizás te falta llamar a alguna función de finalización antes de que termine el programa?
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| theluigy13etv 
								
								 Desconectado 
								Mensajes: 179
								
								 
								Primero se hace, después se mejora
								
								
								
								
								
								   | 
 
Hola a todos, luego de varios intentos, ya casi terminé mi programa. Para los que quieran probarlo aquí les mandaré el código. Código que funciona: Como verán, hay un bloque de código demarcado por asteriscos. Este bloque de código en un principio estaba dentro de una función (se encargaba de guardar los datos como el nombre, y el puntaje dentro de un archivo), pero lo que sucedía era que si realizaba la llamada a la función, luego de terminar de ejecutarse esa función, ocurría el error. Por eso opté por ponerlo directamente dentro del main, y ahora sí el programa funciona normal.#include <iostream.h>#include <conio.h>#include <stdio.h>#include <time.h>#include <stdlib.h>#include <string.h> #define LIM_DE 55#define LIM_IZ 5#define LIM_AR 5#define LIM_AB 21 int a[19][81]; void borde_mapa() {   char titulo1[]="LABERINTO Y ESQUIVA MINAS 2D";   gotoxy( (LIM_DE-LIM_IZ+1)/2 - strlen(titulo1)/2 ,LIM_AR-3 ); cout<<titulo1;   // borde superior	gotoxy(LIM_IZ,LIM_AR-1);					//------------------   for(int i=LIM_IZ; i<=LIM_DE; i++) {      cout<<"Ä";   }    // borde inferior   gotoxy(LIM_IZ,LIM_AB+1);					//------------------   for(int i=LIM_IZ; i<=LIM_DE; i++) {      cout<<"Ä";   }    // borde izquierdo y derecho   for(int i=LIM_AR; i<=LIM_AB; i++) {   	gotoxy(LIM_IZ-1,i); cout<<"³";      gotoxy(LIM_DE+1,i); cout<<"³";    }    // esquinas   gotoxy(LIM_IZ-1,LIM_AR-1); cout<<"Ú"; // izquierda superior   gotoxy(LIM_DE+1,LIM_AR-1); cout<<"¿"; // derecha superior   gotoxy(LIM_IZ-1,LIM_AB+1); cout<<"À"; // izquierda inferior   gotoxy(LIM_DE+1,LIM_AB+1); cout<<"Ù"; // derecha inferior} void llena_minas() {   srand(time(NULL));    for(int i=LIM_AR; i<=LIM_AB; i++)   	for(int j=LIM_IZ; j<=LIM_DE; j++) {      	a[i][j]=rand()%5;      }}  void determina_posicion(char caracter, int *x, int *y, int *cont, int *ax, int *ay) {/*  En esta funcion se realiza lo siguiente:     - Si se presiona una tecla direccional:       - Se determina la nueva posicion del cursor. ==> (x,y) nueva posicíon       - Se marca la posicion anterior para que no vuelva a pisarlo ===> (ax,ay) esta bloqueado    - Si no se presiona una tecla direccional       - La posicion del cursor sigue siendo la misma  */    int si=1;    *ax=*x;   *ay=*y; 	switch(caracter) {      case 77:      	if((*x)<LIM_DE) {       		(*x)++;            (*cont)++;         }         else printf("\a");         break; // derecha       case 80:         if((*y)<LIM_AB) {            (*y)++;            (*cont)++;         }         else printf("\a");         break; // abajo       case 72:         if((*y)>LIM_AR) {            (*y)--;            (*cont)++;         }            else printf("\a");            break; // arriba       case 75:         if((*x)>LIM_IZ) {            (*x)--;            (*cont)++;         }         else printf("\a");         break; // izquierda         default: si=0;   }    if(si) {  // si es que el cursor se desplaza a su nueva posicion, recien puedo bloquear la posicion en la que estaba      textcolor(LIGHTRED); textbackground(BLUE); cprintf("0");      a[*ay][*ax]=1;   } } void llena_pantalla() {	for(int i=LIM_AR; i<=LIM_AB; i++) {   	for(int j=LIM_IZ; j<=LIM_DE; j++) {      	gotoxy(j,i);         if(a[i][j]!=1)         	cout<<"²";         else cout<<"x";      }   }   borde_mapa(); } void etiqueta(int x, int y, int cont) {	gotoxy(58,LIM_AR-1); cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";   for(int i=LIM_AR; i<=LIM_AR+6; i++) {      gotoxy(58,i); cout<<"³";      gotoxy(78,i); cout<<"³";   }	gotoxy(63,LIM_AR); printf("Posicion:");   gotoxy(63,LIM_AR+1); printf("--------");    gotoxy(61,LIM_AR+2); printf("     Fila: %2d", y-LIM_AR+1);   gotoxy(61,LIM_AR+3); printf("  Columna: %2d", x-LIM_IZ+1);   gotoxy(61,LIM_AR+4); printf("# movidas: %d", cont);   gotoxy(58,LIM_AR+6); cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";    // regresa el cursor a su sitio original   gotoxy(x,y);} void posicion_inicial(int *x, int *y) {	srand(time(NULL));   do {   	*x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;   	*y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;   }while(!(a[*y][*x]==0));   gotoxy(*x,*y);} void posicion_meta(int *x, int *y) {	do {   	*x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;   	*y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;   } while(!(a[*y][*x]==0));    gotoxy(*x,*y);   textcolor(YELLOW); cprintf("*");} /*void guarda_partida(int cont, char resultado[]) {    FILE *arch;	clrscr();   system("color 0a");    char titulo[]="GUARDAR PARTIDA";	gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   gotoxy((80-strlen(titulo))/2,3); cout<<"--------------";    struct Persona {	   char nombre[80];      int puntaje;      char resultado[80];   } jugador;    gotoxy(5,5); cout<<"Nombres: "; gets(jugador.nombre);   jugador.puntaje=cont;   strcpy(jugador.resultado,resultado);     arch=fopen("Resultados","a+b");   fwrite(&jugador,sizeof(jugador),1,arch);   fclose(arch);    // Para ver los puntajes recientes    clrscr();   system("color 0a");    strcpy(titulo,"PUNTAJES RECIENTES");	gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";    arch=fopen("Resultados","rb");     if(arch==NULL) {   	cout<<"\n\n\n\t\tNO HAY JUGADORES REGISTRADOS!!!";      return;   }     fread(&jugador,sizeof(jugador),1,arch);   gotoxy(1,5); printf("%20s%15s%15s", "JUGADOR","PUNTAJE","RESULTADO\n\n");   int num_lin=1;   while(!feof(arch)) {      printf("%20s%9d%15s\n",jugador.nombre,jugador.puntaje,jugador.resultado);      if(num_lin>15) {      	num_lin=0;      	cout<<"\n\tContinuar..."; getchar();         clrscr();         system("color 0a");    		strcpy(titulo,"PUNTAJES RECIENTES");			gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   		gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";         gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");      }      num_lin++;      fread(&jugador,sizeof(jugador),1,arch);   }   fclose(arch);   cout<<"\n\tRegresar al juego...";   getchar();} */ int main(void) { 	char c;   //int resp1=0;   //int resp2=1;   int x=0, y=0;  // coordenadas de la posicion actual   int ay=0,ax=0; // coordenadas de la posicion anterior   int metax=0, metay=0;   int cont;   char resultado[50];   int sigue=1;    while(1) {      _setcursortype(_SOLIDCURSOR);   	cont=0;   	clrscr();      system("color 1a");      system("title MI LABERINTO LUIGY");   	llena_minas();  	 	llena_pantalla();      posicion_meta(&metax,&metay);   	posicion_inicial(&x,&y);      etiqueta(x,y,cont);       // etiqueta al inicio      while(sigue) {        	c=getch();         determina_posicion(c,&x,&y,&cont,&ax,&ay);         etiqueta(x,y,cont);    // etiqueta según la posición         gotoxy(x,y);         if( a[y][x]==1 ) {               //printf("\a\a\a");               clrscr();               system("color 4e");               gotoxy(25,15); cout<<"PERDISTE\a\a";               strcpy(resultado,"PERDEDOR");               //reinicia=1;  //  <====== PROBLEMA DETECTADO,               //sigue=0;   //  <====== PROBLEMA DETECTADO,               break;         }          if(x==metax && y==metay) {            clrscr();            system("color 1e");            gotoxy(25,15); cout<<"GANASTE\a\a\a";            strcpy(resultado,"GANADOR");            break;         }       } // fin de while       _setcursortype(_NORMALCURSOR); /******************************************************************************/// PARA GUARDAR LA PARTIDA (NO SE PORQUE NO SE PUEDE PONERLO EN UN MODULO APARTE )		FILE *arch;      clrscr();   	system("color 0a");    	char titulo[]="GUARDAR PARTIDA";		gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   	gotoxy((80-strlen(titulo))/2,3); cout<<"--------------";    	struct Persona {	  	   char nombre[80];     	   int puntaje;     	   char resultado[80];      } jugador;    	gotoxy(5,5); cout<<"Nombres: "; gets(jugador.nombre);   	jugador.puntaje=cont;   	strcpy(jugador.resultado,resultado);    	arch=fopen("Resultados","a+b");	   fwrite(&jugador,sizeof(jugador),1,arch);   	fclose(arch);    	// Para ver los puntajes recientes    	clrscr();   	system("color 0a");    	strcpy(titulo,"PUNTAJES RECIENTES");		gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   	gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";    	arch=fopen("Resultados","rb");   	fread(&jugador,sizeof(jugador),1,arch);   	gotoxy(1,5); printf("%20s%15s%15s", "JUGADOR","PUNTAJE","RESULTADO\n\n");   	int num_lin=1;   	while(!feof(arch)) {      	if(num_lin>15) {      		num_lin=0;            textcolor(LIGHTRED); textbackground(BLACK); printf("\n\n\t"); cprintf("Continuar..."); getchar();         	clrscr();         	system("color 0a");   			strcpy(titulo,"PUNTAJES RECIENTES");				gotoxy((80-strlen(titulo))/2,2); cout<<titulo;   			gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";         	gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");      	}         printf("%20s%9d%15s\n",jugador.nombre,jugador.puntaje,jugador.resultado);      	num_lin++;      	fread(&jugador,sizeof(jugador),1,arch);   	}   	fclose(arch);   	textcolor(LIGHTRED); textbackground(BLACK); printf("\n\n\t"); cprintf("Regresar al juego...");   	getch(); /******************************************************************************/     } // fin de while }  
    aunque se ve desordenado   Ahora quisiera si alguien me lo puede mejorar para agregarle una opción para finalizar del juego y terminar el programa, porque por ahora, el juego se repite indefinidamente. (Como mencioné en un principio, no tengo ninguna noción de creación de videojuegos, además este es el primero que intento hacer, tal vez el código no sea el más eficiente, solo quería probar si es que con los pocos conocimientos que hasta ahora voy adquiriendo se pueden hacer estas cosas.       ) |  
						| 
								|  |  
								| « Última modificación:  4 Mayo 2012, 17:05 pm por theluigy13etv » |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | ayundeme con este simple codigo Programación Visual Basic
 | fraktal | 3 | 2,228 |  13 Octubre 2006, 16:35 pm por fraktal
 |  
						|   |   | una manita porfa a este codigo (me da error) Programación Visual Basic
 | cark | 2 | 2,059 |  27 Mayo 2007, 16:46 pm por cark
 |  
						|   |   | Simple juego
							« 1 2 » Programación Visual Basic
 | vivachapas | 12 | 5,640 |  10 Noviembre 2008, 02:00 am por vivachapas
 |  
						|   |   | Haz que la NSA o el FBI llame a tu puerta con este simple botón Noticias
 | MineHitex | 6 | 4,444 |  7 Septiembre 2013, 16:06 pm por Mister12
 |  
						|   |   | Idear un juego muy simple (es complicado). Juegos y Consolas
 | Tachikomaia | 3 | 9,905 |  6 Enero 2025, 20:36 pm por blckkey
 |    |