Напечатать (символами в консоли) шахматную доску, на которой отмечен сам ферзь и поля, которые он бьёт - 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.

Объяснение кода листинга программы

  1. Используется модуль Crt для работы с консолью.
  2. Есть процедура Show, которая выводит шахматную доску на экран.
  3. В ней используются две вложенные циклы: внешний цикл для строк (от 8 до 1) и внутренний цикл для столбцов (от 1 до 8).
  4. В начале каждой строки выводится символ, соответствующий позиции ферзя (если он находится в этой строке).
  5. Затем в каждой ячейке (за исключением диагоналей и главной горизонтали/вертикали) выводится символ *, если ферзь может ходить в эту ячейку, и в противном случае.
  6. После каждой строки выводится символ новой строки.
  7. В конце выводится строка с названиями столбцов.
  8. Есть блок кода, который повторяет вывод приглашения для ввода позиции ферзя до тех пор, пока не будет введена корректная позиция (0 для выхода).
  9. Если позиция корректна, вызывается процедура Show с соответствующими параметрами.
  10. Код повторяется до тех пор, пока не будет введена некорректная позиция или не будет выбрано выйти.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы