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



         

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


IF XOD(2,2)=1 THEN RESULT "Победа компьютера": END

IF XOD(-2,2)=1 THEN EXIT SUB

FOR J=l TO 9

IF A(J)=0 THEN SHOW J,2: EXIT FOR

NEXT J END SUB

DEFSNG A-Z

SUB USER

DEFINT A-Z

Left=75: Right=77: Up=72: Down=80: Enter=13 k=0:

FOR J=l TO 9: k=k+ABS(A(J)): NEXT J IF k=18 THEN RESULT "Боевая ничья": END

m: ch$=INKEY$:

IF LEN(ch$)=0 THEN GOTO m

SELECT CASE ASC(RIGHTS(ch$,1))

CASE Left: CURIND CurX,3,-4,-l

CASE Right: CURIND CurX,ll,4/l

CASE Up: CURIND CurY,2,-2,-3

CASE Down: CURIND CurY,6,2,3

CASE Enter:

IF A(Ind)=0 THEN SHOW Ind,-2:

EXIT SUB

CASE ELSE: BEEP END SELECT

LOCATE y0-l+CurY,x0-l+CurX,l USER END SUB

DEFINT A-Z FUNCTION XOD(k%,kl%)

DIM J AS INTEGER,m AS INTEGER,p AS INTEGER XOD=0

FOR J=0 TO 7 m=J*3

IF A(lines(m))+A(lines(m+1))+A(lines(m+2))=2*k% THEN XOD=1

FOR p=m TO m+2

IF A(lines(p))=0 THEN SHOW lines(p),kl% EXIT FUNCTION END IF NEXT p

END IF NEXT J END FUNCTION

Программа 4_12.с

#include <stdio.h>

#include <conio.h>

void input(void);

void cur_ind(int *cur,int porog,int dcur,int dind);

void step345(void);

int xod(int k, int kl);

void showfint k, int c);

void result(char *s);

int a[9]={0,0,0,0,0,0,0,0,0}, b[9]={3,l,l,l,5,3,l,7,3},

х0=1, у0=1, j, CurX, CurY, Ind; main()

{

clrscr();

window(x0,y0,x0+13,y0+7);

show(5,2); /* Первый ход программы */

input(); /* Ввод 1-го хода игрока */

for(j=0; j<9; j++) /* Второй ход программы */

if (a[j]==-2) { show(b[j],2); break; }

m2:

input(); . /* Ввод последующих ходов игрока */

step345(); /* Последующие ходы программы */

goto m2;

}

/*--------------------------------*/

void result(char *s) {

window(40,l,60,2);

puts(s);

getch () ;

exit(0);

}

/*-------------------------------*/

void show(int k,int c) {

char pos[18]=(3,2,7,2,11,2,3,4,7,4,11,4,3,6,7,6,11,6};

char j;

clrscr ();

printf("+-----------+\n");

printf("| | | |\n");

printf ( "|----|----|----| \n") ;




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