printf("| | | |\n");
printf (" |----|----|----| \n"} ;
printf("| | | |\n");
printf ("+----------------+") ;
a[k-l]=c;
for(j=0; j<9; j++) {
gotoxy(x0-l+pos[j*2],y0-l+pos[j*2+l]);
if(a[j]==+2) printf("X");
if(a[j]==-2) printf("0"); }
CurX=x0+6; CurY=y0+3; Ind=5; gotoxy(CurX,CurY);
}
/*-------------------------------*/
int xod(int k, int k1) {
char line[24]={1,2,3,4,5,6,7,8,9,1,
4,7,2,5,8,3,6,9,1,5,9,3,5,7},
j,m,p;
for(j=0; j<8; j++)
{
m=j*3;
if(a[line[m]-1)+a[line[m+1]-1]+a[line[m+2]-1]==2*k)
{
printf ("\nm=%d",m) ; for(p=m; p<m+3; p++)
if(a[line[p]-l]==0) {
show(line[p],kl); return 1; } } } return 0;
}
/*-------------------------------------* /
void step345(void)
{
if(xod( 2,2)) result("Победа компьютера");
if(xod(-2,2)) return;
for(j=0; j<9; j++)
if(a[j]==0) {
show(j+l,2); break;
} }
/*----------------------------*/
void cur_ind(int *cur, int porog, int dcur, int dind) {
if( *cur != porog) {
*cur += dcur;
Ind += dind; }
}
/*----------------------------*/
void input(void) {
int ch, j, k;
for(k=0, j=0; j<9; j++) k+=abs(a[j]);
if(k==18) result("Боевая ничья");
ch=getch(); if(ch==0) ch=getch();
switch (ch)
{
case 75: cur_ind(&CurX, 3,-4,-l);break; /*Left*/
case 77: cur_ind(&CurX,11, 4, 1); break; /*Right*/
case 72: cur_ind(&CurY, 2,-2,-3); break; /*Up*/
case 80: cur_ind(&CurY, 6, 2, 3); break; /*Down*/ case 13:
printf("\nInd=%d",Ind); /*Enter*/
if(a[Ind-l]==0)
{ show(Ind,-2); return;}
else
printf("%c",0x7);
break;
default: printf("%c",0x7); }
gotoxy(x0-l+CurX,y0-l+CurY);
input(); }
Программа 4_12.pas
program krestiki;
uses Crt;
label m2;
const
a-.array [1..9] of integer = (0,0,0,0,0,0,0,0,0);
b:array [1..9] of byte = (3,1,1,1,5,3,1,7,3);
x0=5; y0=5;
var
j, CurX, CurY, Ind : word; procedure result(s:string);