Приложения______________________________________257
IF tempt = 0 THEN
EXIT DO ' выход по пустому полю ELSE
IF temp% = -kr THEN
knext = 1 'признак второго и последующих шагов ELSE
IF knext = 1 THEN OK% = 1 'ход возможен EXIT DO END IF END IF LOOP RETURN
Файл RVRS1.BAS
SCREEN 13
DEFINB I-K
DATA 1,1,0,-1,-1,-1,0,1,1,1
DIM dij (I TO 10)
FOR kd = 1 ТО 10 'приращения для 8 направлений READ temp% dij(kd) = temp% NEXT kd
DIM lst(l TO 32) AS INTEGER 'для списка возможных ходов DIM ptr AS INTEGER 'для количества возможных ходов DIM rank(l TO 32) AS INTEGER
'для ранжирования ходов компьютера DIM rvr(l TO 8, 1 ТО 8) AS INTEGER
'для доски с фишками
FOR k = 1 ТО 64 'очистка доски i = (k - 1) \ 8 + 1: j = (k - 1) MOD 8+1 rvr(i, j) = О NEXT k
rvr(4, 4) = 1: rvr(5, 5) = 1 'фишки игрока rvr(4, 5) = -1: rvr(5, 4) = -1 'фишки компьютера GOSUB showscore 'показ доски kpir = 1: kptr = 1 DO 'начало цикла игры
GOSUB getlst 'получение списка ходов IF ptr = О THEN
kpir = 3 - kpir: kptr = 1 GOSUB getlst
IF ptr = 0 THEN EXIT DO 'выход по отсутствию ходов ELSE
IF kpir = 1 THEN 'ход игрока key$ = ""
DO 'опрос клавиатуры k = 1st(kptr)
'номер квадрата для возможного хода i = (k - 1) \ 8 + 1: j = (k - 1) MOD 8+1 CIRCLE (26 * i + 38, 21 * j - 6) , 10, 3 + kr
показ возможного хода key$ = LCASE$(INKEY$) kact = INSTR(1, " qas", key$) IF kact > 2 THEN