Dejo el código para que lo vean y me ayuden.
#include <windows.h>
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <process.h>
#include <gotoxy.h>
#define ARRIBA 72
#define IZQUIERDA 75
#define DERECHA 77
#define ABAJO 80
#define ESC 27
#define ENTER 13
FILE *doc, *archi;
int Menu, b;
int cuerpo[200][2];
int n = 1, tam = 10, dir = 3, mat=20;
int x = 10, y = 12;
int xc = 30, yc = 15, pc = 5, oc = 35;
int velocidad = 130;
int score=0, r=0, h=1;
char tecla, nombres[20], cadena[20];
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 (15,1); printf ("***************** Snake By Firu *****************");
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 scores(){
char cadena[80];
archi=fopen("Score.txt","r"); //en modo lectura r
if(archi == NULL) printf("Archivo no encontrado");
fgets(cadena,80,archi);
do{
printf("%s\n",cadena);
}while(fgets(cadena,80,archi)!=NULL);
fclose(archi);
getch();
system("cls");
}
void bienvenida(){
gotoxy(3,5);
printf(" * * *********** ** * ********* * * *********");
gotoxy(3,6);
printf(" * * * * * * * * * *");
gotoxy(3,7);
printf(" * * * * * * * ** *");
gotoxy(3,8);
printf(" ***** *********** * * * ********* ** *******");
gotoxy(3,9);
printf(" * *** * * * * * * * * * *");
gotoxy(3,10);
printf(" ********* * * ** * * * * *");
gotoxy(3,11);
printf(" ********* *********** * ** * * * * *********");
gotoxy(3,12);
printf(" ******* ************ ***********");
gotoxy(3,13);
printf(" ******* ************** *************");
gotoxy(3,14);
printf(" ******* **************** ***************");
gotoxy(3,15);
printf(" ******* ******* ******* ******* *******");
gotoxy(3,16);
printf(" ******* ******* ******* ******* *******");
gotoxy(3,17);
printf(" *************** *************** ***************");
gotoxy(3,18);
printf(" ************* ************* *************");
gotoxy(3,19);
printf(" *********** *********** ***********");
gotoxy(20,22);
printf("Ingrese su nombre de Usuario: ");
gets(nombres);
system("cls");
}
void OcultaCursor() {
CONSOLE_CURSOR_INFO cci = {100, FALSE};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
}
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
- , cuerpo[1]);
}
}
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;
case ENTER:
gotoxy(35,10);
printf("Pause");
getch();
gotoxy(35,10);
printf(" ");
break;
}
}
}
void cambiar_velocidad(){
if(score == h*10){
velocidad = velocidad - 10;
h++;
}
}
void comida()
{
if(x == xc && xc && y == yc)
{
xc = (rand() % 72) + 4;
yc = (rand() % 18) + 4;
tam++;
score++;
cambiar_velocidad();
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;
}
void puntos(){
gotoxy(34,3);
printf(" Score:%d ", score);
gotoxy(10, 3);
printf(" Nivel: %d ",h);
}
int main()
{
pintar();
bienvenida();
system("cls");
inicio:
pintar();
gotoxy(20,10);
printf("1 - Jugar.");
gotoxy(20,11);
printf("2 - Puntajes.");
gotoxy(20,12);
printf("3 - Cambiar Usuario.");
gotoxy(20,13);
printf("4 - Juego Nuevo.");
gotoxy(20,14);
printf("5 - Salir.\n");
gotoxy(20,16);
printf("Digigite su Seleccion: ");
scanf("%i",&Menu);
system("cls");
switch(Menu){
case 2:
scores();
goto inicio;
break;
case 1:
if(tecla == ENTER){
getch();
gotoxy(20,10);
printf("Pause");
}
OcultaCursor();
pintar();
gotoxy(xc, yc); printf("%c", 4);
while(tecla != ESC && game_over())
{
borrar_cuerpo();
guardar_posicion();
dibujar_cuerpo();
comida();
puntos();
teclear();
teclear();
if(dir == 1) y--;
if(dir == 2) y++;
if(dir == 3) x++;
if(dir == 4) x--;
Sleep(velocidad);
}
pintar();
system("cls");
doc = fopen("Score.txt","a");
gotoxy(30, 11);
printf("Nombre: %s\n",nombres);
gotoxy(30, 12);
printf("Perdio en el nivel: %d",h);
pintar();
gotoxy(30, 13);
printf("Su Score es: %d ",score);
fprintf(doc,"\n");
fprintf(doc," Nombre: %s Nivel: %d Score: %d \n",nombres,h,score);
fclose(doc);
getch();
system("cls");
goto inicio;
break;
case 3:
pintar();
fflush(stdin);
bienvenida();
system("cls");
goto inicio;
break;
case 5:
return 5;
break;
case 4:
fflush(stdin);
OcultaCursor();
pintar();
gotoxy(xc, yc); printf("%c", 4);
while(tecla != ESC && game_over())
{
borrar_cuerpo();
guardar_posicion();
dibujar_cuerpo();
comida();
puntos();
teclear();
teclear();
if(dir == 1) y--;
if(dir == 2) y++;
if(dir == 3) x++;
if(dir == 4) x--;
Sleep(velocidad);
}
pintar();
system("cls");
doc = fopen("Score.txt","a");
gotoxy(30, 11);
printf("Nombre: %s\n",nombres);
gotoxy(30, 12);
printf("Perdio en el nivel: %d",h);
pintar();
gotoxy(30, 13);
printf("Su Score es: %d ",score);
fprintf(doc,"\n");
fprintf(doc," Nombre: %s Nivel: %d Score: %d \n",nombres,h,score);
fclose(doc);
getch();
system("cls");
goto inicio;
break;
}
}