экран контурное изображение доски (окраска клеток несущественна для решения задачи) и поместим в одну из клеток изображение маркера. Этот маркер (аналог курсора при вводе текста) нужен для показа той клетки доски, на которую может быть поставлен ферзь.
DEFINT I-K
CLS 'построение изображения доски и метки
ТОР$ = CHR$(218): WAbL$ = CHR$(179)
SHELP$ = CHR$(195): BOT$ = CHR$(192)
FOR I = 1 TO 7
TOP$ = TOP$ + STRING$(4,196) + CHR$ (194)
WAI.L$ = WALL$ + STRING$(4,32) + CHR$ (179)
SHELF$ = SHELF$ + STRING$(4,196) + CHR$(197)
BOT$ = ВОТ$ + STRING$(4,196) + CHR$(193) NEXT I
TOP$ = TOP$ + STRING$(4,196) + CHR$(191) WALL$ = WAbL$ + STRING$(4,32) + CHR$(179) SHELP$ = SHELF$ + STRING$(4,196) + CHR$ (180) BOT$ = ВОТ$ + STRING$(4,196) + CHR$(217) PRINT TOP$ FOR I = 1 ТО 7
PRINT WALL$
PRINT SHELF$ NEXT I
PRINT WALL$ PRINT BOT$ 1=4: J =4:
LOCATE 2*1, 5*J-2 PRINT CHR$(176) + CHR$(176);
Цикл игры начинается с опроса клавиатуры. Нажатие стрелок указывает направление перемещения маркера. Нажатие клавиши q используется играющим, чтобы "попросить пардону" у программы и выйти из игры. А по нажатию клавиши Enter производится ввод условного (весьма!) изображения ферзя.
DO 'начало цикла игры v$ = "" 'опрос клавиатуры DO
v$ = INKEY$
LOOP UNTIL (v$ = "q" OR LEN(v$) > 1 OR v$ = CHR$ (13) ) IF v$ = "q" THEM EXIT DO
Id = 0: Jd = 0 'определение изменения координат SELECT CASE RIGHT$(v$, 1) CASE "P": Id = 1 CASE "M": Jd = 1 CASE "K": Jd = -1 CASE "H": Id = -1 END SELECT
Если координаты маркера не изменились, то вместо изображения маркера выводится изображение ферзя и производится вывод пробелов во все поля, которые пробиваются новым ферзем.
IF Id = О AND Jd = О THEN
'очистка битых полей новым ферзем FOR in = 1 ТО 8