|
Mostrar Mensajes
|
Páginas: [1]
|
2
|
Programación / Programación C/C++ / Re: problema con el game en dev c++
|
en: 21 Marzo 2014, 01:19 am
|
intente modificar el programa me explicaban, pero no pude char nave[][]= { { " *** " }, { " ** * " }, { " *** " } };
pero no me sale lo inicie todo de nuevo pero de ahi me marca error, para ser sincera, no se usar aun la matriz :s, tal vez por eso no me sale... yo se que el mio que hize es muy repetido o.ó y complicado, que hasta yo me en redo, pero de que funciona si, pero aqui les dejo esto: aquí es cuando se termina el juego y se para ahi los anroides o.o esa es mi duda, como hacer para que no se quede ahí eso me sale con mi programa que tengo yo #include <windows.h> #include <iostream> #include <stdio.h> #include <conio.h> #include <stdlib.h> #define ARR 72 #define ABA 80 #define IZQ 75 #define DER 77 char nave_l1[]={' ','*','*', ' ',' ',' ',' ',0}; // dibujo de la nave char nave_l2[]={' ','*','*', '*',' ',' ',' ',0}; char nave_l3[]={' ','*','*', ' ',' ',' ',' ',0}; char explosion_l1[]={' ',' ','*','*',' ',' ',' ',0}; char explosion_l2[]={' ','*','*','*','*',' ',' ',0}; //explosion de la nave char explosion_l3[]={' ',' ','*','*',' ',' ',' ',0}; char explosion_r1[]={'*',' ','*','*',' ','*',' ',0}; char explosion_r2[]={' ','*','*','*','*',' ',' ',0}; //la segunda explosion char explosion_r3[]={'*',' ','*','*',' ','*',' ',0}; char borrar_nave[]={' ',' ',' ',' ',' ',' ',' ',0}; // cuando se borra //numero de vidas int Num_vidas = 3; int Corazones = 3; //cordenandas de la nave int ix = 1; int iy = 19; //cordenandas de los asteroides o diamantes int y = 8, x = 45; int yy = 18 , xx = 71; int xl = 58 , yl = 6; int xr = 70, yr = 9; int i,v; //para cambiar de nivel del juego int repeticion = 0, nivel =1; bool condicion = false; //aplicacion de libreria de windows void gotoxy(int x, int y) { HANDLE hCon; COORD dwPos; dwPos.X = x; dwPos.Y = y; hCon = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hCon,dwPos); } //nombrar las vidas void vidas(int vi) { gotoxy (2,1); printf("VIDAS %d",vi );} void Barra_salud(int n) { gotoxy(72,1);printf(" "); gotoxy(73,1);printf(" "); gotoxy(74,1);printf(" "); for(v = 0 ; v < n ; v++) { gotoxy(72+v,1); } } //explosion de la nave al ser atacado por los asteroides... void Explosion(void) { gotoxy (ix ,iy ); puts(explosion_l1 ); gotoxy (ix ,iy +1); puts(explosion_l2 ); gotoxy (ix ,iy +2); puts(explosion_l3 ); Sleep(380); gotoxy (ix ,iy ); puts(explosion_r1 ); gotoxy (ix ,iy +1); puts(explosion_r2 ); gotoxy (ix ,iy +2); puts(explosion_r3 ); Sleep(380); gotoxy (ix ,iy ); puts(nave_l1 ); gotoxy (ix ,iy +1); puts(nave_l2 ); gotoxy (ix ,iy +2); puts(nave_l3 ); } //el inicio del juego con los asteroides void jugar(void) { //rutina de los diamantes gotoxy (xx ,yy ); printf("%c",4); gotoxy (xl ,yl ); printf("%c",4); gotoxy (xr ,yr ); printf("%c",4); Sleep(90); //%90 es el tiempo que se usa... if (y > 20) { y = 6; //la condicion de "cambio de nivel de game" if( x== 6) condicion =false; } if(yy >20) { yy = 6; } if(y1 >20) { yl = 6; } if(yr >20) { yr = 6; } //rutina de mover la nave if (kbhit()) { unsigned char tecla = getch(); switch (tecla) { case ARR: if(iy > 4) { gotoxy(ix,iy);puts(borrar_nave); gotoxy(ix,iy+1);puts(borrar_nave); gotoxy(ix,iy+2);puts(borrar_nave); iy -=2;//iy = iy -2; gotoxy(ix,iy);puts(nave_l1); gotoxy(ix,iy+1);puts(nave_l2); gotoxy(ix,iy+2);puts(nave_l3); } break; case ABA: if( iy <20) { gotoxy(ix,iy);puts(borrar_nave); gotoxy(ix,iy+1);puts(borrar_nave); gotoxy(ix,iy+2);puts(borrar_nave); iy +=2;//iy = iy +2; gotoxy(ix,iy);puts(nave_l1); gotoxy(ix,iy+1);puts(nave_l2); gotoxy(ix,iy+2);puts(nave_l3); } break; case IZQ: if(ix > 4) { gotoxy(ix,iy);puts(borrar_nave); gotoxy(ix,iy+1);puts(borrar_nave); gotoxy(ix,iy+2);puts(borrar_nave); ix -=2;//ix = ix -2; gotoxy(ix,iy);puts(nave_l1); gotoxy(ix,iy+1);puts(nave_l2); gotoxy(ix,iy+2);puts(nave_l3); } break; case DER: if(ix <20) { gotoxy(ix,iy);puts(borrar_nave); gotoxy(ix,iy+1);puts(borrar_nave); gotoxy(ix,iy+2);puts(borrar_nave); ix +=2;//ix = ix +2; gotoxy(ix,iy);puts(nave_l1); gotoxy(ix,iy+1);puts(nave_l2); gotoxy(ix,iy+2);puts(nave_l3); } break; } //fin del switch }// Fin if //rutina para golpes de asteroides if(( x > ix && x<ix + 6 && y == iy-1)|| (x > ix && xx<ix + 6 && yy == iy-1) || (xl > ix && xx < ix + 6 && yl == iy-1)|| (xr > ix && xr<ix + 6 && yr == iy-1)) { //donde se va disminuyendo las vidas Corazones --; Barra_salud(Corazones); } gotoxy(ix,iy);puts(nave_l1); gotoxy(ix,iy+1);puts(nave_l2); gotoxy(ix,iy+2);puts(nave_l3); //numero de vidas restantes if(!Corazones) { Num_vidas--; vidas(Num_vidas); Explosion(); Corazones =3; Barra_salud(Corazones); } //rutina para cambio de nivel if(!condicion) { repeticion --; //condicionc = true; } if(repeticion == 4) { nivel++; gotoxy (35,1); printf("NIVEL %i",nivel ); gotoxy (ix ,iy ); puts(borrar_nave ); gotoxy (ix ,iy ); puts(borrar_nave ); gotoxy (ix ,iy ); puts(borrar_nave ); iy -= 2; //iy = iy - 2; gotoxy (ix ,iy ); puts(nave_l1 ); gotoxy (ix ,iy ); puts(nave_l2 ); gotoxy (ix ,iy ); puts(nave_l3 ); repeticion = 0; } //inicio de los asteroides de derecha a izquieda x--; xx--; xl--; xr--; } int main () { vidas(Num_vidas); Barra_salud(Corazones); //cambio de nivel gotoxy (35,1); printf("NIVEL %i",nivel ); gotoxy(ix,iy);puts(nave_l1); gotoxy(ix,iy+1);puts(nave_l2); gotoxy(ix,iy+2);puts(nave_l3); //ciclo donde al llegar al 6 se termina el juego while(Num_vidas > 0 && nivel <= 5 ) jugar(); gotoxy (22,16); printf("Game Over"); //tiempo lo que dura el juego Sleep(120); return 0; }
solucione el problema de la nave que se duplicaba, pero ahora no cambia de nivel como muestra la imagen 2 y esos son mis unicos problemas que no llego a solucionar...
|
|
|
3
|
Programación / Programación C/C++ / Re: problema con el game en dev c++
|
en: 20 Marzo 2014, 21:39 pm
|
//aqui segun es cuando muestra las vidas de la ave en la parte de arriba
void vidas(int vi) { gotoxy(2,1); printf("VIDAS %d",vi); }
void Barra_salud(int n) { gotoxy(72,1);printf(" "); gotoxy(73,1);printf(" "); gotoxy(74,1);printf(" "); for(v = 0 ; v < n ; v++) { gotoxy(72+v,1); printf("%c",3); } }
pero mi problema es cuando los asteroides o"diamantes toca la parte izquierda se queda ahí y la nave o ave se duplica :(no se como colocar una imagen para el ejemplo):
|
|
|
4
|
Programación / Programación C/C++ / problema con el game en dev c++
|
en: 20 Marzo 2014, 10:24 am
|
tengo este programa c++, pero a la hora de ejecutar la parte izquierda se queda atorado los "diamantes" ya busque en ciclo y modificando y no encuentro la solución..., tambien busque como usar la tecla spce en ascci para quitar opción de arriba y abajo, seria de gran ayuda si me pudieran ayudar a resolver y decir cual es mi error... !!
#include <windows.h> #include <iostream> #include <stdio.h> #include <conio.h> #include <stdlib.h>
#define ARR 72 #define ABA 80 #define IZQ 75 #define DER 77
char ave_l1[]={' ','*','*', '*',' ',' ',' ',0}; // dibujo de la nave char ave_l2[]={' ','*','*', ' ','*',' ',' ',0}; char ave_l3[]={' ','*','*', '*',' ',' ',' ',0};
char explocion_l1[]={' ',' ','*','*',' ',' ',' ',0}; char explocion_l2[]={' ','*','*','*','*',' ',' ',0}; //explocion de la nave char explocion_l3[]={' ',' ','*','*',' ',' ',' ',0};
char explocion_r1[]={'*',' ','*','*',' ','*',' ',0}; char explocion_r2[]={' ','*','*','*','*',' ',' ',0}; //la segunda explocion char explocion_r3[]={'*',' ','*','*',' ','*',' ',0};
char borrar_ave[]={' ',' ',' ',' ',' ',' ',' ',0}; // cuando se borra
int Num_vidas = 3; int Corazones = 3; int ix = 1; int iy = 19;
int y = 8, x = 12; int yy = 70 , xx = 1; int x1 = 58 , y1 = 6; int x2 = 17, y2 = 9;
int i,v;
/*para cambiar de nivel*/ int repeticion = 0, nivel =1; bool condicion = false;
void gotoxy(int x, int y) { HANDLE hCon; COORD dwPos; dwPos.X = x; dwPos.Y = y; hCon = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hCon,dwPos); }
void vidas(int vi) { gotoxy(2,1); printf("VIDAS %d",vi); }
void Barra_salud(int n) { gotoxy(72,1);printf(" "); gotoxy(73,1);printf(" "); gotoxy(74,1);printf(" "); for(v = 0 ; v < n ; v++) { gotoxy(72+v,1); printf("%c",3); } }
void Explocion(void) { gotoxy(ix,iy); puts(explocion_l1); gotoxy(ix,iy+1); puts(explocion_l2); gotoxy(ix,iy+2); puts(explocion_l3); Sleep(380); gotoxy(ix,iy); puts(explocion_r1); gotoxy(ix,iy+1); puts(explocion_r2); gotoxy(ix,iy+2); puts(explocion_r3); Sleep(380); gotoxy(ix,iy); puts(ave_l1); gotoxy(ix,iy+1); puts(ave_l2); gotoxy(ix,iy+2); puts(ave_l3); }
void jugar(void) { //rutina de los diamantes gotoxy(x,y); printf("%c",4); gotoxy(xx,yy); printf("%c",4); gotoxy(x1,y1); printf("%c",4); gotoxy(x2,y2); printf("%c",4); Sleep(80); gotoxy(x,y); printf(" "); gotoxy(xx,yy); printf(" "); gotoxy(x1,y1); printf(" "); gotoxy(x2,y2); printf(" "); if (x > 20) { x = 2; y = (rand() % 80) + 6; if( x== 2); condicion =false; } if(xx >20) { xx = 2; yy = (rand() % 90) + 6; } if(x1 >20) { x1 = 2; y1 = (rand() % 90) + 6; } if(x2 >20) { x2 = 2; y2 = (rand() % 90) + 6; } //rutina de mover la ave if (kbhit()) { unsigned char tecla = getch(); switch (tecla) { case ARR: if(iy > 4) { gotoxy(ix,iy);puts(borrar_ave); gotoxy(ix,iy+1);puts(borrar_ave); gotoxy(ix,iy+2);puts(borrar_ave); iy -=2;//iy = iy -2; gotoxy(ix,iy);puts(ave_l1); gotoxy(ix,iy+1);puts(ave_l2); gotoxy(ix,iy+2);puts(ave_l3); } break; case ABA: if( iy <70) { gotoxy(ix,iy);puts(borrar_ave); gotoxy(ix,iy+1);puts(borrar_ave); gotoxy(ix,iy+2);puts(borrar_ave); iy +=2;//iy = iy +2; gotoxy(ix,iy);puts(ave_l1); gotoxy(ix,iy+1);puts(ave_l2); gotoxy(ix,iy+2);puts(ave_l3); } break; case IZQ: if(ix > 4) { gotoxy(ix,iy);puts(borrar_ave); gotoxy(ix,iy+1);puts(borrar_ave); gotoxy(ix,iy+2);puts(borrar_ave); ix -=2;//iy = iy -2; gotoxy(ix,iy);puts(ave_l1); gotoxy(ix,iy+1);puts(ave_l2); gotoxy(ix,iy+2);puts(ave_l3); } break; case DER: if(ix <70) { gotoxy(ix,iy);puts(borrar_ave); gotoxy(ix,iy+1);puts(borrar_ave); gotoxy(ix,iy+2);puts(borrar_ave); ix +=2;//iy = iy -2; gotoxy(ix,iy);puts(ave_l1); gotoxy(ix,iy+1);puts(ave_l2); gotoxy(ix,iy+2);puts(ave_l3); } break; } //fin del switch }// Fin if //rutina para golpes de metoritos if(( x > ix && x<ix - 6 && y == iy-1)|| (x > ix && xx<ix - 6 && yy == iy-1) || (x1 > ix && xx<ix - 6 && y1 == iy-1)|| (x2 > ix && x2<ix - 6 && y2 == iy-1)) { Corazones --; Barra_salud(Corazones); printf("\a"); } gotoxy(ix,iy);puts(ave_l1); gotoxy(ix,iy+1);puts(ave_l2); gotoxy(ix,iy+2);puts(ave_l3); if(!Corazones) { Num_vidas--; vidas(Num_vidas); Explocion(); Corazones =3; Barra_salud(Corazones); } /*rutina para cambio de nivel*/ if(!condicion) { repeticion ++; //condicionc = true; } if(repeticion == 10) { nivel++; gotoxy(35,1); printf("NIVEL %i",nivel); gotoxy(ix,iy); puts(borrar_ave); gotoxy(ix,iy); puts(borrar_ave); gotoxy(ix,iy); puts(borrar_ave); iy -= 2; //iy = iy - 2; gotoxy(ix,iy); puts(ave_l1); gotoxy(ix,iy); puts(ave_l2); gotoxy(ix,iy); puts(ave_l3); repeticion = 0; } x--; xx--; x1--; x2--;
}
int main () { vidas(Num_vidas); Barra_salud(Corazones); gotoxy(35,1); printf("NIVEL %i",nivel); gotoxy(ix,iy);puts(ave_l1); gotoxy(ix,iy+1);puts(ave_l2); gotoxy(ix,iy+2);puts(ave_l3); while(Num_vidas > 0 && nivel <= 5 ) jugar(); gotoxy(22,16); printf("Game Over"); Sleep(120); getch(); return 0; }
|
|
|
|
|
|
|