Encuentre un programa de backgammon en lenguaje C de alta puntuación
# incluir ltconio.h gt
# incluir ltwindows.h gt
# incluir ltstdlib.h gt
# incluir ltstdio. h gt
int datos de ajedrez[15][15]= { 0 };
int GuangbiaoData[2]={8, 8 }; chesstepdata[255][2]= { 0 };
Void gotoxy(int x, int y) //gotoxy es una función que viene con el sistema en TC. No existe tal función en VC. entonces encontré esta función en línea para lograr la misma función.
//Esta función solo la encontré en Internet, las demás las escribí yo mismo.
{
Coordenada c;
c.x = x-1;
c.y = y-1;
SetConsoleCursorPosition(GetStdHandle(STD _ OUTPUT _ HANDLE), c
}
void GotoChess(int x, int y)
{
x = 3 * x-2; y = 2 * y-1;
gotoxy(x, y
}
Vacío); Move(int MoveData) // El parámetro de entrada es la dirección ingresada por el usuario (1 significa arriba, 2 significa abajo, 3 significa izquierda, 4 significa derecha).
{
Cambiar (datos móviles)
{
Caso 1: GuangbiaoData[1]-= 1;
p>
{
p>
Caso dos: GuangbiaoData[1] = 1; roto;
Caso tres: GuangbiaoData[0]-= 1;
Caso cuatro: GuangbiaoData[0 ] = 1; roto
Valor predeterminado: printf(" error de función de movimiento");
GotoChess(GuangbiaoData[0], GuangbiaoData[1 ]);
}
Int Get(int *data) // La función de esta función son las pulsaciones de teclas del usuario, que se convierten en 01234567 (0 significa error de entrada, 1 significa arriba, 2 significa abajo, 3 significa izquierda, 4 significa derecha, 5 significa moverse, 6 significa arrepentirse, 7 significa salir)
{//Y devuelve el número de usuario ingresado (* * *Regresar con la misma clave. 3), devuelve 0 en caso de error.
Temperatura interna;
b: temp = getch();
if(temperatura==224)
{
temp = getch();
cambiar(temp)
{
Caso 72: *data = 1; break;
Caso 80: *datos = 2; ruptura;
Caso 75: *datos = 3; ruptura;
Caso 77: *datos = 4; >
Predeterminado: ir a B;
}
regresar 2
}
Otros
{
Interruptor(temperatura)
{
Caso 'w':
caso 'W': * datos = 1; 1; romper;
Caso:
caso ': * datos = 2; devolver 1; p>Caso "A": *datos = 3; devuelve 1;
Caso "d":
Caso "D": *datos = 4; ;
Caso 13: *datos = 5; devuelve 2;
Caso 32: *datos = 5; devuelve 1; : *datos = 6;
Caso 27: *datos = 7;
Valor predeterminado: *datos = 0; >}
Devolver 3;
}
}
void MoveToEnd()
{
gotoxy(1, 30);
}
int LogicBeOut(int a, int b)
{
if(a = =-1 | | a = = 15 | | b = =-1 | | b = = 15) devuelve 1;
En caso contrario, devuelve 0;
}
int win(int v)
{
int i=1, j=1, a=0, b = 0;
while(chesdata[a = GuangbiaoData[0]-I-1][b = GuangbiaoData[1]-I-1]= = v * 2 amp; amp! LogicBeOut(a, b))i;
while(chesdata[a = GuangbiaoData[0] j-1][b = GuangbiaoData[1] j-1]= = v * 2 amp; amp! LogicBeOut(a, b))j;
si(I j-1 gt;=5) devuelve 1;
i=1, j=1, a=0, b = 0;
mientras(chesdata[a = GuangbiaoData[0] I-1][b = GuangbiaoData[1]-I-1]= = v * 2 amp; amp! LogicBeOut(a, b ))i;
mientras(chesdata[a = GuangbiaoData[0]-j-1][b = GuangbiaoData[1] j-1]= = v * 2 amp; amp! LogicBeOut(a, b))j;
si(I j-1 gt;=5) devuelve 1;
i=1, j=1
, a=0, b = 0;
while(chesdata[a = GuangbiaoData[0]-I-1][b = GuangbiaoData[1]-1]= = v * 2 amp; amp! LogicBeOut(a, b))i;
while(chesdata[a = GuangbiaoData[0] j-1][b = GuangbiaoData[1]-1]= = v * 2 amp; amp!LogicBeOut (a, b))j;
si(I j-1 gt;=5) devuelve 1;
i=1, j=1, a=0, b = 0;
mientras(chesdata[a = GuangbiaoData[0]-1][b = GuangbiaoData[1]-I-1]= = v * 2 amp; amp! LogicBeOut(a, b)) i ;
mientras(chesdata[a = GuangbiaoData[0]-1][b = GuangbiaoData[1] j-1]= = v * 2 amp; amp! LogicBeOut(a, b))j ;
si(I j-1 gt;=5) devuelve 1;
devuelve 0;
}
Nulo NewShow( ) //El comienzo de una nueva partida de ajedrez
{
int i, j
for(I = 0; i lt15; i ) p>
for(j = 0; j lt15; j )
datos de ajedrez[I][j]= 0;
system("cls"); p>
for(I = 1;i lt=29;i)
{
for(j = 1;j lt=43;j)
if(I 2 = = 1)printf("-");
si no(j 3 = = 1)printf(" | ");
si no printf (" " );
printf(" \ n ");
}
GuangbiaoData[0]= 8; /p>
move toend();
Printf("Ahora permita que el usuario use 1 \n para jugar al ajedrez");
Printf ("El usuario 1 usa w , s, a, d mueve el cursor y la barra espaciadora se mueve\ n ");
Printf ("El usuario 2 usa cada tecla de dirección para mover el cursor y la tecla Enter cae\ n ") ;
Printf( "Presiona la tecla de retroceso para salir del ajedrez y presiona esc para regresar al menú principal\ n "); >
}
int BeOut(int datos)
{
int Zheng Xiu[2], nuevo[2];
Interruptor (datos)
{
Caso 1: Zheng Xiu[0]= 0; Caso 2: Zheng Xiu[0]= 0; Zheng Xiu[1 ]= 1;
Caso 3: Zheng Xiu[0]=-1;
Caso 4: Zheng Xiu[0] = 1; ]= 0; descanso;
<p>Valor predeterminado: printf("Error de función BeOut");
}
new[0]= GuangbiaoData[0] Zheng Xiu[0];
nuevo[1]= GuangbiaoData[1] Zhengxiu[1];
if(Nuevo[0] gt; 15 | | Nuevo[0] lt; 1 | | Nuevo[1]>; 15 | | Nuevo[1] lt; 1) Devuelve 1
En caso contrario, devuelve 0;
}
void UserChoose(int * elección)
{
system("cls");
printf(" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ");
printf(" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ");
Printf("$1. Un jugador");
Printf (" 2. Juego para dos jugadores");
Printf("3. Salir del juego");
Printf("4.
Ayuda del juego");
printf(" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ");
printf(" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ");
printf(" ");
Printf("Feliz Gobang");
printf(" " )
Printf("Supervisor: Zhang");
Printf("ID del estudiante: 067108034 ");
Printf("Instructor: Shao Yanling" ) ;
printf(" ");
printf(" ");
Printf("Recordatorio: maximice la ventana durante el juego para lograr el mejor resultado. resultados");
printf(" _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ");
int temp=0, I = 0;
Hacer
{
if ( (temp= getch())==224)
{
temp = getch();
if(temp == 72 amp; amp me! =0)
{
gotoxy(34, 3 I);
printf(" ");
I-;
gotoxi(34, 3 I);
printf(" $ ");
gotoxi(0, 0);
}
else if(temp = = 80 amp; amp i!=3)
{
gotoxy(34, 3 I);
printf (" ");
i;
gotoxy(34, 3 I);
printf(" $ ");
gotoxy(0, 0);
}
}
else if(temp == 13){ * elección = I 1 } p>
else if(temp == 27){ * elección = 3; return }
else if(temp == ' 1 ' | | temp == ' 2 ' | | temp = = ' 3 ' | temp = = ' 4 '){ * elección = temp-48 }
} mientras(1);
} p><; p>Int no puede hacer (int v1, int v2, int mover datos, int elección) // El primer valor de entrada es el número de usuario de la clave y el segundo es el número de usuario que debería haber presionado la tecla. es el valor correspondiente de la tecla que se presiona, y la cuarta tecla representa el modo de juego.
{
if (v1==3) devuelve 0; //Si el usuario ingresa el botón * * *, CannotDo es falso.
else if (v1==0) devuelve 1; //Si el usuario ingresa un error, CannotDo es verdadero.
else if (v1!= v2 amp ampchoice==2) devuelve 1; //Si el usuario no debería ingresar, pero lo hizo, entonces CannotDo es verdadero.
if (BeOut(MoveData)) devuelve 1; //Si se sale del límite, CannotDo es verdadero.
Return 0;
}
Int CannotLuozi() //Determina si puedes establecerte.
{
if(chesdata[datos de Guangbiao[0]-1][datos de Guangbiao[1]-1])
Devolver 1;
De lo contrario, devuelve 0;
}
Int luozi(int v) //El jugador V se mueve.
{
datos de ajedrez[GuangbiaoData[0]-1][GuangbiaoData[1]-1] = v * 2;
if(v = = 1)printf(" O ");
else if(v = = 2)printf(" X ");
Else printf("Error de función Lozi");< / p>
if(win(v)){ mover al final(); Printf("¡El jugador d ganó!\n", v); for(int I = 1; i lt=240; i) printf( " " ); GotoChess(GuangbiaoData[0], GuangbiaoData[1]); getch(); return }
mover al final();
Printf("Ahora, por favor, usuario d Play; Chess", v 2 1);
GotoChess(GuangbiaoData[0], GuangbiaoData[1]);
Devuelve 0;
}
p>Void Huiqi (paso int) //Ingresaste el movimiento del que ahora te arrepientes.
{
GuangbiaoData[0]= chesstepdata[paso-1][0];
GuangbiaoData[1]= chesstepdata[paso-1][1 ];
datos de ajedrez[GuangbiaoData[0]-1][GuangbiaoData[1]-1]= 0;
GotoChess(GuangbiaoData[0], GuangbiaoData[1]);
printf("-");
move toend();
Printf("Ahora pídele al usuario d que juegue ajedrez", (paso 1) 2 1 );
GotoChess(GuangbiaoData[0], GuangbiaoData[1]);
}
int DataGetAndChoose(int elección)
{
int MoveData=0, i=0, temp//MoveData 0 significa no movible, 1 significa arriba, 2 significa abajo, 3 significa izquierda, 4 significa derecha, 5 significa mover, 6 significa arrepentirse y 7 significa dejar de fumar.
mientras(1)
{
bucle: while(temp = Get( amp; MoveData), CannotDo(temp, i2 1, MoveData, elección) );
Cambiar (datos móviles)
{
Caso 1:
Caso 2:
Caso Tres:
Caso 4: Move(MoveData); Break;
Caso 7: Devuelve 0;
Caso 6:
if (I = = 0){ mover al final(); Printf("No puedo arrepentirme de jugar ajedrez ahora"); - );
Break;
Caso 5:
if (CannotLuozi()) ir al bucle
if (Luozi(i2); 1)) Devuelve 0;
chesstepdata[I][0]= GuangbiaoData[0];
chesstepdata[I][1]= GuangbiaoData[1];
i;
Pausa;
Valor predeterminado: printf("Error de función DatagetandChoose");Pausa;
}
}
Devuelve 1;
}
void ShowHelp()
{
System("cls" );
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);
printf(" * * * * * *Los juegos para un jugador son para que los usuarios jueguen ajedrez consigo mismos , estudiar ajedrez * * * * * ");
printf(" * * * * * * En un juego de dos jugadores, el usuario 1 usa wsad para controlar la dirección y presionar el espacio * * * * * * ";
p>printf(" * * * * * *El usuario 2 presiona las teclas de dirección para controlar la dirección y presiona la tecla Enter * * * * *);
printf(" * * * * * * Juego Presiona esc durante el proceso para regresar al menú principal* * * * *);
printf(" * * * * * *Retroceso durante el juego * * * *);
printf(" * * * * * *Alguien está jugando ajedrez en modo de dos jugadores y el otro usuario no puede controlar el cursor y el movimiento* * * * *);
printf(" * * * * * * * * * * * "
printf(" * * * * * * Ayuda * * * * *);
printf(" * * * * * * Presione cualquier tecla para regresar * * * * *);
printf(" * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * *);
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *);
getch();
}
int main()
{
int elección = 0;
System("Color 2b ");
Elección: elección del usuario (elección de amplificador);
if (select lt1 | | select gt4) ir a elegir;
if (choice= = 3) {gotoxy(1, 18);
printf("\nGracias por tu uso, adiós"); getch(); = = 4){ mostrar ayuda();Ir a la elección;}
NewShow();
DataGetAndChoose(elegir);
main();
p>
Devuelve 0;