#Начало 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 'победа коня' - Выигрыш и проигрыш #победа ферзя 'Вы проиграли!' - #победа коня 'Вы победили!' -