Juego de snake en C++

Una vez las blogosfera les comparte algo de c++ en forma de juego, esta vez les comparto el código fuente de snake, muy simple pero que sin duda les podría servir para  iniciar proyectos mas avanzados.

#include <windows.h>
#include <iostream>
#include <stdlib.h>
#include <conio.h>
 
#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27
 
int cuerpo[200][2];
int n = 1, tam = 10, dir = 3;
int x = 10, y = 12;
int xc = 30, yc = 15;
int velocidad = 60;
char tecla;
 
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 OcultaCursor() {
 CONSOLE_CURSOR_INFO cci = {100, FALSE};
 
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
}
void pintar(){ 
 for(int i=2; i < 78; i++){
 gotoxy (i, 3); printf ("%c", 205);
 gotoxy(i, 23); printf ("%c", 205); 
 }
 for(int v=4; v < 23; v++){
 gotoxy (2,v); printf ("%c", 186);
 gotoxy(77,v); printf ("%c", 186); 
 }
 gotoxy (2,3); printf ("%c", 201);
 gotoxy (2,23); printf ("%c", 200);
 gotoxy (77,3); printf ("%c", 187);
 gotoxy(77,23); printf ("%c", 188); 
 } 
void guardar_posicion(){
 cuerpo[n][0] = x;
 cuerpo[n][1] = y;
 n++;
 if(n == tam) n = 1;
}
void dibujar_cuerpo(){
 for(int i = 1; i < tam; i++){
 gotoxy(cuerpo[i][0] , cuerpo[i][1]); printf("*");
 }
}
void borrar_cuerpo(){
 gotoxy(cuerpo[n][0] , cuerpo[n][1]); printf(" ");
 }
void teclear(){
 if(kbhit()){
 tecla = getch();
 switch(tecla){
 case ARRIBA : if(dir != 2) dir = 1; break;
 case ABAJO : if(dir != 1) dir = 2; break;
 case DERECHA : if(dir != 4) dir = 3; break;
 case IZQUIERDA : if(dir != 3) dir = 4; break;
 }
 }
}
void comida()
{
 if(x == xc && y == yc)
 {
 xc = (rand() % 73) + 4;
 yc = (rand() % 19) + 4;
 
 tam++;
 gotoxy(xc, yc); printf("%c", 4);
 }
}
bool game_over()
{
 if(y == 3 || y == 23 || x == 2 || x == 77) return false;
 for(int j = tam - 1; j > 0; j--){
 if(cuerpo[j][0] == x && cuerpo[j][1] == y)
 return false;
 }
 return true;
}
int main()
{
 OcultaCursor();
 
 pintar();
 gotoxy(xc, yc); printf("%c", 4);
 
 while(tecla != ESC && game_over())
 {
 borrar_cuerpo();
 guardar_posicion();
 dibujar_cuerpo();
 comida();
 teclear();
 teclear();
 
 if(dir == 1) y--;
 if(dir == 2) y++;
 if(dir == 3) x++;
 if(dir == 4) x--;
 
 Sleep(velocidad);
 }
 pintar();
 return 0;
}
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un sitio web o blog en WordPress.com

Subir ↑

Espacio Informativo de Ana

Tecnología, Software Libre, Comunicación, Noticias de interés

Quartz

Quartz is a digitally native news outlet for the new global economy.

Sistemas Operativo

Es el software principal o conjunto de programas de un sistema informatico

A %d blogueros les gusta esto: