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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con un juego.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con un juego.  (Leído 1,694 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Problema con un juego.
« en: 6 Diciembre 2013, 04:22 am »

Bueno estaba aburrido y me puse a programar un juego el cual no pensé que me llegaría a dar problemas por lo sencillo que sería, lastimosamente subestimé la cuestión xdd, bueno el caso es que, trato de hacer de que la bala al impactar con los bloques los bloques desaparezcan, así es, simplemente eso, es claramente una tontería, pero bueno acá les dejaré el código para que lo ojeen:

-- EDIT --
La bala cuando toca la matriz, parece que los bloques desaparecen pero en realidad no, la matriz continúa llena, y es porque a medida que avanza la bala; dónde estaba situada anteriormente programé para que pintara un espacio en blanco, pero en realidad el elemento de la matriz sigue ahí, en pocas palabras, jamás se limpia el buffer en ese programita.

Código
  1. #include <windows.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4.  
  5. void gotoxy(short int x, short int y);
  6. void pintar_avion(char avion[3][6], int x, int y);
  7. void borrar_avion(int x, int y);
  8. inline void pintar_bala(char bala,int x, int y);
  9. inline void borrar_bala(int x, int y);
  10. void pintar_bloques(char bloques[10][41]);
  11.  
  12. int main()
  13. {
  14.    //Dibujo del avión:
  15.    char avion[3][6] = {{' ',' ','*',' ',' ',0},
  16.                        {' ','*','*','*',' ',0},
  17.                        {'*','*','*','*','*',0}};
  18.  
  19.  
  20.    char bloques[10][41];
  21.    //Búcle que lo que hace es rellenar la matriz anterior; todos sus elementos le colocará el caractér '*':
  22.    for(int f = 0; f < 10; f++) {
  23.        for(int c = 0; c < 40; c++) {
  24.            bloques[f][c] = '*';
  25.        }
  26.    }
  27.  
  28.    //Dibujo de la bala:
  29.    char bala = char(2);
  30.  
  31.    //Coordenadas del avión:
  32.    int cX = 38, cY = 20;
  33.  
  34.    //Variable que almacenará la tecla presionada por el usuario:
  35.    char tecla = '\0';
  36.  
  37.    //Coordenadas de la bala:
  38.    int bX = cX, bY = cY;
  39.  
  40.    //Variable que permitirá disparar una bala a la vez:
  41.    bool disparo = false;
  42.  
  43.    pintar_avion(avion,cX,cY);
  44.    pintar_bloques(bloques);
  45.  
  46.    while(1) {
  47.        if(kbhit()) {
  48.            tecla = getch();
  49.        }
  50.  
  51.        if((tecla == 'a' || tecla == 'A') && cX > 0) {
  52.            borrar_avion(cX, cY);
  53.            cX -= 1;
  54.            pintar_avion(avion,cX,cY);
  55.        }
  56.        else if((tecla == 'd' || tecla == 'D') && cX < 74) {
  57.            borrar_avion(cX, cY);
  58.            cX += 1;
  59.            pintar_avion(avion,cX,cY);
  60.        }
  61.        else if((tecla == 'w' || tecla == 'W') && !disparo) {
  62.            disparo = true;
  63.            bY = (cY - 1);
  64.            bX = (cX + 2);
  65.        }
  66.  
  67.        if(disparo) {
  68.            borrar_bala(bX, bY);
  69.            bY -= 1;
  70.            pintar_bala(bala,bX,bY);
  71.            if(bY == 1) {
  72.                borrar_bala(bX,bY);
  73.                disparo = false;
  74.                bY = cY;
  75.            }
  76.        }
  77.  
  78.        Sleep(20);
  79.  
  80.        tecla = '\0';
  81.    }
  82.  
  83.    system("pause>nul");
  84.  
  85.    return 0;
  86. }
  87.  
  88. void gotoxy(short int x, short int y) {
  89.    HANDLE identificador;
  90.    COORD coordenadas = {x , y};
  91.    identificador = GetStdHandle(STD_OUTPUT_HANDLE);
  92.    SetConsoleCursorPosition(identificador, coordenadas);
  93. }
  94.  
  95. void pintar_avion(char avion[3][6], int x, int y) {
  96.    for(int f = 0; f < 3; f++) {
  97.        for(int c = 0; c < 5; c++) {
  98.            gotoxy((x + c),(y + f));
  99.            printf("%c",avion[f][c]);
  100.        }
  101.    }
  102. }
  103.  
  104. void borrar_avion(int x, int y) {
  105.    char borrar[6] = {' ',' ',' ',' ',' ',0};
  106.    for(int h = 0; h < 3; h++) {
  107.        gotoxy(x,(y + h));
  108.        printf("%s",borrar);
  109.    }
  110. }
  111.  
  112. inline void pintar_bala(char bala,int x, int y) {
  113.    gotoxy(x,y);
  114.    printf("%c",bala);
  115. }
  116.  
  117. inline void borrar_bala(int x, int y) {
  118.    gotoxy(x,y);
  119.    printf(" ");
  120. }
  121.  
  122. void pintar_bloques(char bloques[10][41]) {
  123.    for(int f = 0; f < 10; f++) {
  124.        gotoxy(20,(1 + f));
  125.        for(int c = 0; c < 40; c++) {
  126.            printf("%c",bloques[f][c]);
  127.        }
  128.    }
  129. }
  130.  


« Última modificación: 6 Diciembre 2013, 04:27 am por Zodiak98 » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Problema con un juego.
« Respuesta #1 en: 6 Diciembre 2013, 13:34 pm »

El problema esque no detectas la colisión con los bloques. Tienes que detectar eso y cuando encuentres la colisión con un bloque lo borras de su matriz y pones un espacio en blanco en su lugar.

Lo mejor esque tu matriz abarque el campo entero, rellena los espacios vacíos con espacios.


En línea

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

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
juego problema
Juegos y Consolas
XmefistoX 4 2,317 Último mensaje 3 Enero 2005, 10:18 am
por zaerik
Problema con un juego
Juegos y Consolas
ch3ck3r 1 1,812 Último mensaje 25 Junio 2005, 18:24 pm
por DJ46
Problema Con Juego
Juegos y Consolas
skae_8 2 2,248 Último mensaje 25 Septiembre 2005, 23:47 pm
por skae_8
PROBLEMA CON EL JUEGO GUM
Juegos y Consolas
punzon 0 2,121 Último mensaje 1 Enero 2006, 23:05 pm
por punzon
problema con juego
Juegos y Consolas
yoryo(rus)15%% 1 1,474 Último mensaje 26 Febrero 2006, 01:19 am
por skapunky
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines