13 авг. 2010 г.

Ход ферзя v. 2.0

Немного теории...

Ферзь (перс. ferzin - визирь, советник) — самая сильная шахматная фигура
В современных шахматах ферзь может перемещаться на любое число полей по вертикали, горизонтали и диагонали, объединяя возможности ладьи и слона (при условии, что на его пути нет фигур). Находясь на одном из центральных полей, ферзь может атаковать до 27 полей одновременно, в углу доски — до 21 поля.

Задача программы

Данная программа является модификацией программы "класс Queen", которая реализует концепцию поведения шахматной фигуры - "Ферзь".

Cкриншот работы программы


alt

И так начнем!

При создании хотелось затронуть как можно больше тем в одном приложении. А именно: объективно - ориентированное программирование (использование классов), правильное использование const и static функций в классе, концепция модульности программы, реализация динамических структур данных - списков, работа с динамической памятью - создание конструкторов и деструкторов. Большое количество комментариев поможет разобраться в трудных участках кода.

Основные возможности программы:

  • перемещение фигуры по шахматной доске;
  • вывод текущей позиции фигуры;
  • отображения всех ходов, на протяжении одного запуска приложения;
  • возможность принудительного выхода из программы.

Немного о структуре

Программа содержит
  • три модуля:
    • модуль queen содержит объявление и определение класса задающего поведение шахматной фигуры;
    • модуль log - класс, который хранит данные о всех ходах игрока, в качестве структуры данных использует двусвязный список;
    • main - код главной части программы.
  • одну надстройку:
    • drawqueen - надстройка для модуля queen, которая реализует вывод текущей позиции ферзя в консольном режиме

Class queen

Данный class дает возможность перемещать фигуру по доске, и отслеживать некорректные данные введенные пользователем. C++ позволяет использовать функции-члены типа static и const, в данной программе приведены оба типа с комментариями. Также рассмотрена возможность передачи параметров формальным аргументам функции по ссылке.

alt

На рисунке отображен результат работы функции:DrawQueen

Class Log - возможности

Log хранит полную информации о совершенных ходах. И при необходимости отображает его на экране.

alt
Основные возможности: удаление всех элементов двусвязного списка, добавление элемента в хвост списка, печать (отображение) списка, конструктор копирования, деструктор для освобождения памяти.

Содержание архива:

  • файл проекта
  • main.cpp, queen.h, queen.cpp, drawqueen.h, drawqueen.cpp, log.h, log.cpp
  • release\queen.exe
Проект разработан в: visual studio 2008