El avión se mueve con las teclas: 'W', 'A', 'S' y 'D'; También se mueve con las flechas del teclado.
Acá está lo que llevo:
Código
#include <iostream> #include <windows.h> #include <conio.h> #include <time.h> using namespace std; void gotoxy(int x, int y); void pintar_avion(); void pintar_asteroides(); #define FLECHA_DERECHA 77 #define FLECHA_IZQUIERDA 75 #define FLECHA_ARRIBA 72 #define FLECHA_ABAJO 80 //Avión que se pintara cuando se desplace hacia la derecha char avion_x1_1[5] = {'-',' ',' ',' ',0}; char avion_x1_2[5] = {'*','-',' ',' ',0}; char avion_x1_3[5] = {'*','*','-',' ',0}; char avion_x1_4[5] = {'*','*','*','*',0}; char avion_x1_5[5] = {'*','*','-',' ',0}; char avion_x1_6[5] = {'*','-',' ',' ',0}; char avion_x1_7[5] = {'-',' ',' ',' ',0}; //Avión que se pintara cuando se desplace hacia la izquierda char avion_x2_1[5] = {' ',' ',' ','-',0}; char avion_x2_2[5] = {' ',' ','-','*',0}; char avion_x2_3[5] = {' ','-','*','*',0}; char avion_x2_4[5] = {'*','*','*','*',0}; char avion_x2_5[5] = {' ','-','*','*',0}; char avion_x2_6[5] = {' ',' ','-','*',0}; char avion_x2_7[5] = {' ',' ',' ','-',0}; //Avión que se pintara cuando se desplace hacia abajo char avion_y1_1[8] = {'|','*','*','*','*','*','|',0}; char avion_y1_2[8] = {' ','|','*','*','*','|',' ',0}; char avion_y1_3[8] = {' ',' ','|','*','|',' ',' ',0}; char avion_y1_4[8] = {' ',' ',' ','*',' ',' ',' ',0}; //Avión que se pintara cuando se desplace hacia arriba char avion_y2_1[8] = {' ',' ',' ','*',' ',' ',' ',0}; char avion_y2_2[8] = {' ',' ','|','*','|',' ',' ',0}; char avion_y2_3[8] = {' ','|','*','*','*','|',' ',0}; char avion_y2_4[8] = {'|','*','*','*','*','*','|',0}; //Coordenadas del avión int cX = 37 , cY = 20; //Coordenadas de los asteroides int xA1 , yA1; int xA2 , yA2; int xA3 , yA3; int xA4 , yA4; int xA5 , yA5; //Asteroide char Asteroide = char(2); //Variable que determinara el cambio de posición del avión // 0 = Arriba // 1 = Abajo // 2 = Izquierda // 3 = Derecha typedef unsigned short int USINT; USINT cPosition = 0; int main() { srand(time(NULL)); xA1 = (rand() % 76); xA2 = (rand() % 76); xA3 = (rand() % 76); xA4 = (rand() % 76); xA5 = (rand() % 76); yA1 = (rand() % 19); yA2 = (rand() % 19); yA3 = (rand() % 19); yA4 = (rand() % 19); yA5 = (rand() % 19); pintar_asteroides(); pintar_avion(); char tecla = getch(); do { yA1++; yA2++; yA3++; yA4++; yA5++; if(yA1 == 25) { yA1 = 0; xA1 = (rand() % 76); } if(yA2 == 25) { yA2 = 0; xA2 = (rand() % 76); } if(yA3 == 25) { yA3 = 0; xA3 = (rand() % 76); } if(yA4 == 25) { yA4 = 0; xA4 = (rand() % 76); } if(yA5 == 25) { yA5 = 0; xA5 = (rand() % 76); } if((tecla == 'a' || tecla == 'A' || tecla == FLECHA_IZQUIERDA) && cX > 2) { cX -= 2; cPosition = 2; } else if((tecla == 'w' || tecla == 'W' || tecla == FLECHA_ARRIBA) && cY > 0) { cY -= 2; cPosition = 0; } else if((tecla == 's' || tecla == 'S' || tecla == FLECHA_ABAJO) && cY < 22) { cY += 2; cPosition = 1; } else if((tecla == 'd' || tecla == 'D' || tecla == FLECHA_DERECHA) && cX < 72) { cX += 2; cPosition = 3; } system("cls"); pintar_avion(); pintar_asteroides(); tecla = getch(); }while(1); system("pause>nul"); return 0; } void pintar_avion() { // 0 = Arriba // 1 = Abajo // 2 = Izquierda // 3 = Derecha if(cPosition == 0) { gotoxy(cX,cY); cout << avion_y2_1 << endl; gotoxy(cX,(cY + 1)); cout << avion_y2_2 << endl; gotoxy(cX , (cY + 2)); cout << avion_y2_3 << endl; gotoxy(cX , (cY + 3)); cout << avion_y2_4 << endl; } else if(cPosition == 1) { gotoxy(cX,cY); cout << avion_y1_1 << endl; gotoxy(cX,(cY + 1)); cout << avion_y1_2 << endl; gotoxy(cX , (cY + 2)); cout << avion_y1_3 << endl; gotoxy(cX , (cY + 3)); cout << avion_y1_4 << endl; } else if(cPosition == 2) { gotoxy(cX,cY); cout << avion_x2_1 << endl; gotoxy(cX,(cY + 1)); cout << avion_x2_2 << endl; gotoxy(cX , (cY + 2)); cout << avion_x2_3 << endl; gotoxy(cX , (cY + 3)); cout << avion_x2_4 << endl; gotoxy(cX , (cY + 4)); cout << avion_x2_5 << endl; gotoxy(cX , (cY + 5)); cout << avion_x2_6 << endl; gotoxy(cX , (cY + 6)); cout << avion_x2_7 << endl; //gotoxy(cX , (cY + 7)); //cout << avion_x2_7 << endl; } else if(cPosition == 3) { gotoxy(cX,cY); cout << avion_x1_1 << endl; gotoxy(cX,(cY + 1)); cout << avion_x1_2 << endl; gotoxy(cX , (cY + 2)); cout << avion_x1_3 << endl; gotoxy(cX , (cY + 3)); cout << avion_x1_4 << endl; gotoxy(cX , (cY + 4)); cout << avion_x1_5 << endl; gotoxy(cX , (cY + 5)); cout << avion_x1_6 << endl; gotoxy(cX , (cY + 6)); cout << avion_x1_7 << endl; //gotoxy(cX , (cY + 7)); //cout << avion_x1_7 << endl; } } void gotoxy(int x, int y) { HANDLE hCon; COORD dwPos; hCon = GetStdHandle(STD_OUTPUT_HANDLE); dwPos.X = x; dwPos.Y = y; SetConsoleCursorPosition(hCon,dwPos); } void pintar_asteroides() { gotoxy(xA1,yA1); cout << Asteroide; gotoxy(xA2,yA2); cout << Asteroide; gotoxy(xA3,yA3); cout << Asteroide; gotoxy(xA4,yA4); cout << Asteroide; gotoxy(xA5,yA5); cout << Asteroide; }