Red de conocimiento informático - Espacio del host - El trabajo de C++ que hice se puede ejecutar en vc6.0. El código fuente se copia a vc2010 y se compila. El programa se cerrará en unos segundos tan pronto como se ejecute.

El trabajo de C++ que hice se puede ejecutar en vc6.0. El código fuente se copia a vc2010 y se compila. El programa se cerrará en unos segundos tan pronto como se ejecute.

/*

Juego de gula C/C++, zjlj,2015.3.16

*/

#define? Cuando el programa está en la etapa de depuración, DEBUG es 1

#include

#include

#include

#include

usando?namespace?std;

void?readini(FILE?**fphead,?int?*score,?char?*argv[])?

{ char?nombre de archivo[200],*pnombre de archivo; int?flag=-1,i

strcpy(nombre de archivo,argv[0]);

for (i=0,i=0);

strcpy(nombre de archivo,argv[0]);

for(i=0;nombre de archivo[i]!='\0';i++ ) { if?('.' == nombre de archivo[i])bandera=1; } if(1==bandera) { nombre de archivo[i-1]='i';

nombre de archivo[i- 2] ='n'; nombre de archivo[i-3]='i'; } else { nombre de archivo[i]='.) nombre de archivo[i+1]='i'; ;

nombre de archivo[i+3]='i';

nombre de archivo[i+4]='\0' } for(;nombre de archivo[i]!= '\ \' &&i>=0;i--)pfilename=&filename[i];

if?(? (*fphead=fopen(pfilename,?" rb+"))==NULL) {

if?(? (*fphead=fopen(pfilename,?" wb+"))==NULL) {

if?" wb+"))==NULL) {

printf("No se puede crear o abrir\"%s\"archivo\n",pfilename);

system("pausa");

exit(0 ); }

} else { fread(score,sizeof(int),1,*fphead }

}

void?writeini(ARCHIVO? ** fphead,?int?*score,?char?*argv[])?//Abra el archivo ini correspondiente al archivo en ejecución y escriba el registro más alto

