Red de conocimiento informático - Consumibles informáticos - Encuentre un programa de backgammon en lenguaje C de alta puntuación

Encuentre un programa de backgammon en lenguaje C de alta puntuación

//Pero estos códigos aún no se pueden ejecutar en TC por motivos del compilador. Utilice VC.

# 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 )

for(j = 0; j lt15; j )

datos de ajedrez[I][j]= 0;

system("cls");

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 }

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>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;