Jajajaja es que quiero mis juegos del tiempo el DOS
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ú
#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
}
CitarThread stopped
C:\JUEGO\Juego2.exe: Fault:
access violation at 0x2: read
of address 0x2
#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;
}
}
}
}
Citar
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}