Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 29


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




Содержание  Назад  Вперед