Otelo en lenguaje C
#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; */ p>
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 ); p>
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; p>
while(1)/* Cambiar jugadores para moverse*/
void playtoplay()/* Todos juegan unos contra otros*
{ p>
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 p>
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;
}
} p>
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- -) p> 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í s=1; } } if(i<6&&j<6)/* derecha abajo* { p> 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) p> { 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!"); }