{ char?filename[200], *pnombredearchivo ; int?flag=-1,i;

strcpy(nombre de archivo,argv[0]);

for(i =0;nombre de archivo[i]! = '\0';i++) { if('.' == nombre de archivo[i])bandera=1 } if(1==bandera) { nombre de archivo[i-1]='i';

nombre de archivo[i-2]='n'; nombre de archivo[i-3]='i'; else { nombre de archivo[i]='.) filena

yo[i+1]='i'; nombre de archivo[i+2]='n';

nombre de archivo[i+3]='i';

nombre de archivo[i +4]='\0'; } for(;nombre de archivo[i]!= '\\'&&i>=0;i--)pnombre de archivo=&nombre de archivo[i];

if (? (*fphead=fopen(pfilename,?" wb+"))==NULL) { printf("¡No se puede escribir en el archivo\"%s\", disco protegido contra escritura!\pfilename);

system("pausa");

salir(0); else { rewind(*fphead); fwrite(score,sizeof(int),1,*fphead);

}

void?x,int?y)//Posicionamiento del cursor, la posición de la esquina superior izquierda de la función de posicionamiento del cursor SetConsoleCursorPosition es 0,0 y luego se extiende hacia abajo y hacia el izquierda

{

COORD?pos;

pos.X=2*y;

pos.Y=x;

OORD?pos;

OORD?pos;

OORD?pos.X=2*y;

OORD?pos.Y= x;

OORD?pos.X=2*y;

OORD?Y=x;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

void?color(int?a)//función de color

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a) ;

}

void?Refresh( int?q[][22],?int?grade,?int?gamespeed,?int?length,int?score)?/ /?Salida del tablero de ajedrez de la gula

{ int?i,j for(i=0;i<22;i++) { for(j=0;j<22;j++) {

if( q[i][j]==0)//muestra el tablero en blanco

{

gotoxy(i,j);

color(11) ;

cout<<"■";

}

if(q[i][j]==1||q[ i][j ]==2)//salidas tablero pared

{?

gotoxy(i,j);

color(11);

cout<<"□";

}

if(q[i][j]==3)//genera la cabeza de serpiente

{?

gotoxy(i,j);

color(14);

cout<<"★";

}

if(q[i][j]==4)//Salida del cuerpo de la serpiente

{?

gotoxy(i,j );

p>

color(12);

cout<<"◆";

}i

f(q[i][j]==5)//Fruta de salida

{?

gotoxy(i,j);

color(12 );

cout<<"●";

} } if(i==0)?cout?\t*************** *** **********"; if(i==1)?cout?<

}

int?main(int?argc ,?char?*argv[]){

int?tcsQipan[22][22];?//?El tablero de ajedrez de Xiabuxiabu es una matriz bidimensional (por ejemplo, 22*22, incluidas las paredes)

int?i ,j,score,directiontemp;FILE?*fpini;//*fpini?archivo de información readini(&fpini,? &score,?argv);//leer el registro más alto del archivo ini if?(score<0)//less than La puntuación más alta de cero se establece en cero y el archivo inicial será puntuación negativa=0 while(1) { for(i=1;i<=20;i++)<; /p>

for(j=1;j <=20; j++)

tcsQipan[i][j]=0;//Marque 0 en la escala de coordenadas correspondiente de la forma de serpiente tablero de ajedrez, indicando la parte en blanco en el medio para (i=0;i<= 21;i++)

tcsQipan[0][i]?=?tcsQipan[21][i] =?1? ;?//Las escalas de coordenadas correspondientes en las paredes superior e inferior del tablero de ajedrez con forma de serpiente

Bandera 1 for(i=1;i<=20;i++)

tcsQipan[i][0]? =?tcsQipan[i][21] =?2;?//En forma de serpiente 2 int?tcsZuobiao[2][500];?//Matriz de coordenadas de serpiente for(i=0;?i<4;?i++) {

tcsZuobiao[0][i] =? 1;//x coordenadas del cuerpo y la cabeza de la serpiente

tcsZuobiao[1][i]? =?i?+?1;//y coordenadas del cuerpo y la cabeza de la serpiente } int?head? =?3,tail?=?0;//matriz de compensaciones que etiquetan la cabeza y la cola de la serpiente for(i=1;i<=3;i++)

tcsQipan[1][i]=4; //cuerpo de serpiente tcsQipan[ 1][4]=3;//cabeza de serpiente int?x1,?y1;//?Fruta aleatoria srand(time(0)); //establecer semilla aleatoria do {

x1=rand()%21;

y1=rand()%21; } while(tcsQipan[x1][y1 ]! = 0);//si no reaparece la fruta en el espacio en blanco tcsQipan[x1][y1]=5;//la marca de fruta 5 en la escala de coordenadas correspondiente del tablero Snake color(12); cout<<"/n \n\t\t/el juego de la serpiente está a punto de comenzar; start?!" <=0;i--) {

inicio=reloj();

mientras(reloj()-inicio<=1000) ;

sistema ("cls");

if( i>0)

cout?\n\n\t\t va a la cuenta regresiva:" ?"<

else

Refresh(tcsQipan,grade,gamespeed,length,score);?//visualización inicial del tablero } int?timeover=1,otherkey =1;//inicializa el tiempo de espera y los parámetros de juicio clave char?direction?=?77;?//?Establece la situación inicial para moverse hacia la derechaint?x=tcsZuobiao[0][head] ,y=tcsZuobiao[1][ head];//Guardar las coordenadas de la cabeza de la serpiente en las variables x,y while(1)//ejecutar un juego {

start?=?clock();

while( (tiempo transcurrido=((temp.inicio=reloj()))-inicio<

=gamespeed))&&&!kbhit());//termina el bucle si hay una tecla presionada o si el tiempo excede el intervalo de avance automático

if(direction==72 ||direction== 80||direction==75?|direction==77)

directiontemp=direction;//mantén presionada la última tecla de dirección

//starttemp=gamespeed+start-starttemp; //mantener el tiempo de permanencia

if(timeover)

{

#if?(DEBUG==1)

dirección?= ?getch();//código de depuración #else

if((dirección?= getch())==-32) dirección?=?getch();

#endif

} #if?(DEBUG==1)//código de depuración

start=clock();

while(clock()-start <= 2000);

gotoxy(24,4);

cout?\Tecla de dirección Código ASCII"<<(int)dirección<<"<<"<

If(! (dirección==72||dirección==80||dirección==75?||dirección==77))

{ otherkey=0;// ?key no es una tecla de flecha, otherkey está configurada en 0

}

else

{ otherkey=1;//? key es una tecla de flecha, otherkey está establecida en 1

} if(direction==72?&&?directiontemp==80)//ignorar la tecla de dirección inversa

{

direction= 32; otra clave=0 ;

//inicio?=?reloj();

//mientras(reloj()-inicio<=temperatura);

}

else?if(direction==80?&&?directiontemp==72 )

{

direction=32;//establece la clave para que no sea -tecla de dirección otherkey= 0;//? la tecla es una tecla no direccional, otherkey está configurada en 0

//?start?=?clock();

// while(clock()-start< =starttemp);//compensar el tiempo de espera

}

else?if(direction ==75?&&?directiontemp==77)

{

dirección=32; otra clave=0; //inicio?=?reloj();

/ while(reloj()-inicio< ;=st

arttemp);

}

else?if(dirección==77?&&?direccióntemp==75)

{

dirección =32; otra clave=0; //inicio?=?reloj();

//mientras(reloj()-inicio<=temperatura);

}

cambiar(dirección)//determinar tecla de dirección

{ case?x= tcsZuobiao[0][head]-1; y= tcsZuobiao[1][head];break;?//? Arriba caso?80:?x=?tcsZuobiao[0][head]+1;?y=?tcsZuobiao[1][head];break;?//?Abajo caso?75:?x=?tcsZuobiao[0] [cabeza];?y=?tcsZuobiao[1][cabeza]-1;romper;?//?caso izquierdo?77:?x=?tcsZuobiao[0][cabeza];?y=?tcsZuobiao[1][ head]+1;break;?//? derecho predeterminado:?break;

}

if(x==0?||?x==21?||y ==0?||?y==21)?//?La cabeza de serpiente golpea la pared y el juego termina

{? gotoxy(22,12); cout?<

if(x==0?||?x==21?||y==0?||?y==21?\¡Se acabó el juego!"? <= (longitud+(grado-1)*8)*10)//determinar si el récord está roto { gotoxy(10,7); color(12); cout?<

{ ? ¿Falló en superar el nivel? ¡Adelante! "? <

cout?<

}

if(tcsQipan[x][y]! =0&&! (x==x1&&y==y1)&&tcsQipan[x][y]!=3)?//La cabeza de la serpiente toca el cuerpo de la serpiente, el juego ha terminado

{ gotoxy(22,12); cout?<=(length+(grade-1)*8)*10)//determina si el récord se ha batido { gotoxy(10,7); color(12); cout?<< "¿No lograste abrirte paso?" ¡A por ello! "? <

pini);//cerrar archivo ini } else { gotoxy(10,7); color(12); cout?<

}

/*

Iniciar el algoritmo central cuando el juego se esté ejecutando

*/

if(x==x1?&&?y==y1)?//?Come fruta y suma 1 a la longitud

{ longitud ?++; if (longitud>=8)// Si la longitud es mayor o igual a 8, recalcular la longitud y agregar 1 a la calificación { length?-=?8;//recalcular la longitud de la calificación?++; //calificación más 1 if( gamespeed>50)// controla la velocidad más rápida a 50

gamespeed?=?550?-?grade?*?50;?//?Cambiar el intervalo de tiempo para el avance automático } tcsQipan[x][y]=?3;// Las coordenadas correspondientes del codicioso tablero de ajedrez ahora se cambian del símbolo de la cabeza de serpiente al símbolo de la cabeza de serpiente 3 tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1] [head]]? =?4;// Las coordenadas correspondientes del tablero de ajedrez codicioso se cambian del símbolo de la cabeza de serpiente Cambiar al símbolo del cuerpo de serpiente 4 head?=?(head+1)%400;//Evitar que la matriz cambie fuera de límites tcsZuobiao[0][head]? =?x;// Coordenada X de la cabeza de serpiente tcsZuobiao[1][head]?= ?y;// Coordenada y de la cabeza de serpiente do// Fruta aleatoria { x1 =rand()%21; y1=rand()%21; } while(tcsQipan[x1][y1]!= 0);//si no, reaparece la fruta en el tcsQipan[x1][y1] ]=5;// la marca 5 de la fruta en los marcadores de coordenadas correspondientes del tablero de Gula gotoxy(22,12); cout?<

\¡Juego en progreso! "<

}

else?//?Sin fruta

{? if(otherkey) { tcsQipan?[tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=0; tail=(tail+1)%400;//evitar que la matriz salga de los límites tcsQipan?[ [?tcsZuobiao[0][head]][tcsZuobiao[1][head]]=4; head=(head+1)%400;//Evita que la matriz cruce el límite tcsZuobiao[0][head]=x ; // Cabeza de serpiente La coordenada x tcsZuobiao[1][head ]=y;// La coordenada y de la cabeza de serpiente tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]=3; (22,12); cout? <}

/*

Fin del algoritmo central cuando el juego se está ejecutando

*/

}

while (1)

{ while(!kbhit()); if(( direction?=getch())==13)// Presiona Enter para iniciar el siguiente descanso del juego if(direction; ?= =27)// Pulsa la tecla ESC para salir del juegoexit(0);

}

system("cls");//Borra la pantalla y comienza de nuevo} return?

}

system("cls");//aprendiendo la pantalla para comenzar de nuevo } return?