#Начало
usehtml=1 & fsize=14 & ! устанавливаем HTML режим и оптимальный размер шрифта
showobjs 0 & showinput 0 & showstat 0 & ! скрываем не нужные окошки
! задаём начальные позиции фигур
конь_x=2 & конь_y=1
ферзь_x=4 & ферзь_y=8
ход_коня=0 & ! как-будто предыдущий раз ходил ферзь (булевая переменная, 0 - ложь, -1 - истина)
'Вы играете белым конём.'
act 'Начать':gt 'ход'
-
#ход
белая=-1 & ! как-будто предыдущее поле было белым
! выводим таблицу
'
'
i=8
:строки
*p '' & ! начинаем выводить ряд полей
j=0
:колонки
$поле=' ' & ! по-умолчанию текущее поле - пустое
белая=no белая & ! инверсия цвета поля
! определяем строку с цветом для HTML (поля с индексами строк / столбцов будут зелёными)
if i>0 and j>0:$цвет=$iif(белая, 'FFFFFF', 'DDDDDD') else $цвет='00FF00'
! выводим индексы в левых и нижних полях
if j=0:$поле=$str(i)
if i=0:$поле=$str(j)
! показываем фигуры
if ферзь_x=j and ферзь_y=i:$поле='Ф'
if конь_x=j and конь_y=i:$поле='К'
! выводим поле с заданным цветом и содержимым
*p '<<$поле>> | '
j=j+1
if j<=8:jump 'колонки'
*p '
' & ! ряд полей закончен
i=i-1
if i>=0:jump 'строки'
'
' & ! конец таблицы
'Ваша позиция: <<конь_x>>,<<конь_y>>'
'Позиция ферзя: <<ферзь_x>>,<<ферзь_y>>'
! инверсия хода и переход на нужную локацию
ход_коня=no ход_коня & xgt $iif(ход_коня, 'ход коня', 'ход ферзя')
-
На данной локации выводим доступные игроку ходы
#ход коня
x = конь_x & y = конь_y
if x>2 and y<8:act 'Идти на (<>,<>)':конь_x=x-2 & конь_y=y+1 & gt 'ход'
if x>1 and y<7:act 'Идти на (<>,<>)':конь_x=x-1 & конь_y=y+2 & gt 'ход'
if x<8 and y<7:act 'Идти на (<>,<>)':конь_x=x+1 & конь_y=y+2 & gt 'ход'
if x<7 and y<8:act 'Идти на (<>,<>)':конь_x=x+2 & конь_y=y+1 & gt 'ход'
if x<7 and y>1:act 'Идти на (<>,<>)':конь_x=x+2 & конь_y=y-1 & gt 'ход'
if x<8 and y>2:act 'Идти на (<>,<>)':конь_x=x+1 & конь_y=y-2 & gt 'ход'
if x>1 and y>2:act 'Идти на (<>,<>)':конь_x=x-1 & конь_y=y-2 & gt 'ход'
if x>2 and y>1:act 'Идти на (<>,<>)':конь_x=x-2 & конь_y=y-1 & gt 'ход'
-
Ход компьютера
#ход ферзя
gs 'проверка для коня' & gs 'проверка для ферзя'
x=ферзь_x & y=ферзь_y
! определяем на сколько полей можно ходить
влево=x-1 & вправо=8-x & вверх=8-y & вниз=y-1
! составляем список возможных ходов с максимальными расстояниями
k=0
if вниз>0:ход[k]=1 & длина[k] = вниз & k=k+1
if вниз>0 and вправо>0:ход[k]=2 & длина[k] = min(вниз, вправо) & k=k+1
if вправо>0:ход[k]=3 & длина[k] = вправо & k=k+1
if вправо>0 and вверх>0:ход[k]=4 & длина[k] = min(вправо, вверх) & k=k+1
if вверх>0:ход[k]=5 & длина[k] = вверх & k=k+1
if вверх>0 and влево>0:ход[k]=6 & длина[k] = min(вверх, влево) & k=k+1
if влево>0:ход[k]=7 & длина[k] = влево & k=k+1
if влево>0 and вниз>0:ход[k]=8 & длина[k] = min(влево, вниз) & k=k+1
! теперь в k - количество возможных вариантов. выбираем ход
выбор=rand(0,k-1)
d=ход[выбор]
l=rand(1, длина[выбор])
! ходим в выбранном направлении на выбранное число полей
if d=1:y=y-l
if d=2:x=x+l & y=y-l
if d=3:x=x+l
if d=4:x=x+l & y=y+l
if d=5:y=y+l
if d=6:x=x-l & y=y+l
if d=7:x=x-l
if d=8:x=x-l & y=y-l
ферзь_x=x & ферзь_y=y
gt 'ход'
-
Проверка, бъёт ли ферзь коня
#проверка для ферзя
if ферзь_x=конь_x or ферзь_y=конь_y:xgt 'победа ферзя'
разница_x=конь_x-ферзь_x
if ферзь_y+разница_x=конь_y or ферзь_y-разница_x=конь_y:xgt 'победа ферзя'
-
Проверка, побил ли конь ферзя
#проверка для коня
if конь_x=ферзь_x and конь_y=ферзь_y:xgt 'победа коня'
-
Выигрыш и проигрыш
#победа ферзя
'Вы проиграли!'
-
#победа коня
'Вы победили!'
-