
Juego de naves
C/Visual C
Publicado el 20 de Marzo del 2018 por Jorge
6.318 visualizaciones desde el 20 de Marzo del 2018
Es un juego donde manejas una nave y evitas los asteroides.
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
#include <list>
using namespace std;
void gotoxy(int x, int y){
HANDLE rWin;
rWin = GetStdHandle (STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X=x;
dwPos.Y=y;
SetConsoleCursorPosition(rWin, dwPos);
}
void OcultarCursor(){
HANDLE rWin;
rWin = GetStdHandle (STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO rin;
rin.dwSize = 20;
rin.bVisible = FALSE;
SetConsoleCursorInfo(rWin,&rin);
}
void limites(){
for (int i=3; i<77; i++){
gotoxy(i,2); printf("%c",205);
gotoxy(i,32); printf("%c",205);
}
for (int j=3; j<32; j++){
gotoxy(3,j); printf("%c",186);
gotoxy(76,j); printf("%c",186);
}
gotoxy(3,2); printf("%c",201);
gotoxy(76,32); printf("%c",188);
gotoxy(76,2); printf("%c",187);
gotoxy(3,32); printf("%c",200);
}
class NAVE{
int x,y;
int corazones;
int vidas;
public:
NAVE(int _x, int _y, int _corazones, int _vidas): x(_x),y(_y),corazones(_corazones), vidas(_vidas){}
int X(){return x;}
int Y() {return y;}
void COR() {corazones--;} //funcion de decrecer los corazones
void forma(); //declaracion de funciones
void borrar();
void mover();
void heridas();
void muerte();
}; //despues de class poner siempre ;
void NAVE::forma(){//dibujo de la nave
gotoxy(x,y); printf(" %c%c%c ", 47,205,92);
gotoxy(x,y+1); printf("%c%c %c%c", 47,238,238,92);
gotoxy(x,y+2); printf("%c%c%c%c%c", 200,62,178,60,188);
}
void NAVE::borrar(){//funcion para borrar el asterisco en el momento en el que está, para evitar dejar rastro
gotoxy(x,y); printf(" ");
gotoxy(x,y+1); printf(" ");
gotoxy(x,y+2); printf(" ");
}
void NAVE::mover(){ //funcion para mover la nave
if (kbhit()){ //funcion de windows para evaluar si se presiona tecla
char tecla = getch(); //funcion para guardar la letra presionada
borrar(); //alusion a void NAVE::borrar
if(tecla == 'a' && x>4) x-=2; //bucle if para detectar tecla presionada y actuar en consecuencia
if(tecla == 'd' && x+7<77) x+=2; //se le ponen maximos y minimos para que no sobrepase limites
if(tecla == 'w' && y>4) y-=2; //el +7 y +3 son para que cuente a partir de lso valores mas a la derecha e izquierda
if(tecla == 's' && y+3<31) y+=2;
forma(); //alusion a void NAVE:forma
heridas(); //imprime las heridas en el momento del primer movimiento
}
}
void NAVE::heridas(){
gotoxy(50,1); printf("Vidas %d",vidas);
gotoxy(61,1); printf("Heridas");
gotoxy(69,1); printf(" ");
for (int i=0; i<corazones; i++){
gotoxy(69+i,1); printf("%c",3);
}
}
void NAVE::muerte(){
if (corazones == 0){
borrar();
gotoxy (x,y); printf(" * ");
gotoxy (x,y+1); printf("* *");
gotoxy (x,y+2); printf(" * ");
Sleep(200);
borrar();
gotoxy (x,y); printf("* * *");
gotoxy (x,y+1); printf(" * * ");
gotoxy (x,y+2); printf("* * *");
Sleep(200);
borrar();
gotoxy (x,y); printf(" * ");
gotoxy (x,y+1); printf(" * ");
gotoxy (x,y+2); printf(" * ");
Sleep(200);
borrar();
gotoxy (x,y); printf(" ");
gotoxy (x,y+1); printf(" * ");
gotoxy (x,y+2); printf(" ");
Sleep(200);
borrar();
vidas--;
corazones=3;
heridas();
forma();
}
}
class AST{
int x,y;
public:
AST(int _x, int _y):x(_x),y(_y){}
void forma();
void mover();
void choque(class NAVE &nr);
};
void AST::forma(){
gotoxy(x,y); printf("%c",169);
}
void AST::mover(){
gotoxy(x,y); printf(" ");
y++;
if (y>31){
x = rand()%72 + 4;
y = 4;
}
forma();
}
void AST::choque(class NAVE &nr){//funcion para el choque de asteroides
if( x >= nr.X() && x < nr.X()+5 && y >= nr.Y() && y <= nr.Y()+2){ //bucle para el choque en toda la superficie de la nave
nr.COR();
nr.forma();
nr.heridas();
x = rand()%71 + 4;
y = 3;
}
}
class BALA{
int x, y;
public:
BALA(int _x, int _y): x(_x),y(_y) {}
int x (), { return x};
int y (), { return y};
};
Comentarios sobre la versión: 1.0 (1)
5 16 C:\Documents and Settings\xve\Mis documentos\file.c [Error] list: No such file or directory
Nos puedes comentar como solucionarlo? o me falta algún archivo?