Red de conocimiento informático - Computadora portátil - Otelo en lenguaje C

Otelo en lenguaje C

#include "graphics.h"/* Archivo de encabezado del sistema de gráficos*/

#define LEFT 0x4b00 /*Valor de la tecla del cursor izquierdo*/

#define RIGHT 0x4d00 /*Tecla del cursor hacia la derecha valor */

#define ABAJO 0x5000 /*Valor de tecla cursor hacia abajo*/

#define ARRIBA 0x4800 /*Valor de tecla cursor hacia arriba*/

#define ESC 0x011b /*Valor clave ESC*/

#define ENTER 0x1c0d /*Ingresar valor clave*/

int a[8][8]={0}, clave, puntuación1 , score2 /* Presione el botón y almacene las puntuaciones y variables específicas de las piezas de ajedrez */

char playone[3], playtwo[3] /* Convierta las puntuaciones de dos personas en una cadena de salida; */

void playtoplay(void);/* Función para que todos jueguen ajedrez unos contra otros*/

void DrawQp(void);/* Función para dibujar el tablero de ajedrez*/

void SetPlayColor( int x);/* Establece el color de la pieza de ajedrez por primera vez*/

void MoveColor(int x,int y);/*Restaura el estado original del tablero de ajedrez*/

int QpChange (int x, int y, int z);/* Determinar los cambios en el tablero de ajedrez*/

void DoScore(void);/* Procesar la puntuación*/

void PrintScore(int n );/* Puntuación de salida*/

void playWin(void)./* Información del ganador de salida*/

/****** Función principal***** ****/

void main(void)

{

int gd =DETECT,gr;

initgraph(&gd, &gr, "c. /\\tc ";

"c:\\tc "); /

DrawQp();/* Dibuja el tablero de ajedrez* /

playtoplay();/* Todos juegan unos contra otros*/

getch();

closegraph();/* closegraph();/* sistema closegraph */

}

void DrawQp()/* dibuja el tablero**

{

int i,j;

score1=score2=0;/* El jugador comienza desde 0 puntos***

setbkcolor(AZUL);

for(i=100;i<= 420; i+=40 )

{

line(100,i,420, i);/* dibuja una línea horizontal*/

line(i,100 ,i,420 /* dibuja una línea vertical*/

}

<); p> setcolor(0); /* Cancelar un círculo alrededor del círculo*/

setfillstyle(SOLID_FILL,15);/* Modo de relleno sólido blanco*/

fillellipse(500,200, 15,15); /* Dibuja piezas de ajedrez en la posición donde se muestra la puntuación*/

setfillstyle(SOLID_FILL,8/* Modo de relleno sólido negro*/

fillellipse); (500

,300,15,15);

a[3][3]=a[4][4]=1;/* Inicializa dos discos negros*/

a[ 3][4]=a[4][3]=2;/* Inicializa dos discos blancos*/

setfillstyle(SOLID_FILL,WHITE);

filleipllse (123 *40,123*40,15,15);

filleipllse(124*40,124*40,15,15);

setfillstyle( SOLID_FILL ,8);

fillellipse(123*40,124*40,15,15);

fillellipse(124*40,123*40,15,15 );

score1=score2=2; /*Puntuación después de los cambios de ajedrez*/

DoScore() /* Genera la puntuación inicial*/

}

void playtoplay()/* Todos juegan unos contra otros*/

{

int x,y,t=1,i,j,cc =0;

while(1)/* Cambiar jugadores para moverse*/

void playtoplay()/* Todos juegan unos contra otros*

{

int x,y,t=1,i,j,cc=0;

while(1)/* Cambiar jugadores para moverse

{

p>

x=120,y=80;

while(1) /* Especifica el proceso de juego del jugador de ajedrez*/

{

PrintScore(1) ;/* Genera la puntuación del jugador 1*/

PrintScore(2);/* Genera la puntuación del jugador 2*/

SetPlayColor(t);/ * La variable t se utiliza para determinar el color de la pieza de ajedrez que tiene el jugador*/

fillellipse(x,y,15,15);

key=bioskey(0);/* Recibir clave* /

if(key===ESC)/* Saltar del juego*/

descanso;

else

if(key= ==ENTER)/* Si se presiona la tecla, salta del bucle*/

{

if(y!=80&&a[(x - 120)/40][(y-120) /40]!=1

&&a[(x-120)/40][(y-120)/40]!=2)/* Si no hay ninguna pieza de ajedrez en la posición de colocación*/

{

if(t%2==1)/* Si el jugador 1 se mueve*/

a[(x-120)/40][(y-120 )/40]=1;

else/* De lo contrario el jugador 2 mueve*/

a[(x- 120)/40 ][(y-120)/40]= 2;

if(! QpChange(x,y,t))/* Determinar el cambio del tablero después de la jugada*/

{

a[(x-120)/40][(y -120) /40]=0;/* Restaurar estado del espacio**

cc++;/* Comenzar a contar el número de intentos*/

if(cc>=64-score1 -score2) / * Detener si los intentos exceden el número de espacios*/

{

MoveColor(x,y);

fillellipse(x,y,15, 15 );

descanso;

>

}

else

continuar;/* si la clave no es válida*/

}

DoScore(); /* Cambio de puntuación*/

descanso;/* Si el tablero cambia, es el turno de jugar del oponente*/

}

else/* Si ya hay piezas, luego continúa presionando la tecla*/

continuar;

}

else /* Teclas de cuatro direcciones*/

if(key ==LEFT&&x>120)/* Tecla de flecha izquierda*/

{

MoveColor(x, y);

MoveColor (x, y) ;

if(key==LEFT&&x>120) y);

fillellipse(x,y,15,15);

SetPlayColor(t );

x-=40;

fillellipse(x,y,15,15);

}

else

p>

if( key==RIGHT&&x<400&&y>80)/* Tecla de flecha derecha**

{

MoveColor(x,y );

fillellipse(x,y,15,15);

SetPlayColor(t);

x+=40;

fillellipse(x,y,15 ,15);

}

else

if(key==UP&&y>120)/*Tecla de flecha arriba**

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t );

y-=40;

fillellipse(x,y,15,15);

}

más

if( key==DOWN&&y<400)/* Tecla de flecha hacia abajo**

{

MoveColor(x,y);

fillellipse(x,y,15 ,15);

SetPlayColor(t);

y+=40;

fillellipse(x,y,15,15) );

}

}

if(key==ESC)/* final del juego**

descanso;

if ((score1+score2)==64||score1==0||score2==0)/* Cuando el puntaje está completo o el número de piezas en un lado es 0, se determinará el resultado

{

playWin();/* Genera el resultado final*/

break;

}

t=t%2 +1; /* Un lado se mueve Finalmente, cambia el color de la pieza de ajedrez, que es el color del otro lado.

Es decir, es el turno de otro jugador*/

cc=0; /* El valor del conteo vuelve a 0 */

}/*end while*/

}

void SetPlayColor(int t)/* Establece el color de la pieza de ajedrez*/

{

if (t%2==1)

setfillstyle(SOLID_FILL,15);/* blanco**

else

setfillstyle(SOLID_FILL,8);/* gris for(k=i- 1,kk= j+1;k>=0&&kk<8;k--,kk++)

if(a[k][kk]==a[i][j]||!a [k][ kk])

descanso;

if(a[k][kk]&&&k<6)/* derecha arriba< amp;k>=0&&kk<8)

{

for(ii=i-1,jj=j+1;ii>k&&k>=0;ii--,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(12ii*40,12jj*40,15,15);

}

si(ii!=i-1)

sí=1;

}

}

if(i<6&&j& gt;1)/* Esquina inferior izquierda**

{

for(k=i+1,kk=j-1; k<8&&kk>= 0;k++,kk--)

if(a[k][kk]==a[i][j]||!a[k][kk])

descanso;

if(a[k][kk]!=0&&k<8&&kk>=0)

{

for(ii =i+1,jj=j-1;ii

{

a[ii][jj] =a [i] [j];

fillellipse(12ii*40,12jj*40,15,15);

}

si( ii!=i+ 1)

sí=1;

}

}

si(i>1&&& j>1 )/* arriba a la izquierda**

{

for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk- -)

if(a[k][kk]==a[i][j]||! a[k][kk])

descanso;

if(a[k][kk]!=0&&k>=0&&kk>=0)

{

for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--)

{

a[ii][jj] =a[i][j];

fillellipse(12ii*40,12jj*40,15,15);

}

si(ii!=i-1)

s=1;

}

}

if(i<6&&j<6)/* derecha abajo*

{

for(k=i+1,kk=j+1;kk<8&&kk<8;k++,kk++)

if(a[k][kk]==a[i ][j]||! a[k][kk])

descanso;

si(a[k][kk]!= 0&&kk<8&&k<8)

{

for(ii=i+1,jj=j+1;ii

{

a[ii][jj]=a[ i][j];

fillellipse(12ii*40,12jj*40,15,15);

}

si(ii!=i+1)

sí=1;

}

}

return yes;/* devuelve si se cambió el color de una pieza */

}

void DoScore()/* puntuación del proceso */

{

int i,j;

score1=score2=0;/* Reiniciar puntuación*/

for(i=0;i<8;i++ )

for(j=0;j<8;j++)

if(a[i][j]==1)/* Calcular las puntuaciones de dos personas respectivamente*/

puntuación1++;

else

if(a[i][j]==2)

puntuación2++;

}

void PrintScore(int playnum)/* Puntuación de salida**

{

if(playnum==1)/* Borrar puntuación anterior**

{

p>

{

setfillstyle(SOLID_FILL,BLUE);<

bar(550,100,640,400);

}

setcolor( RED);

settextstyle(0,0,4);/* Establece el estilo de salida del texto*/

if(playnum ==1)/* Determinar la puntuación de qué jugador se genera, Salida ** en diferentes ubicaciones

{

sprintf(playone,"%d",score1);

outtextxy(550,200,playone);

}

else

{

sprintf(playtwo,"%d", puntuación2);

outtextxy(550,300 ,playtwo);

}

setcolor(0);

}

void playWin()/* Genera el resultado final ganador */

{

settextstyle(0,0,4);

setcolor(12) ;

if(score2>score1 )/* Comienza a juzgar el resultado final**

outtextxy(100,50, "las negras ganan

! ");

else

if(score2

outtextxy(100,50, "¡ganan las blancas!");

else

outtextxy(60,50, "¡todos ustedes ganan!");

}