PROYECTO FINAL!!

Hey todo llega a su final y este curso no es la excepción, y como proyecto final creamos una copia del famoso juego de Atari Mars Invaders!!

 

lo hicimos entre Miguel Briseño, Alan Martinez y yo, Guillermo Serrano.unnamed.jpg

fue un proyecto complejo pero divertido en el que aprendimos muchas cosas muy importantes.

pero aquí tenemos un vídeo de como funciona: https://youtu.be/wCx3FjJlTEA

y nuestro hermoso codigo:

#include<stdio.h>
#include <windows.h>
#include <conio.h>
#include<cstdlib>
#define arriba 72
#define abajo 80
#define derecha 77
#define izquierda 75
#include <list>
using namespace std;

void posicion(int x,int y){
HANDLE hCon; //con esta fncion se definen los
hCon = GetStdHandle(STD_OUTPUT_HANDLE); //valores de las coordenadas para que los
COORD dwPos; //objetos se desplacen por la pantalla
dwPos.X= x;
dwPos.Y = y;
SetConsoleCursorPosition(hCon,dwPos);
}

void ocultar(){
HANDLE hCon;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cur;
cur.dwSize = 50;
cur.bVisible = FALSE;
SetConsoleCursorInfo(hCon,&cur);

}

void limites (){
for (int i = 1 ; i<= 78; i++){ // en esta funcion se declaran los movimientos
posicion(i,3); // y los limites en los ejes “x” y “y”
printf (“%c”,240); // el numero 240 es el codigo ascii para el caracter “-”
} // al igual que el 219 para el caracter “█” que es un cuadro
for (int i = 1 ; i<= 78; i++){ // para dibujar los limites de donde se va a jugar.
posicion(i,34); // se llama a la funcion posicion () para dar las posiciones en la pantalla
printf (“%c”,240);
}
for (int i = 4 ; i<= 33; i++){
posicion(1,i);
printf (“%c”,219);

}
for (int i = 4 ; i<= 33; i++){
posicion(78,i);
printf (“%c”,219);

}
}
class NAVE{
public: int x,y,cor,vidas;
public :
NAVE(int _x,int _y,int _cor,int _vidas):x(_x), y(_y),cor(_cor),vidas(_vidas){}
int X (){return x;}
int Y (){return y;}
void dibujar();
void

maxresdefault.jpg


void mover();
void dibujar_cor();
void perder();
void corazon_red(){cor–;}

};
void NAVE :: dibujar(){
posicion(x,y);
printf(” %c”,30);
posicion(x,y+1);
printf(” %c%c%c”,47,0177,92);
posicion(x,y+2);
printf(” %c%c%c%c%c”,47,177,177,177,92);

}
void NAVE :: borrar(){
posicion(x,y);
printf(” “);
posicion(x,y+1);
printf(” “);
posicion(x,y+2);
printf(” “);

}

void NAVE ::mover(){

if (kbhit()){
char tecla = getch();
borrar();
if (tecla == ‘a’ && x>2)
x–;
if (tecla == ‘d’ &&x<72)
x++;
if (tecla == ‘w’ &&y>4)
y–;
if (tecla == ‘s’ &&y<31)
y++;
dibujar();
if (tecla ==’0′)
cor–;
dibujar_cor();
}
}

void NAVE ::dibujar_cor(){
posicion(5,1);
printf(“vidas %d”,vidas );
posicion(64,1);
printf(“salud” );
posicion(70,1);
printf(” “);
for (int i = 0;i <cor;i++){

posicion(70+i,1);
printf(“%c”,3);

}

}

void NAVE :: perder(){
if (cor ==0){

borrar();
posicion(x,y);
printf(“* * *”);
posicion(x,y+1);
printf(“* * *”);
posicion(x,y+2);
printf(“* * *”);
Sleep(600);
vidas–;
cor = 3;
dibujar_cor();
borrar();
dibujar();
// printf(“* * *”);
// posicion(x,y-1);
// printf(“* * *”);
// posicion(x,y-2);
// printf(“* * *”);
// borrar();
// Sleep(200);
// alto = 1;
// vidas –;
}
}

class malos {
int x,y;

public:
malos(int _x,int _y):x(_x), y(_y){}
void pintar();
void mover();
void colision (class NAVE &N);

};
void malos :: pintar(){
posicion(x,y);
printf(“%c” ,127);
}
void malos :: mover(){
posicion(x,y);
printf(” “);
y++;
if (y > 30){
x = rand()%71 +4;
y = 4;

}
pintar();
}
void malos::colision(class NAVE &N){
if (x>= N.X() && x< N.X() +5&& y>= N.Y() && y< N.Y()+2){
N.corazon_red();
N.dibujar();
N.dibujar_cor();
printf(” “);
y++;
if (y > 30){
x = rand()%71 +4;
y = 4;
}
}
}

class disparo{
int x,y;
public :
disparo(int _x,int _y): x(_x),y(_y){}
void mover();
};

void disparo :: mover(){
posicion(x,y);
printf(” “);
if (y>4){
y–;
printf (“*”);
}
}

int main(){

ocultar();
limites();
NAVE N(6,6,3,3);
N.borrar();
N.dibujar();
N.x++;
N.dibujar_cor();
int vida=N.vidas;
malos da(3,4);
malos ma(15,4);
malos ta(22,4);
malos fa(8,4);

list<disparo*> d;
bool gameover = false;
while (vida>0){
N.perder();
N.mover();
ma.mover();
ma.colision(N);
da.mover();
da.colision(N);
ta.mover();
ta.colision(N);
fa.mover();
fa.colision(N);
if (kbhit()){
char tecla = getch();

if(tecla == ‘k’){
d.push_back(new disparo(N.X()+2,N.Y()+2));
}

}

vida=N.vidas;

Sleep(70);

}

N.borrar();
printf(” n”);
printf(“********** ********** *** *** **********n”);
printf(“********** ********** **** **** **********n”);
printf(“** ** ** ***** ***** **n”);
printf(“** **** ********** ** ****** ** *******n”);
printf(“** **** ********** ** **** ** *******n”);
printf(“** ** ** ** ** ** **n”);
printf(“********** ** ** ** ** **********n”);
printf(“********** ** ** ** ** **********n”);
printf(” n”);
printf(“********** *** *** ********** **********n”);
printf(“********** *** *** ********** **********n”);
printf(“** ** *** *** ** *** ***n”);
printf(“** ** *** *** ******* **********n”);
printf(“** ** *** *** ******* **********n”);
printf(“** ** *** *** ** *** ****n”);
printf(“********** ****** ********** *** ****n”);
printf(“********** **** ********** *** ****n”);
return 0;
}

sin mas que mencionar solo puedo decir que este fue un curso maravilloso y que esto es todo amigos!!

maxresdefault.jpg

 

CC BY-SA 4.0 PROYECTO FINAL!! by guillermoserrano97 is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.