Red de conocimiento informático - Conocimiento informático - Adaptar el programa Snake al backgammon, lenguaje C

Adaptar el programa Snake al backgammon, lenguaje C

#include?lt;windows.hgt;

#include?lt;stdlib.hgt;

#include?lt;time.hgt;

p>

#include?lt;stdio.hgt;

#include?lt;string.hgt;

#include?lt;conio.hgt ;

#define?N?21

int?apple[3];

char?score[3];

char ?tail[3] ;?

void?gotoxy(int?x,?int?y)//Coordenadas de salida?

{

COORD?pos ;

pos. p>}

void?color(int?b)?//Función de color?

{

MANEJAR ?hConsole?=?GetStdHandle((STD_OUTPUT_HANDLE) )?;?

SetConsoleTextAttribute(hConsole, b)?;

}?

int?Block(char ?head[2])//Juzgar fuera de límites ?

{

if?((head[0]?lt;?1)?||?(head[0] ]?gt;?N)?||?( cabeza[1]?lt;?1)?||?(cabeza[1]?gt;?N))

return?1;

return?0;

return?0; p>

}

int?Eat(char?snake[2])//Come una manzana ?

{

si?((serpiente [0]?==?manzana[0])?amp;amp;?(serpiente[1]?==?manzana[ 1]))

{

manzana[ 0]?=?manzana[1]?=?manzana[2]?=?0;

gotoxy (N 44,10);

color(13);

gotoxi(N 44,10);

color(13);

p>

printf("d",puntuación[0]*10);

color(11);

retorno?1;

}

return?0;

}

void?Draw(char?**snake,?int?len)//¿Se mueve la serpiente?

{

si?(manzana[2])?{

gotoxy(manzana[1]?*?2,?manzana[0]);

color(12);

printf("●");

color(11);

}

gotoxy (cola[1]?*?2,?cola[0]);

if?(cola[2])? {?color(14);

printf(" ★");

color(11); }

¿otra cosa?

printf("■");

gotox

y(serpiente[0][1]?*?2,?serpiente[0][0]);

color(14);

printf("★");

color(11);

putchar('\n');

}

char**?Move(char? **snake,?char?dirx,?int?*len)//¿Dirección de control?

{

int?i,?full?=?Eat(snake[0] );

memcpy(tail,?snake[(*len)-1],?2);

for?(i?=?(*len)?-?1 ;?i?gt;?0;?--i)?

memcpy(snake[i],?snake[i-1],?2);

¿cambiar? (dirx)? {?

caso?'w':?caso?'W':?--snake[0][0];?caso?'s':?caso?' S':? serpiente[0][0];?romper;

caso?'a':?caso?'A':?--serpiente[0][1];?romper;

caso?'d':?caso?'D':?snake[0][1];?break;

predeterminado:?}?

if?(completo)

{?

serpiente?=?(char?**)realloc(serpiente,?sizeof(char?*)?*?((*len )? ?1));

serpiente[(*len)]?=?(char?*)malloc(sizeof(char)?*?2);

memcpy( serpiente[(*len)],?cola,?2);

(*len);

puntuación[0];

if(puntuación[ 3]?lt;?16)?

puntuación[3];

cola[2]?=?1;

}

¿otra cosa?

cola[2]?=?0;

retorno?serpiente;

}

void?init( char?plate[N 2][N 2],?char?***snake_x,?int?*len)?//¿Inicialización?

