Автор работы: Пользователь скрыл имя, 21 Декабря 2011 в 21:01, курсовая работа
История шахмат насчитывает не менее полутора тысяч лет. Считается, что игра-прародитель, чатуранга, появилась в Индии не позже VI века нашей эры. По мере распространения игры на Арабский Восток, затем в Европу и Африку, правила менялись. В том виде, который игра имеет в настоящее время, она сформировалась к XV веку, окончательно правила были стандартизованы в XIX веке, когда стали систематически проводиться международные турниры.
Задача о восьми ферзях — широко известная задача по расстановке фигур на шахматной доске. Исходная формулировка: «Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого».
Введение 3
1 Техническое задание 5
2 Разработка структуры программы 6
2.1 Общие сведения 9
2.2 Минимальные системные и аппаратные требования 11
3 Описание работы программы 12
4 Руководство пользователя 14
Заключение 17
Список используемой литературы 18
Приднестровский государственный университет им. Т.Г. Шевченко
Инженерно-технический институт
Кафедра «Программное обеспечение вычислительной техники
и автоматизированных
систем»
КУРСОВАЯ РАБОТА
по дисциплине «Программирование на языке высокого уровня»
"Расстановка ферзей
на
шахматном поле"
студент гр. 09ВТ1
Полежаев Дмитрий
Кирсанова А.В.
Тирасполь 2011
Содержание
Введение
История шахмат насчитывает не менее полутора тысяч лет. Считается, что игра-прародитель, чатуранга, появилась в Индии не позже VI века нашей эры. По мере распространения игры на Арабский Восток, затем в Европу и Африку, правила менялись. В том виде, который игра имеет в настоящее время, она сформировалась к XV веку, окончательно правила были стандартизованы в XIX веке, когда стали систематически проводиться международные турниры.
Задача о восьми ферзях — широко известная задача по расстановке фигур на шахматной доске. Исходная формулировка: «Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого».
Общее
число возможных расположений 8 ферзей
на 64-клеточной доске равно 4426165368.
Общее число возможных
Программа,
которая сможет расставлять ферзей по
всем правилам, позиционируется как интеллектуальная
программа. Её можно использовать как
наглядное пособие при решении студентами
или учениками задачи по расстановке ферзей.
Также программа может помочь провести
досуг. Наличие инструкции объяснит пользователю,
как необходимо расставлять ферзей.
1 Техническое задание
Для выполнения курсовой работы необходимо создать визуальную модель шахматной доски, размером n на n клеток. Необходимо организовать работу рекурсивного алгоритма, который будет выполнять проверку на постановку ферзей. Также необходимо сделать визуальный контроль пользователя за результатом работы алгоритма.
Основные задачи при разработке приложения по расстановке ферзей на шахматном поле:
2 Разработка структуры программы
Общая схема программы имеет вид, представленный на рисунке 1:
Рисунок
1 - Обобщенная функциональная схема программы
Алгоритм постановки ферзей представляет собой следующие методы:
Метод public void PlaceQueue - в этом методе происходит заполнение массива случайными значениями. Результат работы данного метода – это массив, все элементы которого имеют случайные значение.
Метод public void DisarrayQueen – этот метод выполняет непосредственно постановку ферзей или возврат к предыдущей постановке, если условие не удовлетворяется.
Последовательность работы метода DisarrayQueen:
Метод public bool IsSuitablePos – метод, проверяющий, «не бьется» ли поставленный ферзь по диагоналям. Строки и столбцы не проверяются, так как новый ферзь ставится только в свободную строку и столбец.
Метод private void ChangeSize - метод, сохраняющий настройки количества ферзей, указанных пользователем. Если пользователь указал буквы, а не цифры, то при подтверждении он получит сообщение о неправильном вводе.
Метод private void Clear – метод, очищающий панель для нового поля.
При работе кода возникли некоторые трудности. Например, необходимо было реализовать связь между массивом, где ячейки хранят наличие ферзя или его отсутствие, с графической составляющей на форме.
Путём
решения было создание изображения,
рисуемого программно. Считывались размеры
панели, на которой происходило рисование,
размеры делились на количество ферзей,
указанных пользователем. Затем при помощи
метода ShowDesk происходила прорисовка
шахматного поля с ферзями. Прорисовка
ферзя выглядит схематически. Ферзь на
шахматном поле отображается красным
кругом. Для того чтобы ферзь был прорисован
строго в указанном месте, шахматная доска
рисовалась по столбцам, затем рисовался
ферзь, и рисование переходило к следующему
столбцу.
Приведем алгоритм метода сохранения настроек количества ферзей, указанных пользователем:
private void ChangeSize(object sender, System.EventArgs e)
{
try
{
Queens
this.
}
catch
{
Queens
this.
}
}
Также интересным
является метод, выполняющий непосредственно
постановку ферзей или возврат к
предыдущей постановке, если условие
не удовлетворяется:
public void DisarrayQueen(int Y)
{
if ( Y == this.NumOfQueens )
this.ExitProce = true; //если текущий элемент последний, то сортировка закончена
if (this.ExitProce == true) return; //если сортировка закончена, то возвращаемся к PlaceQueue
for (int IterX = 0; IterX < this.NumOfQueens; IterX ++)
if (this.IsSuitablePos(Y, IterX)) //вызываем метод IsSuitablePos
{
}
2.1 Общие сведения
В последнее время С и С++ являются наиболее используемыми языками для разработки коммерческих и бизнес-приложений. Эти языки устраивают многих разработчиков, но в действительности не обеспечивают должной продуктивности разработки. К примеру, процесс написания приложения на С++ зачастую занимает значительно больше времени, чем разработка эквивалентного приложения, скажем, на Visual Basic. Сейчас существуют языки, увеличивающие продуктивность разработки за счет потери в гибкости, которая так привычна и необходима программистам на С/С++. Подобные решения являются весьма неудобными для разработчиков, и зачастую предлагаются значительно меньшие возможности. Также эти языки не ориентированы на взаимодействие с появляющимися сегодня системами, и очень часто они не соответствуют существующей практике программирования для Web. Многие разработчики хотели бы использовать современный язык, который позволял бы писать, читать и сопровождать программы с простотой Visual Basic и в то же время давал бы мощь и гибкость C++, обеспечивал бы доступ ко всем функциональным возможностям системы, взаимодействовал бы с существующими программами и легко работал бы с возникающими Web стандартами.
Учитывая
все подобные пожелания, Microsoft разработала
новый язык - C#. В него входит много полезных
особенностей - простота, объектная ориентированность,
типовая защищенность, "сборка мусора",
поддержка совместимости версий и многое
другое. Данные возможности позволяют
быстро и легко разрабатывать приложения,
особенно COM+ приложения и Web сервисы. При
создании C# его авторы учитывали достижения
многих других языков программирования:
C++, C, Java, SmallTalk, Delphi, Visual Basic и т.д. Надо заметить,
что по причине того, что C# разрабатывался
с чистого листа, у его авторов была возможность
(которой они явно воспользовались) оставить
в прошлом все неудобные и неприятные
особенности (существующие, как правило,
для обратной совместимости) любого из
предшествующих ему языков. В результате
получился действительно простой, удобный
и современный язык, по мощности не уступающий
С++, но существенно повышающий продуктивность
разработок.