elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21
71  Sistemas Operativos / Windows / Re: Duda ¿Qué PC Virtual usar para mi windows 7 de 64 bits? en: 30 Agosto 2012, 20:52 pm
Jajajaja es que quiero mis juegos del tiempo el DOS
72  Sistemas Operativos / Windows / Duda ¿Qué PC Virtual usar para mi windows 7 de 64 bits? en: 30 Agosto 2012, 19:06 pm
Hola a todos, resulta que tengo una computadora con el sistema operativo windows 7 de 64 bits y luego que me la compré estuve pasando todos mis archivos de mi PC antigua (una pentium III con sistema operativo windows 98) en la que tenía muchísimos archivos, entre ellos mis amados juegos como mario, pacman, etc...,. Resulta que estos archivos y algunos otros no funcionan en mi nueva computadora. Estuve leyendo por internet y me entró las ganas de instalarme una PC virtual en la que pueda instalar los windows antiguos, pero me surge la duda si es que en mi computadora con windows 7 de 64 bits puedo hacer eso. ¿Qué software me recomiendan? Me bajé la PC Virtual de Microsoft, pero veo que solo se puede instalar desde Windows 98 hacia adelante, y también me entra la curiosidad de poder instalar DOS o el Windows 3.1. ¿En qué software de PC Virtual podría hacer eso?
73  Sistemas Operativos / Windows / ¿Porqué no ocupan espacio en disco los directorios o carpetas? en: 29 Agosto 2012, 21:58 pm
Esto es una pregunta que me hago, por más que creo una multitud de directorios dentro de otros, al visualizar las propiedades del directorio raiz observo que no ocupa espacio en disco: 0 bytes. ¿El nombre de dichos directorios acaso no se almacena en disco?

