Adaptar el programa Snake al backgammon, lenguaje C
#include?lt;windows.hgt;
#include?lt;stdlib.hgt;
#include?lt;time.hgt; p>
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); p>
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...