{

int?i, ?j;

char?**snake?=?NULL;

*len?=?3;

puntuación[0]?=?puntuación[ 3]?=3;

serpiente?=?(char?**)realloc(serpiente,?sizeof(char?*)?*?(*len));

for?(i?=?0;?i?lt;?*len;? i)

serpiente[i]?=?(char?*)malloc(sizeof(char)?*?2 );

¿para?(i?=?0;?i?lt;?3;? i)?

{

serpiente[i][ 0]?=?N/2? ?1;

serpiente[i][1]?=?N/2? (i?=?1;?i?lt;=?N;? i)?

para?(j

?=?1;?j?lt;=?N;? j)?

placa[i][j]?=?1;

manzana[0]?= ?rand()N? ?1; ?manzana[1]?=?rand()N?1;

manzana[2]?=?1;

para? (i?=?0;?i?lt;?N? ?2;?i)?

{

gotoxy(0,?i);

para?(j?=?0;?j?lt;?N? ?2;? j)?

{

interruptor?(placa[i][j ])?

{ caso?0:? color(12); printf("□"); color(11);?continuar;

caso?1:?printf( "■");?continuar; predeterminado:?; }

}

putchar('\n');

}?

for?(i?=?0;?i?lt;?(*len);? i)

{

gotoxy(serpiente[i][1]? *?2,?serpiente[i][0]);

printf("★");

}?

putchar('\n' );

*snake_x?=?snake;

}

void?Manual()

{

gotoxy(N 30, 2);

color(10);

printf("¿Presionar?W?S?A?D?Dirección del movimiento");

gotoxy(N 30, 4);

printf("Presiona la tecla espaciadora para pausar");?

gotoxy(N 30, 8);

color(11);

printf("Puntuación histórica más alta:?");

color(12);

gotoxy(N 44, 8);

printf("d", puntuación[1]*10);

color(11); ;

printf("Su puntuación actual es:?0");?

}

int?File_in()?//¿Obtener la puntuación registrada?

{

ARCHIVO?*fp;

if((fp?=?fopen("C:\\tcs.txt","a " ) )?==?NULL)

{

gotoxy(N 18,?N 2); printf("El archivo no se puede abrir\n"); /p>

}

if((puntuación[1]?=?fgetc(fp))?!=?EOF);

else

puntuación[1]?=?0;

return?0;

}

int?File_out()//¿Guardar datos?

{

ARCHIVO?*fp;

if(puntuación[1]?gt;?puntuación[0])?

{gotoxy(10 , 10);

color(12);

puts("¿No pudiste pasar el nivel? Vamos"); );?

retorno?0;

}

if((fp?=?fopen("C:\\tcs.txt","w "))?==?NULL)

{

printf("El archivo no se puede abrir\n");

salir(0);

}

if ( fputc(--score[0], fp)==EOF)

printf("Salida fallida\n");

gotoxy(10, 10);

color(12);

puts("Felicitaciones por batir el récord");?

gotoxy(0, N 2);

return? 0;

}

void?Free(char?**snake,?int?len)//¿Liberar espacio?

{

int?i;

para?(i?=?0;?i?lt;?len;? i)?

libre(serpiente[i]) ;

libre(serpiente);

}

int?main(vacío)

{

int ?len ;

char?ch?=?'g';

char?a[N 2][N 2]?=?{{0}};

char?**serpiente;

srand((unsigned)time(NULL));

color(11);

File_in() ;

init(a,?amp;serpiente,?amp;len);

Manual();

mientras?(ch?!=?0x1B )/ /?Presione?ESC?para finalizar? {?

Dibujar(serpiente,?len);

if?(!apple[2])?{

manzana[0]?=?rand()N?1;

manzana[1]?=?rand()N ?1;

manzana[2? ]?= ?1;

}

Dormir(200-score[3]*10);

setbuf(stdin,?NULL);

if?(kbhit())

{

gotoxy(0,?N 2);

ch?=?getche() ;

gotoxy(0,?N 2);

ch?=?getche();

p>

} serpiente?=?Move(serpiente, ?ch,?amp;len);? si?(Bloque(serpiente[0])==1)? {

gotoxy(N 2,?N 2);

puts("Perdiste");

File_out();

Gratis(serpiente,?len);

getche();

salir(0);? }

}

Libre(serpiente,?len);

salir(0);

}

Este es el código de Snake~~~~Yo soy quien hizo la pregunta...