Y otra pregunta: Dos archivos de texto o lo que sea con el mismo contenido, ocupan el mismo espacio independientemente de la longitud del nombre. ¿Por qué?
74  Programación / Java / ¿Cuál es el ejecutable de NetBeans? en: 5 Mayo 2012, 19:20 pm
Hola a todos, tengo esta duda simple. Así como para abrir los programas que conforman el office, en el cuadro ejecutar escribo: winword, excel, powerpnt, ... etc. Quisiera saber cuál es el nombre ejecutable de NetBeans.  Muchas gracias.
75  Programación / Programación C/C++ / Re: ¿Me dan una manita en este juego simple en C++? en: 4 Mayo 2012, 17:00 pm
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:

Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. #define LIM_DE 55
  9. #define LIM_IZ 5
  10. #define LIM_AR 5
  11. #define LIM_AB 21
  12.  
  13. int a[19][81];
  14.  
  15. void borde_mapa() {
  16.   char titulo1[]="LABERINTO Y ESQUIVA MINAS 2D";
  17.   gotoxy( (LIM_DE-LIM_IZ+1)/2 - strlen(titulo1)/2 ,LIM_AR-3 ); cout<<titulo1;
  18.   // borde superior
  19. gotoxy(LIM_IZ,LIM_AR-1); //------------------
  20.   for(int i=LIM_IZ; i<=LIM_DE; i++) {
  21.      cout<<"Ä";
  22.   }
  23.  
  24.   // borde inferior
  25.   gotoxy(LIM_IZ,LIM_AB+1); //------------------
  26.   for(int i=LIM_IZ; i<=LIM_DE; i++) {
  27.      cout<<"Ä";
  28.   }
  29.  
  30.   // borde izquierdo y derecho
  31.   for(int i=LIM_AR; i<=LIM_AB; i++) {
  32.   gotoxy(LIM_IZ-1,i); cout<<"³";
  33.      gotoxy(LIM_DE+1,i); cout<<"³";
  34.  
  35.   }
  36.  
  37.   // esquinas
  38.   gotoxy(LIM_IZ-1,LIM_AR-1); cout<<"Ú"; // izquierda superior
  39.   gotoxy(LIM_DE+1,LIM_AR-1); cout<<"¿"; // derecha superior
  40.   gotoxy(LIM_IZ-1,LIM_AB+1); cout<<"À"; // izquierda inferior
  41.   gotoxy(LIM_DE+1,LIM_AB+1); cout<<"Ù"; // derecha inferior
  42. }
  43.  
  44. void llena_minas() {
  45.   srand(time(NULL));
  46.  
  47.   for(int i=LIM_AR; i<=LIM_AB; i++)
  48.   for(int j=LIM_IZ; j<=LIM_DE; j++) {
  49.       a[i][j]=rand()%5;
  50.      }
  51. }
  52.  
  53.  
  54. void determina_posicion(char caracter, int *x, int *y, int *cont, int *ax, int *ay) {
  55. /*
  56.   En esta funcion se realiza lo siguiente:
  57.  
  58.     - Si se presiona una tecla direccional:
  59.        - Se determina la nueva posicion del cursor. ==> (x,y) nueva posicíon
  60.        - Se marca la posicion anterior para que no vuelva a pisarlo ===> (ax,ay) esta bloqueado
  61.     - Si no se presiona una tecla direccional
  62.        - La posicion del cursor sigue siendo la misma
  63.  
  64.  
  65. */
  66.  
  67.   int si=1;
  68.  
  69.   *ax=*x;
  70.   *ay=*y;
  71.  
  72. switch(caracter) {
  73.      case 77:
  74.       if((*x)<LIM_DE) {
  75.       (*x)++;
  76.            (*cont)++;
  77.         }
  78.         else printf("\a");
  79.         break; // derecha
  80.  
  81.      case 80:
  82.         if((*y)<LIM_AB) {
  83.            (*y)++;
  84.            (*cont)++;
  85.         }
  86.         else printf("\a");
  87.         break; // abajo
  88.  
  89.      case 72:
  90.         if((*y)>LIM_AR) {
  91.            (*y)--;
  92.            (*cont)++;
  93.         }
  94.            else printf("\a");
  95.            break; // arriba
  96.  
  97.      case 75:
  98.         if((*x)>LIM_IZ) {
  99.            (*x)--;
  100.            (*cont)++;
  101.         }
  102.         else printf("\a");
  103.         break; // izquierda
  104.         default: si=0;
  105.   }
  106.  
  107.   if(si) {  // si es que el cursor se desplaza a su nueva posicion, recien puedo bloquear la posicion en la que estaba
  108.      textcolor(LIGHTRED); textbackground(BLUE); cprintf("0");
  109.      a[*ay][*ax]=1;
  110.   }
  111.  
  112. }
  113.  
  114. void llena_pantalla() {
  115. for(int i=LIM_AR; i<=LIM_AB; i++) {
  116.   for(int j=LIM_IZ; j<=LIM_DE; j++) {
  117.       gotoxy(j,i);
  118.         if(a[i][j]!=1)
  119.         cout<<"²";
  120.         else cout<<"x";
  121.      }
  122.   }
  123.   borde_mapa();
  124.  
  125. }
  126.  
  127. void etiqueta(int x, int y, int cont) {
  128. gotoxy(58,LIM_AR-1); cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";
  129.   for(int i=LIM_AR; i<=LIM_AR+6; i++) {
  130.      gotoxy(58,i); cout<<"³";
  131.      gotoxy(78,i); cout<<"³";
  132.   }
  133. gotoxy(63,LIM_AR); printf("Posicion:");
  134.   gotoxy(63,LIM_AR+1); printf("--------");
  135.  
  136.   gotoxy(61,LIM_AR+2); printf("     Fila: %2d", y-LIM_AR+1);
  137.   gotoxy(61,LIM_AR+3); printf("  Columna: %2d", x-LIM_IZ+1);
  138.   gotoxy(61,LIM_AR+4); printf("# movidas: %d", cont);
  139.   gotoxy(58,LIM_AR+6); cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";
  140.  
  141.   // regresa el cursor a su sitio original
  142.   gotoxy(x,y);
  143. }
  144.  
  145. void posicion_inicial(int *x, int *y) {
  146. srand(time(NULL));
  147.   do {
  148.   *x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;
  149.   *y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;
  150.   }while(!(a[*y][*x]==0));
  151.   gotoxy(*x,*y);
  152. }
  153.  
  154. void posicion_meta(int *x, int *y) {
  155. do {
  156.   *x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;
  157.   *y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;
  158.   } while(!(a[*y][*x]==0));
  159.  
  160.   gotoxy(*x,*y);
  161.   textcolor(YELLOW); cprintf("*");
  162. }
  163.  
  164. /*
  165. void guarda_partida(int cont, char resultado[]) {
  166.  
  167.    FILE *arch;
  168. clrscr();
  169.    system("color 0a");
  170.  
  171.    char titulo[]="GUARDAR PARTIDA";
  172. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  173.    gotoxy((80-strlen(titulo))/2,3); cout<<"--------------";
  174.  
  175.    struct Persona {
  176.   char nombre[80];
  177.       int puntaje;
  178.       char resultado[80];
  179.    } jugador;
  180.  
  181.    gotoxy(5,5); cout<<"Nombres: "; gets(jugador.nombre);
  182.    jugador.puntaje=cont;
  183.    strcpy(jugador.resultado,resultado);
  184.  
  185.  
  186.    arch=fopen("Resultados","a+b");
  187.    fwrite(&jugador,sizeof(jugador),1,arch);
  188.    fclose(arch);
  189.  
  190.    // Para ver los puntajes recientes
  191.  
  192.    clrscr();
  193.    system("color 0a");
  194.  
  195.    strcpy(titulo,"PUNTAJES RECIENTES");
  196. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  197.    gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";
  198.  
  199.    arch=fopen("Resultados","rb");
  200.  
  201.  
  202.    if(arch==NULL) {
  203.     cout<<"\n\n\n\t\tNO HAY JUGADORES REGISTRADOS!!!";
  204.       return;
  205.    }
  206.  
  207.  
  208.    fread(&jugador,sizeof(jugador),1,arch);
  209.    gotoxy(1,5); printf("%20s%15s%15s", "JUGADOR","PUNTAJE","RESULTADO\n\n");
  210.    int num_lin=1;
  211.    while(!feof(arch)) {
  212.       printf("%20s%9d%15s\n",jugador.nombre,jugador.puntaje,jugador.resultado);
  213.       if(num_lin>15) {
  214.       num_lin=0;
  215.       cout<<"\n\tContinuar..."; getchar();
  216.          clrscr();
  217.          system("color 0a");
  218.  
  219.     strcpy(titulo,"PUNTAJES RECIENTES");
  220. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  221.     gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";
  222.          gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");
  223.       }
  224.       num_lin++;
  225.       fread(&jugador,sizeof(jugador),1,arch);
  226.    }
  227.    fclose(arch);
  228.    cout<<"\n\tRegresar al juego...";
  229.    getchar();
  230. }
  231.  
  232. */
  233.  
  234. int main(void) {
  235.  
  236. char c;
  237.   //int resp1=0;
  238.   //int resp2=1;
  239.   int x=0, y=0;  // coordenadas de la posicion actual
  240.   int ay=0,ax=0; // coordenadas de la posicion anterior
  241.   int metax=0, metay=0;
  242.   int cont;
  243.   char resultado[50];
  244.   int sigue=1;
  245.  
  246.   while(1) {
  247.      _setcursortype(_SOLIDCURSOR);
  248.   cont=0;
  249.   clrscr();
  250.      system("color 1a");
  251.      system("title MI LABERINTO LUIGY");
  252.   llena_minas();
  253.   llena_pantalla();
  254.      posicion_meta(&metax,&metay);
  255.   posicion_inicial(&x,&y);
  256.      etiqueta(x,y,cont);       // etiqueta al inicio
  257.      while(sigue) {
  258.  
  259.       c=getch();
  260.         determina_posicion(c,&x,&y,&cont,&ax,&ay);
  261.         etiqueta(x,y,cont);    // etiqueta según la posición
  262.         gotoxy(x,y);
  263.         if( a[y][x]==1 ) {
  264.               //printf("\a\a\a");
  265.               clrscr();
  266.               system("color 4e");
  267.               gotoxy(25,15); cout<<"PERDISTE\a\a";
  268.               strcpy(resultado,"PERDEDOR");
  269.               //reinicia=1;  //  <====== PROBLEMA DETECTADO,
  270.               //sigue=0;   //  <====== PROBLEMA DETECTADO,
  271.               break;
  272.         }
  273.  
  274.         if(x==metax && y==metay) {
  275.            clrscr();
  276.            system("color 1e");
  277.            gotoxy(25,15); cout<<"GANASTE\a\a\a";
  278.            strcpy(resultado,"GANADOR");
  279.            break;
  280.         }
  281.  
  282.      } // fin de while
  283.  
  284.      _setcursortype(_NORMALCURSOR);
  285.  
  286. /******************************************************************************/
  287. // PARA GUARDAR LA PARTIDA (NO SE PORQUE NO SE PUEDE PONERLO EN UN MODULO APARTE )
  288. FILE *arch;
  289.      clrscr();
  290.   system("color 0a");
  291.  
  292.   char titulo[]="GUARDAR PARTIDA";
  293. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  294.   gotoxy((80-strlen(titulo))/2,3); cout<<"--------------";
  295.  
  296.   struct Persona {
  297.     char nombre[80];
  298.       int puntaje;
  299.       char resultado[80];
  300.      } jugador;
  301.  
  302.   gotoxy(5,5); cout<<"Nombres: "; gets(jugador.nombre);
  303.   jugador.puntaje=cont;
  304.   strcpy(jugador.resultado,resultado);
  305.  
  306.   arch=fopen("Resultados","a+b");
  307.   fwrite(&jugador,sizeof(jugador),1,arch);
  308.   fclose(arch);
  309.  
  310.   // Para ver los puntajes recientes
  311.  
  312.   clrscr();
  313.   system("color 0a");
  314.  
  315.   strcpy(titulo,"PUNTAJES RECIENTES");
  316. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  317.   gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";
  318.  
  319.   arch=fopen("Resultados","rb");
  320.   fread(&jugador,sizeof(jugador),1,arch);
  321.   gotoxy(1,5); printf("%20s%15s%15s", "JUGADOR","PUNTAJE","RESULTADO\n\n");
  322.   int num_lin=1;
  323.   while(!feof(arch)) {
  324.       if(num_lin>15) {
  325.       num_lin=0;
  326.            textcolor(LIGHTRED); textbackground(BLACK); printf("\n\n\t"); cprintf("Continuar..."); getchar();
  327.         clrscr();
  328.         system("color 0a");
  329.   strcpy(titulo,"PUNTAJES RECIENTES");
  330. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  331.   gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";
  332.         gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");
  333.       }
  334.         printf("%20s%9d%15s\n",jugador.nombre,jugador.puntaje,jugador.resultado);
  335.       num_lin++;
  336.       fread(&jugador,sizeof(jugador),1,arch);
  337.   }
  338.   fclose(arch);
  339.   textcolor(LIGHTRED); textbackground(BLACK); printf("\n\n\t"); cprintf("Regresar al juego...");
  340.   getch();
  341.  
  342. /******************************************************************************/
  343.  
  344.    } // fin de while
  345.  
  346. }
  347.  
  348.  

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.  :(  :( 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.    :-\ )
76  Programación / Programación C/C++ / Re: [AYUDA] Entrada y Salida en C++ en: 3 Mayo 2012, 17:22 pm
El problema radica en la forma de tu declaración. Lo que pasa es que char es un tipo que representa a caracteres individuales como 'L', 'a', '5', etc. Si deseas guardar un conjunto de caracteres debes guardarlo en una cadena (arreglo de caracteres). La forma tradicional de hacerlo es:

char nombre[25];

Donde el número especificado entre los corchetes indica que puedes almacenar 24 caracteres. (El caracter faltante es para almacenar el caracter nulo que indica el final de la cadena). El problema de este tipo de declaración está en que debes especificar el número máximo de caracteres a almacenar. Por ejemplo, en la declaración que puse líneas arriba, si es que el nombre contiene más de 24 caracteres, entonces te verías forzosamente a cambiar la declaración tal vez así:

char nombre[50];

Así, podrás almacenar máximo 49 caracteres. Pero, no siempre vamos a saber cuántos caracteres necesitamos almacenar, por lo la mayoría ahora utiliza otro tipo de declaración y no la anterior (la que se usaba antiguamente en C)

La mejor forma, es como lo mencionó STANHMAL, incluyendo en las directivas del preprocesador el archivo de cabecera string:
    
 #include <string>

y luego en la declaración, usar la clase string así:

string nombre;

De esta manera, no tienes porqué preocuparte por la cantidad de caracteres de tu cadena, ya que tu variable se va adecuar por sí solo según la longitud de tu cadena. De esta manera se hace un uso más eficiente de la memoria.
77  Programación / Programación C/C++ / Re: ¿Me dan una manita en este juego simple en C++? en: 3 Mayo 2012, 15:58 pm
El error es el programa termina inesperadamente y el compilador me envía un mensaje diciendo lo siguiente:

Citar
Thread stopped
C:\JUEGO\Juego2.exe: Fault:
access violation at 0x2: read
of address 0x2

Espero que me ayuden!!!!
78  Programación / Programación C/C++ / Re: ¿Me dan una manita en este juego simple en C++? en: 2 Mayo 2012, 20:53 pm
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.


Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. #define LIM_DE 55
  9. #define LIM_IZ 5
  10. #define LIM_AR 6
  11. #define LIM_AB 21
  12.  
  13. int a[19][81];
  14.  
  15. void borde_mapa() {
  16.   char titulo1[]="LABERINTO Y ESQUIVA MINAS 2D";
  17.   gotoxy( (LIM_DE-LIM_IZ+1)/2 - strlen(titulo1)/2 ,LIM_AR-3 ); cout<<titulo1;
  18.   // borde superior
  19. gotoxy(LIM_IZ,LIM_AR-1); //------------------
  20.   for(int i=LIM_IZ; i<=LIM_DE; i++) {
  21.      cout<<"Ä";
  22.   }
  23.  
  24.   // borde inferior
  25.   gotoxy(LIM_IZ,LIM_AB+1); //------------------
  26.   for(int i=LIM_IZ; i<=LIM_DE; i++) {
  27.      cout<<"Ä";
  28.   }
  29.  
  30.   // borde izquierdo y derecho
  31.   for(int i=LIM_AR; i<=LIM_AB; i++) {
  32.   gotoxy(LIM_IZ-1,i); cout<<"³";
  33.      gotoxy(LIM_DE+1,i); cout<<"³";
  34.  
  35.   }
  36.  
  37.   // esquinas
  38.   gotoxy(LIM_IZ-1,LIM_AR-1); cout<<"Ú"; // izquierda superior
  39.   gotoxy(LIM_DE+1,LIM_AR-1); cout<<"¿"; // derecha superior
  40.   gotoxy(LIM_IZ-1,LIM_AB+1); cout<<"À"; // izquierda inferior
  41.   gotoxy(LIM_DE+1,LIM_AB+1); cout<<"Ù"; // derecha inferior
  42. }
  43.  
  44. void llena_minas() {
  45.   srand(time(NULL));
  46.  
  47.   for(int i=LIM_AR; i<=LIM_AB; i++)
  48.   for(int j=LIM_IZ; j<=LIM_DE; j++) {
  49.       a[i][j]=rand()%5;
  50.      }
  51. }
  52.  
  53.  
  54. void determina_posicion(char caracter, int *x, int *y, int *cont, int *ax, int *ay) {
  55.   int si=1;
  56.  
  57.   *ax=*x;
  58.   *ay=*y;
  59. switch(caracter) {
  60.         case 77:
  61.         if((*x)<LIM_DE) {
  62.         (*x)++;
  63.               (*cont)++;
  64.            }
  65.            else printf("\a");
  66.            break; // derecha
  67.  
  68.         case 80:
  69.         if((*y)<LIM_AB) {
  70.         (*y)++;
  71.               (*cont)++;
  72.            }
  73.            else printf("\a");
  74.            break; // abajo
  75.  
  76.         case 72:
  77.         if((*y)>LIM_AR) {
  78.             (*y)--;
  79.                (*cont)++;
  80.             }
  81.             else printf("\a");
  82.             break; // arriba
  83.  
  84.         case 75:
  85.         if((*x)>LIM_IZ) {
  86.            (*x)--;
  87.                (*cont)++;
  88.             }
  89.             else printf("\a");
  90.            break; // izquierda
  91.         default: si=0;
  92.      }
  93.  
  94.      if(si) {
  95.         textcolor(LIGHTRED); textbackground(BLUE); cprintf("0");
  96.       a[*ay][*ax]=1;
  97.      }
  98. }
  99.  
  100. void llena_pantalla() {
  101. for(int i=LIM_AR; i<=LIM_AB; i++) {
  102.   for(int j=LIM_IZ; j<=LIM_DE; j++) {
  103.       gotoxy(j,i);
  104.         if(a[i][j]!=1)
  105.         cout<<"²";
  106.         else cout<<"x";
  107.      }
  108.   }
  109.   borde_mapa();
  110.  
  111. }
  112.  
  113. void etiqueta(int x, int y, int *cont) {
  114. gotoxy(58,LIM_AR-1); cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿";
  115.   for(int i=LIM_AR; i<=LIM_AR+6; i++) {
  116.      gotoxy(58,i); cout<<"³";
  117.      gotoxy(78,i); cout<<"³";
  118.   }
  119. gotoxy(63,LIM_AR); printf("Posicion:");
  120.   gotoxy(63,LIM_AR+1); printf("--------");
  121.  
  122.   gotoxy(61,LIM_AR+2); printf("     Fila: %d", y);
  123.   gotoxy(61,LIM_AR+3); printf("  Columna: %d", x);
  124.   gotoxy(61,LIM_AR+4); printf("# movidas: %d", *cont);
  125.   gotoxy(58,LIM_AR+6); cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";
  126.  
  127.   // regresa el cursor a su sitio original
  128.   gotoxy(x,y);
  129. }
  130.  
  131. void posicion_inicial(int *x, int *y) {
  132. srand(time(NULL));
  133.   do {
  134.   *x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;
  135.   *y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;
  136.   }while(!(a[*y][*x]==0));
  137.   gotoxy(*x,*y);
  138. }
  139.  
  140. void posicion_meta(int *x, int *y) {
  141. do {
  142.   *x = rand()%(LIM_DE-LIM_IZ+1)+LIM_IZ;
  143.   *y = rand()%(LIM_AB-LIM_AR+1)+LIM_AR;
  144.   } while(!(a[*y][*x]==0));
  145.  
  146.   gotoxy(*x,*y);
  147.   textcolor(YELLOW); cprintf("*");
  148. }
  149.  
  150. void guarda_partida(int cont, char resultado[]) {
  151.   FILE *arch;
  152. clrscr();
  153.   system("color 0a");
  154.  
  155.   char titulo[]="GUARDAR PARTIDA";
  156. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  157.   gotoxy((80-strlen(titulo))/2,3); cout<<"--------------";
  158.  
  159.   struct Persona {
  160. char nombre[80];
  161.   int puntaje;
  162.   char resultado[80];
  163.   } jugador;
  164.  
  165.   gotoxy(5,5); cout<<"Nombres: "; gets(jugador.nombre);
  166.   jugador.puntaje=cont;
  167.   strcpy(jugador.resultado,resultado);
  168.  
  169.  
  170.   arch=fopen("Resultados","a+b");
  171.   fwrite(&jugador,sizeof(jugador),1,arch);
  172.   fclose(arch);
  173.  
  174.   // Para ver los puntajes recientes
  175.  
  176.   clrscr();
  177.   system("color 0a");
  178.  
  179.   strcpy(titulo,"PUNTAJES RECIENTES");
  180. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  181.   gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";
  182.  
  183.   arch=fopen("Resultados","rb");
  184.  
  185.   if(arch==NULL) {
  186.   cout<<"\n\n\n\t\tNO HAY JUGADORES REGISTRADOS!!!";
  187.      return;
  188.   }
  189.  
  190.   fread(&jugador,sizeof(jugador),1,arch);
  191.   gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");
  192.   int num_lin=1;
  193.   while(!feof(arch)) {
  194.      printf("%20s%9d%15s\n",jugador.nombre,jugador.puntaje,jugador.resultado);
  195.      if(num_lin>15) {
  196.       num_lin=0;
  197.       cout<<"\n\tContinuar..."; getchar();
  198.         clrscr();
  199.         system("color 0a");
  200.  
  201.   strcpy(titulo,"PUNTAJES RECIENTES");
  202. gotoxy((80-strlen(titulo))/2,2); cout<<titulo;
  203.   gotoxy((80-strlen(titulo))/2,3); cout<<"------------------";
  204.         gotoxy(1,5); printf("%20s%9s%15s", "JUGADOR","PUNTAJE","RESULTADO\n");
  205.      }
  206.      num_lin++;
  207.      fread(&jugador,sizeof(jugador),1,arch);
  208.   }
  209.  
  210.   fclose(arch);
  211. }
  212.  
  213. int main(void) {
  214.  
  215. char c;
  216.   //int resp1=0;
  217.   //int resp2=1;
  218.   int x=0, y=0,ay=0,ax=0;
  219.   int metax=0, metay=0;
  220.   int cont=0;
  221.   char resultado[50];
  222.   int reinicia=5,sigue=1;
  223.   _setcursortype(_SOLIDCURSOR);
  224.  
  225.   while(reinicia!=1) {
  226.   cont=0;
  227.   clrscr();
  228.      system("color 1a");
  229.      system("title MI LABERINTO LUIGY");
  230.   llena_minas();
  231.   llena_pantalla();
  232.      posicion_meta(&metax,&metay);
  233.   posicion_inicial(&x,&y);
  234.  
  235.      while(sigue) {
  236.       etiqueta(x,y,&cont);
  237.       c=getch();
  238.         determina_posicion(c,&x,&y,&cont,&ax,&ay);
  239.         gotoxy(x,y);
  240.         if( a[y][x]==1 ) {
  241.               //printf("\a\a\a");
  242.               clrscr();
  243.               system("color 4e");
  244.               gotoxy(25,15); cout<<"PERDISTE\a\a";
  245.               reinicia=1;  //  <====== PROBLEMA DETECTADO,
  246.               sigue=0;   //  <====== PROBLEMA DETECTADO,
  247.               break;
  248.         }
  249.  
  250.         if(x==metax && y==metay) {
  251.            clrscr();
  252.            system("color 1e");
  253.            gotoxy(25,15); cout<<"GANASTE\a\a\a";
  254.            break;
  255.         }
  256.  
  257.  
  258.      }
  259.  
  260.    }
  261.  
  262. }
  263.  

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;  
79  Programación / Programación C/C++ / ¿Me dan una manita en este juego simple en C++? en: 2 Mayo 2012, 18:57 pm
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:
80  Programación / Programación C/C++ / ¿Qué significa o qué hace el código siguiente? (es una curiosidad) en: 27 Abril 2012, 04:59 am
Este código lo he visto como una especie de firmas de varios usuarios y me ha generado la duda de saber si es que significa algo en particular  :rolleyes: :huh: :huh:¿?

Citar
(( 1 / 0 )) &> /dev/null || {
   echo -e "stderrrrrrrrrrrrrrrrrrr";
}
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines