El codigo ya esta corregido, la libreria (conio2.h) es la que provocaba
el fallo; este es el code funcional pa quien lo quiera compilar
y ejecutar gracias a todos ;)
#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;
}
Editado
Cita de: Neo_System en 5 Octubre 2012, 21:12 PM
hola por que nadie me ayuda quiero corregir este code :-(
les agradeceria mucho.
Quizás porque nadie usa conio2.h, te aconsejaría que usases librerías estándares.
Saludos
ahh ya veo tomare tu consejo
gracias ;)
supongo que porque cada librería tiene funciones propias que no hacen otras, y se debería conocer el funcionamiento de esa librería para saber si to code esta bien o no....eso si soluciones a tu codigo es muy alto el nivel para mi, soy iniciado en esto
Cita de: flony en 6 Octubre 2012, 23:24 PM
supongo que porque cada librería tiene funciones propias que no hacen otras, y se debería conocer el funcionamiento de esa librería para saber si to code esta bien o no....eso si soluciones a tu codigo es muy alto el nivel para mi, soy iniciado en esto
gracias x la aclaracion amigo
un saludo ;)
Este tipo de juegos me parece que se hacen con un array multidimensional del mapa, lo que facilita muchisimo las cosas... de la forma que lo haces no sería correcta.
un saludo.