Напечатать (символами в консоли) шахматную доску, на которой отмечен сам ферзь и поля, которые он бьёт - Pascal
Формулировка задачи:
На шахматной доске стоит единственный ферзь. Программа должна запрашивать его позицию, после чего печатать (символами в консоли) шахматную доску, на которой отмечен сам ферзь и поля, которые он бьёт. Диалог продолжается до тех пор, пока не будет введена команда выхода. ДОПОЛНИТЕЛЬНО: использовать различные символы для отображения белых и чёрных полей, отображать номера горизонталей и вертикалей (цифрами 1-8 и буквами A-H) слева и снизу от доски.
Решение задачи: «Напечатать (символами в консоли) шахматную доску, на которой отмечен сам ферзь и поля, которые он бьёт»
textual
Листинг программы
uses Crt; procedure Show(nStr, nCol: Byte); var i, j: Byte; begin for j:=8 downto 1 do begin TextAttr:=7; Write(j,' '); for i:=1 to 8 do begin if Odd(i+j) then TextAttr:=$7F else TextAttr:=$6F; if (abs(nStr-j)=abs(nCol-i)) or (nStr=j) or (nCol=i) then Write(' * ') else Write(' ') end; TextAttr:=7; WriteLn; end; WriteLn(' A B C D E F G H'); end; var s: String[2]; begin repeat repeat Write('Введите позицию ферзя, выход-0: '); ReadLn(s); until (s='0') or (Length(s)=2) and (UpCase(s[1]) in ['A'..'Z']) and (s[2] in ['1'..'8']); if s='0' then Break; Show(Ord(s[2])-Ord('0'),Ord(UpCase(s[1]))-Ord('A')+1); until False; end.
Объяснение кода листинга программы
- Используется модуль Crt для работы с консолью.
- Есть процедура Show, которая выводит шахматную доску на экран.
- В ней используются две вложенные циклы: внешний цикл для строк (от 8 до 1) и внутренний цикл для столбцов (от 1 до 8).
- В начале каждой строки выводится символ, соответствующий позиции ферзя (если он находится в этой строке).
- Затем в каждой ячейке (за исключением диагоналей и главной горизонтали/вертикали) выводится символ
*
, если ферзь может ходить в эту ячейку, и - После каждой строки выводится символ новой строки.
- В конце выводится строка с названиями столбцов.
- Есть блок кода, который повторяет вывод приглашения для ввода позиции ферзя до тех пор, пока не будет введена корректная позиция (0 для выхода).
- Если позиция корректна, вызывается процедура Show с соответствующими параметрами.
- Код повторяется до тех пор, пока не будет введена некорректная позиция или не будет выбрано выйти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д