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



         

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


Совет 3 (Си, Паскаль)

Некоторая экономия в объеме программы отображения игрового поля достигнута за счет использования окна вывода (window). Задавая нужные значения констант (хО, уО), можно переместить игровое поле в другое место экрана.

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

DECLARE SUB STEP3450

DECLARE SUB RESULT(s$)

DECLARE SUB CURIND(cur%,porog%,dcur%,dind%)

DECLARE SUB SHOW(k%,c%)

DECLARE SUB USER()

DECLARE FUNCTION XOD!(k%,kl%)

DEFINT A-Z

DIM SHARED POS1(1 TO 18) AS INTEGER,lines(0 TO 23) AS INTEGER

DIM SHARED A(l TO 9) AS INTEGER,b(l TO 9) AS INTEGER

DIM SHARED x0 AS INTEGER,у0 AS INTEGER

DIM SHARED Ind AS INTEGER,CurX AS INTEGER,CurY AS INTEGER

FOR k=l TO 9: A(k)=0: NEXT k

DATA 3,1,1,1,5,3,1,7,3

FOR k=l TO 9: READ b(k): NEXT k x0=l: y0=l

DATA 3,2, 7, 2, 11, 2, 3,4,

7, 4, 11, 4,3, 6, 7, 6, 11, 6

FOR k=l TO 18: READ POSl(k): NEXT k

DATA 1,2,3,4,5,6,7,8,9,1,4,7,

2,5,8,3,6,9,1,5,9,3,5,7

FOR k=0 TO 23: READ lines(k): NEXT k

CLS

SHOW 5,2 ' Первый ход программы

USER ' Ввод 1-го хода игрока

FOR J=l TO 9 ' Второй ход программы

IF A(J)=-2 THEN SHOW b(J),2: EXIT FOR NEXT J

m2: USER ' Ввод последующих ходов игрока

STEP345 ' Последующие ходы программы

GOTO m2 END

DEFSNG A-Z

SUB CURIND(cur%,porog%,dcur%,dind%)

IF curoporog THEN cur=cur+dcur: Ind=Ind+dind END SUB

DEFSNG A-Z SUB RESULT(s$)

LOCATE 1,40: PRINT s$: END END SUB

DEFINT A-Z

SUB SHOW(k%,C%) DEFINT A-Z CLS

LOCATE x0,y0: PRINT "+-------------------+"

LOCATE x0+l,y0: PRINT "| | | |"

LOCATE x0+2, y0: PRINT " |-----|-----|-----| "

LOCATE x0+3,y0: PRINT "| | | |"

LOCATE x0+4,y0: PRINT "|-----|-----|-----|"

LOCATE x0+5,y0: PRINT "| | | |"

LOCATE x0+6,y0: PRINT "+-----+-----+-----+"

A(k%)=c% FOR J=l TO 9

LOCATE y0-l+POSl(J*2),x0-1+POSl(J*2-l)

IF A(J)=2 THEN PRINT "X"

IF A(J)=-2 THEN PRINT "0" NEXT J

CurX=xO+6: CurY=y0+3: Ind=5 LOCATE CurY,CurX,l END SUB

SUB STEPS45 DEFINT A-Z




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