Компьютерное моделирование игры в шахматы
Значение компьютерного моделирования, прогнозирования событий, связанных с объектом моделирования. Совокупность взаимосвязанных элементов, важных для целей моделирования. Особенности моделирования, знакомство со средой программирования Турбо Паскаль.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 17.05.2011 |
Размер файла | 232,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1.Теоретическая часть
1.1 Понятие компьютерного моделирования
1.2 Теория игр. Особенности моделирования «Шахматной доски»
2. Проектная часть
2.1 Определение задания
2.2 Знакомство со средой программирования Турбо Паскаль
2.3 Графика в Турбо Паскале
2.4 Программирование
Заключение
Список используемой литературы
Приложение
Введение
моделирование элемент программирование
В современных условиях возрастает значение компьютерного моделирования, позволяющего отразить разнообразные процессы через программирование. Компьютерная модель позволяет подробно рассмотреть и проанализировать какие-либо физические процессы, по каким-либо причинам сложные для рассмотрения в их естественной среде.
Рассматривая такую предметную область как логические игры, в частности шахматы, несомненно, невозможно обойтись без создания компьютерной модели выбранной игры для изучения всевозможных комбинаций и тренировки навыков игры.
Актуальность создания компьютерных моделей очевидна:
- возможность использования модели людьми, не знакомыми с IT-технологиями;
- возможность подробного изучения работы каких-либо физических, химических, биологических и любых других процессов;
- получение расчетов;
- упрощение прогнозирования событий, связанных с объектом моделирования;
- возможность изучения объектов, которые трудно изучить непосредственно.
Целью данной курсовой работы является создание компьютерной модели игры в шахматы - «Шахматная доска».
Для достижения этой цели в работе решаются следующие задачи:
- изучить понятие компьютерного моделирования;
- выделить особенности моделирования компьютерных игр;
- выбрать оптимальную среду программирования
- создать программу модели компьютерной игры;
- с помощью созданной программы выполнить условия задания курсовой работы.
Практическая значимость работы.
Полученные результаты, материал курсовой работы можно использовать как основу для изучения игры шахматы и создания более сложной модели.
Структура курсовой работы.
Данная курсовая работа состоит из Введения, двух разделов, Заключения, списка используемой литературы, а так же листингом, содержащим код программы, описанной в работе.
1. Разработка требования к базе данных
В процессе разработки компьютерной модели «Шахматная доска» необходимо определить следующие понятия:
1 Компьютерное моделирование.
2 Особенности игры в шахматы.
3 Теория игр в моделировании.
Перейдем к подробному рассмотрению этих понятий:
1.1 Понятие компьютерного моделирования
Моделирование, в том числе и компьютерное моделирование, как познавательный приём неотделимо от развития знания. На сегодняшний день практически в каждой науке о природе, живой и неживой, об обществе, построение и использование моделей является одним из орудиев познания. Реальные объекты и процессы бывают столь многогранны и сложны, что лучшим способом их изучения часто является построение модели, отображающей лишь какую-то грань реальности и потому более простой, чем эта реальность, и исследование вначале этой модели.
В моделировании есть два разных пути. Модель может быть похожей копией объекта, выполненной из другого материала, в другом масштабе, с отсутствием ряда деталей. Например, это игрушечный кораблик, самолетик, домик из кубиков и множество других натурных моделей. Модель может, однако, отображать реальность более абстрактно - словесным описанием в свободной форме, описанием, формализованным по каким-то правилам, математическими соотношениями и так далее.
Компьютерная модель - представление информации о моделируемой системе средствами компьютера.
Система - совокупность взаимосвязанных элементов, обладающих свойствами, отличными от свойств отдельных элементов.
Элемент - это объект, обладающий свойствами, важными для целей моделирования. В компьютерной модели свойства элемента представляются величинами - характеристиками элемента.
Связь между элементами описывается с помощью величин и алгоритмов, в частности вычислительных формул.
Состояние системы представляется в компьютерной модели набором характеристик элементов и связей между элементами. Структура данных, описывающих состояние, не зависит от конкретного состояния и не меняется при его смене; изменяется только значение характеристик.
Если состояния системы функционально зависят от некоторого параметра, то процессом называют набор состояний, соответствующий упорядоченному изменению параметра. Параметры в системе могут меняться как непрерывно, так и дискретно.
В компьютерной модели изменение параметра всегда дискретно. Непрерывные процессы можно моделировать на компьютере, выбирая дискретную серию значений параметра так, чтобы последовательные состояния незначительно отличались друг от друга, или, другими словами, минимизируя шаг по времени.
Различают статистические и динамические модели.
Статические модели - модели, в которых предоставлена информация об одном состоянии системы.
Динамические модели - модели, в которых представлена информация о состояниях системы и процессах смены состояний.
1.2 Теория игр. Особенности моделирования «Шахматной доски»
Любая игра отражает в той или иной мере столкновение интересов. Экономическая наука изучает подобное столкновение интересов, так как конкуренция является именно таким столкновением. Но лишь в сороковые годы двадцатого века это столкновение стало предметом математического исследования, прежде всего в области экономики.
Предмет оказался чрезвычайно сложным, даже для математики. И даже сейчас успехи теории игр довольно ограничены. Тем не менее, она нашла своё применение особенно в военном деле, так как война это столкновение интересов практически в чистом виде. В экономике теория игр также находит своё применение.
Безусловно, та теория игр, которая развивается в наше время, еще не является вполне совершенной. Она не предписывает поведение, ведущее к выигрышу. Она лишь указывает, чего может добиться игрок в наихудшей для него ситуации и как он должен действовать, чтобы в этой наихудшей ситуации добиться минимального проигрыша (или максимального выигрыша).
Любая игра предполагает наличие некоторого числа участвующих в ней лиц (игроков). Могут быть игры с одним игроком, например, пасьянс; двумя игроками. Игрок получает доход либо проигрыш, зависящий от его поведения и поведения других участников.
Всякая игра состоит из партий, которые начинаются и заканчиваются, после чего игрокам выплачиваются их выигрыши. В свою очередь, каждая партия состоит из ходов, которые одновременно или последовательно делают игроки. Описание игры как последовательности ходов носит название позиционной формы игры.
Предположим, имеется два игрока. В распоряжении первого игрока имеется всего n возможных ходов i=1,2,3,...,n; в распоряжении второго игрока имеется m возможных ходов j=1,2,3,..., m. Эти возможные ходы называются чистыми стратегиями игроков. Оба игрока делают определенное количество ходов, после чего партия считается законченной.
При моделировании какой-либо уже существующей игры следует учесть ее специфику. В данной работе создается компьютерная модель игры в шахматы.
Шахматы -- настольная логическая игра специальными фигурами для двух соперников.
Шахматная партия играется на доске, состоящей из шестидесяти четырех квадратов, попеременно светлых (белые поля) и темных (черные поля). Ряды полей называют линиями, которые могут быть вертикалями, горизонталями и диагоналями.
Каждая горизонтальная линия пронумерована от «1» до «8». Каждая вертикальная линия пронумерована латинскими буквами от «А» до «Н». Каждое поле доски имеет свои координаты, которые образуются путем написания наименования вертикали и номера горизонтали.
Начинает партию игрок, у которого белые фигуры. Затем, пока игра не закончится, ходы делают поочередно. Цвет фигур партнеров в любительских партиях определяется жребием, а в соревнованиях - правилами проведения. Ходом называют перемещение фигуры с одного поля на другое, свободное либо занятое фигурой противника.
Создавая модель, следует учесть правила игры. Так в шахматах каждая фигура двигается по определенной схеме. Например, ферзь ходит на любое поле по вертикали, горизонтали и диагонали, на которых находится; конь ходит своеобразным зигзагом - через соседнее поле (даже занятое) по вертикали или горизонтали, удаляясь затем от места исходного положения на одно из смежных полей по диагонали. Подобные правила существуют для каждой шахматной фигуры, поэтому при моделировании их обязательно следует описывать средствами выбранного языка программирования.
2. Проектная часть
В проектной части необходимо выполнить следующие этапы:
1. Определить содержание задания курсовой работы
2. Выбрать среду программирования для разработки компьютерной модели
3. Изучить возможности выбранной среды
4. Программирование
5. Отладка программы
2.1 Определение задания
При выборе темы для курсовой работы по предмету «Компьютерное моделирование» была выбрана «Шахматная доска».
В процессе создания курсовой работы необходимо выполнить следующие условие:
Поле шахматной доски определено парой натуральных чисел, каждое из которых не превышает восьми.
Первое число является номером по вертикали (при счете слева направо).
Второе число определяет номер по горизонтали (при счете сверху вниз).
Пользователю необходимо ввести четыре числа, значение которых не будет превышать восьми. При этом первые два введенных числа (обозначим их как k, l) определяют координаты первого поля, а оставшиеся (обозначим их как m, n) - координаты второго поля.
Необходимо определить:
- является ли поле с координатами (k, l) того же цвета, что и поле с координатами (m, n);
- пусть на поле с координатами (k, l) расположена шахматная фигура - ферзь, угрожает ли она полю с координатами (m, n);
- пусть на поле с координатами (k, l) расположена шахматная фигура - конь, угрожает ли она полю с координатами (m, n).
Тогда входными данными будут являться натуральные числа k, l, m, n, введенные пользователем, а выходными данными - текстовая информация, определяющая результаты выполнения условия.
Для упрощения восприятия модели в качестве визуализации следует отобразить шахматную доску.
2.2 Знакомство со средой программирования Турбо Паскаль
Для создания компьютерной модели важен выбор оптимальной среды программирования, которая позволит не только произвести все необходимые расчеты с введенными данными, вывести правильный результат, но и создать необходимую визуализацию для более полного понимания работы модели.
В данной работе в качестве такой среды программирования был выбран Турбо Паскаль.
Язык программирования Паскаль (назван в честь вдающегося французского математика и философа Блеза Паскаля (1623-1662)), разработан в 1968-1971 гг. Никлаусом Виртом, профессором, директором Института информатики Швейцарской высшей политехнической школы. Язык Паскаль, созданный первоначально для обучения программированию как систематической дисциплине, скоро стал широко использоваться для разработки программных средств в профессиональном программировании. Широкой популярности Паскаля среди программистов способствовали следующие причины:
- благодаря своей компактности, удачному первоначальному описанию Паскаль оказался достаточно легким для изучения;
- язык программирования Паскаль отражает фундаментальные и наиболее важные концепции (идеи) алгоритмов в очевидной и легко воспринимаемой форме, что представляет программисту средства, помогающие проектировать программы;
- язык Паскаль позволяет четко реализовать идеи структурного программирования и структурной организации данных;
- язык Паскаль сыграл большую роль в развитии методов аналитического доказательства правильности программ и позволил реально перейти от методов отладки программ к системам автоматической проверки правильности программ;
- применение языка Паскаль значительно подняло «планку» надежности разрабатываемых программ за счет требований Паскаля к описанию используемых в программе переменных, проверки согласованности программы при компиляции без ее выполнения;
- использование в Паскале простых и гибких структур управления: ветвлений, циклов.
Разработка программы на Паскале включает в себя следующие действия (этапы разработки программы): ввод и редактирование текста программы на языке программирования Паскаль, ее трансляцию, отладку.
Для выполнения каждого этапа применяются специальные средства:
- для ввода и редактирования текста используется редактор текстов;
- для трансляции программы - компилятор;
- для построения используемого компьютером программного модуля с объединением разрозненных откомпилированных модулей и библиотекой стандартных процедур Паскаля - компоновщик (linker);
- для отладки программы с анализом ее поведения, поиском ошибок, просмотром и изменением ячеек памяти компьютера - отладчик (debugger).
Для повышения качества и скорости разработки программ в середине восьмидесятых годов была создана система программирования Турбо Паскаль. Слово Турбо в названии системы программирования - это отражение торговой марки фирмы-разработчика Borland International, Inc. (США).
Систему программирования Турбо Паскаль называют интегрированной (integration - объединение отдельных элементов в единое целое) средой программирования, так как она объединяет в себе возможности ранее разрозненных средств, используемых при разработке программ: редактора текста, компилятора, компоновщика, отладчика, и при этом обеспечивает программисту великолепны сервисные возможности. Часто ее кратко называют IDE (Integrated Development Environment - интегрированная среда разработки).
Интегрированная среда программирования Турбо Паскаль версий 6.0 и 7.0 имеет следующие возможности:
- множество накладывающихся окон;
- поддержка мыши, меню диалоговых окон;
- многофайловый редактор, который может редактировать файлы до одного Мбайта;
- расширенные возможности отладки;
- полное сохранение и восстановление среды разработки.
К ее существенным отличиям от среды программирования Турбо Паскаль более ранних версий относятся:
- объектно-ориентированная среда разработки прикладных программ Turbo Vision;
- полные возможности встроенного ассемблера;
- личные поля и методы объявления объектов;
- директива расширенного синтаксиса «$X», которая позволяет интерпретировать функции как процедуры (и игнорировать результаты функций);
- генерация кода «286»;
- адресные ссылки в типизированных константах;
- директивы ближних и дальних процедур;
- редактирование инициализированных данных и объектных файлов;
- более быстрый монитор кучи (сплошной массив байтов памяти), сокращающий фрагментацию;
- расширенные возможности встроенной справочной системы с использованием вырезки и вставки кодов примеров для каждой библиотечной процедуры и функции.
Большинство программ создаются для решения какой-либо задачи. В процессе решения задачи на компьютере пользователю нужно ввести обрабатываемые данные, указать, как их обрабатывать, задать способ вывода полученных результатов.
Таким образом, программист должен уметь использовать семь основных элементов программирования: ввод, данные, операции, условное выполнение, циклы, подпрограммы, и на их основе строить программы. Этот список не является исчерпывающим, однако он содержит те элементы, которые обычно присущи всем программам (и процедурным языкам программирования). Многие языки программирования, в том числе и Паскаль, имеют еще дополнительные средства. Ниже дается краткое описание каждого элемента.
Ввод - считывание значений, поступающих с клавиатуры, с диска или из порта ввода-вывода.
Данные - константы, переменные и структуры, содержащие числа (целые и вещественные), текст (символы и строки) или адреса (переменных и структур).
Операции - осуществляют присваивание значений, их комбинирование (сложение, деление и т.д.) и сравнение значений (равные, неравные и т.д.). Вывод - запись информации на экран, на диск или в порт ввода-вывода.
Условное выполнение - предполагает выполнение набора команд в случае, если удовлетворяется (является истинным) некоторое условие (если это условие не удовлетворяется, то эти команды пропускаются или же выполняется другой набор команд) или если некоторый элемент данных имеет некоторое специальное значение или значение из некоторого спектра.
Циклы - выполняют некоторый набор команд повторно или фиксированное число раз, или пока является истинным некоторое условие, или пока некоторое условие не стало истинным.
Подпрограмма - набор команд, который имеет имя и может быть неоднократно вызван из любого места программы по его имени.
Программа реализует алгоритм решения задачи. В ней программист записывает последовательность действий, выполняемых над определенными данными с помощью определенных операций для реализации заданной цели. Основные характеристики программы: точность полученного результата, время выполнения и объем требуемой памяти. О соответствии этих показателей решаемой задаче и возможностям компьютера должен позаботиться сам программист. В большинстве случаев определяющим требованием является точность. Ограничения по объему памяти и времени выполнение носят менее жесткий характер.
Программа на языке Паскаль состоит из строк. Набор текста программы осуществляется с помощью встроенного редактора текстов системы программирования Турбо Паскаль или любого другого редактора формата DOS. В первом случае программа может после выхода из редактора (при нажатии клавиши F10) в главном меню компилироваться и выполняться; во втором случае программа должна быть записана в файл на диск и вызвана для компиляции и выполнения в интегрированной среде Турбо Паскаль.
Синтаксически программа состоит из необязательного заголовка и блока.
Рисунок 1 - Заголовок и блок программы
Блок может содержать в себе другие блоки. Блок состоит из двух частей: описательной и исполнительной. Первая часть может отсутствовать, без второй блок не имеет смысла. Блок, который не входит ни в какой другой блок, называют глобальным. Если в глобальном блоке находятся другие блоки, они называются локальными. Глобальный блок - это основная программа, он должен присутствовать в любом случае. Локальные блоки - это процедуры и функции, их присутствие необязательно. Объекты программы (типы, переменные, константы и так далее) соответственно называются локальными и глобальными. Область действия объектов - блок, где они описаны, и все вложенные в него блоки.
Блочная структура объектов обеспечивает структуризацию программ на уровне исходных текстов. В идеальном состоянии программа на языке Паскаль состоит из процедур и функций, которые вызываются для выполнения из раздела операторов основной программы.
Рисунок 2 - Синтаксическая диаграмма блока
В начале программы находится заголовок, состоящий в общем случае из зарезервированного слова program, имени программы и параметров, с помощью которых программа взаимодействует с операционной системой. Заголовок программы несет чисто смысловую нагрузку и может отсутствовать, однако рекомендуется его записывать для быстрого распознавания нужной программы среди листингов других программ. Параметрами программы обычно являются стандартные идентификаторы стандартных файлов ввода-вывода Input, Output (в программах на Турбо Паскале их можно не указывать).
После заголовка следует программный блок, состоящий в общем случае из семи разделов:
- списка имен подключаемых библиотечных модулей (он определяется зарезервированным словом uses);
- описания меток;
- описания констант;
- определения типов данных;
- описания переменных;
- описания процедур и функций;
- операторов.
Любой раздел, кроме раздела операторов может отсутствовать. Разделы описаний (кроме uses, который всегда расположен после заголовка программы) могут встречаться в программе любое количество раз и следовать в произвольном порядке. Главное, чтобы все описания объектов были сделаны до того, как они будут использованы.
После успешного вызова системы экран ПК приобретает вид, показанный на рисунке 3.
Рисунок 3 - Вид экрана после вызова Турбо Паскаля
Верхняя строка содержит «меню» возможных режимов работы Турбо Паскаля, нижняя - краткую справку о назначении основных функциональных клавиш.
Функциональные клавиши используются для управления средой Турбо Паскаля. Они обозначаются F1, F2, F12 и располагаются в самом верхнем ряду клавиатуры. С каждой из этих клавиш связывается некоторая команда меню. Действие почти всех функциональных клавиш можно модифицировать тремя особыми клавишами: Alt (от ALTernative - дополнительный), Ctrl (ConTRoL - управляющий) и Shift (SHIFT - сдвиговый).
Ниже приводятся команды, которые передаются среде Турбо Паскаля функциональными клавишами и некоторыми их комбинациями с клавишами Ctrl и Alt: Fl - обратиться за справкой к встроенной справочной службе (Help - помощь);
F2 - записать редактируемый текст в дисковый файл;
F3 - прочитать текст из дискового файла в окно редактора;
F4 - используется в отладочном режиме: начать или продолжить исполнение программы и остановиться перед исполнением той ее строки, на которой стоит курсор;
F5 - распахнуть активное окно на весь экран;
F6 - сделать активным следующее окно;
F7 - используется в отладочном режиме: выполнить следующую строку программы; если в строке есть обращение к процедуре (функции), войти в эту процедуру и остановиться перед исполнением первого ее оператора;
F8 - используется в отладочном режиме: выполнить следующую строку программы; если в строке есть обращение к процедуре (функции), исполнить ее и не прослеживать ее работу;
F9 - компилировать программу, но не выполнять ее;
F10 - перейти к диалоговому выбору режима работы с помощью главного меню;
Ctrl-F9 - выполнить прогон программы: компилировать программу, находящуюся в редакторе, загрузить ее в оперативную память и выполнить, после чего вернуться в среду Турбо Паскаля.
Alt-F5 - сменить окно редактора на окно вывода результатов работы (прогона) программы.
В данной работе понадобятся команды Ctrl-F9 для проверки работы программы и Alt-X - для выхода из Турбо Паскаля. Клавиши F2 и F3 помогут в работе с каталогом. Командой Alt-F5 просмотреть данные, выданные на экран в результате прогона программы.
Вся остальная часть экрана принадлежит окну редактора, очерченному двойной рамкой и предназначенному для ввода и коррекции текстов программ. В его верхней строке приводятся имя того дискового файла, откуда был прочитан текст программы (новому файлу присваивается имя NONAME00.PAS), два специальных поля, используемых при работе с устройством ввода «мышь» (эти поля выделены квадратными скобками), и цифра «1» - номер окна. В Турбо Паскале можно работать одновременно с несколькими программами (или частями одной крупной программы), каждая из которых может располагаться в отдельном окне редактора. Среда позволяет использовать до девяти окон редактора одновременно.
Кроме окна редактора в Турбо Паскале используются также окна отладочного режима, вывода результатов работы программы, справочной службы, стека, регистров. По желанию они могут вызываться на экран поочередно или присутствовать на нем одновременно.
2.3 Графика в Турбо Паскале
Экран дисплея компьютера представляет собой прямоугольное поле, состоящее из большого количества точек. Дисплей может работать в текстовых или графических режимах. Но в отличие от текстового режима в графическом режиме имеется возможность изменять цвет каждой точки, а точки, окрашенные в разные цвета, могут образовывать линии, тексты и любые другие изображения.
Чтобы сделать процесс графического программирования более эффективным, фирма Borland International разработала специализированную библиотеку GRAPH, набор драйверов, позволяющих работать практически со всеми существующими типами видеомониторов, и набор шрифтов для вывода на графический экран текстов разной величины и формы.
Для формирования графических изображений в языке Турбо Паскаль предназначен стандартный библиотечный модуль GRAPH. В нем содержится семьдесят девять графических процедур, функций, десятки стандартных констант и типов данных. Все они составляют единый комплекс средств, позволяющих разработать профессиональный программный продукт.
Для запуска графической системы необходимо сделать следующее:
1. Подключить модуль GRAPH - библиотеку графических процедур:
uses graph;
2. Установить графический режим с помощью двух переменных:
var DriverVar, ModeVar: integer;
begin
DriverVar := Detect;
InitGraph (DriverVar, ModeVar, `\BP\GRAPH');
С этого момента все графические средства доступны пользователю. Графическая программа, как и любая другая, может содержать ошибки. Необходимо предусмотреть все способы их обнаружения и нейтрализации. Для этого используются две функции: GraphRezult и GraphErrorMsg.
Функция GraphRezult: integer возвращает значение «0», если последняя графическая операция выполнилась без ошибок или число в диапазоне (-15…-1), если ошибка была.
Инициализацию графического режима и проверку возможных ошибок удобно осуществлять в отдельной процедуре.
Если подобная процедура отсутствует, то любая ошибка инициализации вызовет остановку работы машины.
Для построения изображения на экране используется система координат. Отсчет начинается от верхнего левого угла экрана, который имеет координаты (0, 0). Значение Х (столбец) увеличивается слева направо, значение Y (строка) увеличивается сверху вниз. Так координаты углов экрана и точки в центре экрана будут отображаться примерно следующим образом:
Размещено на http://www.allbest.ru/
Рисунок 4 - Координаты экрана
По умолчанию окно занимает весь экран, значение координат его левого верхнего и правого нижнего угла устанавливаются автоматически процедурой инициализации InitGraph.
Чтобы стереть все изображение на экране, то есть очистить его, используется не имеющая параметров процедура ClearDevise.
Какие бы изображения не выводились на экран, все они построены из точек. В библиотеке GRAPH вывод точки осуществляется процедурой:
PUTPIXEL (X,Y: INTEGER; COLOR: WORD);
Где X и Y - экранные координаты расположения точки, COLOR - ее цвет.
Чтобы узнать цвет точки в конкретной позиции, используется функция GETPIXEL (X, Y: INTEGER): WORD;
Из точек строятся линии с помощью процедуры
LINE (X1, Y1, X2, Y2: INTEGER);
Где X1, Y1 - координаты начала, а X2, Y2 - координаты конца линии. В процедуре LINE отсутствует параметр, задающий цвет линии. В этом случае цвет задается процедурой
SETCOLOR (COLOR: WORD);
Турбо Паскаль позволяет вычерчивать линии самого различного стиля. Установка стиля производится процедурой
SETLINESTYLE (LINESTYLE: WORD; PATTERN: WORD, THICKNESS: WORD);
Где LINESTYLE - тип линии, PATTERN - образец, THICKNESS - толщина линии.
Выводимые на экран изображения сопровождаются пояснительным текстом. В графическом режиме для этого используются процедуры OUTTEXT и OUTTEXTXY.
Процедура OUTTEXT выводит строку текста, начиная с текущего положения, а при использовании процедуры OUTTEXTXY необходимо задать координаты, где будет выводиться текстовое сообщение.
В модуле GRAPH нет процедуры, предназначенной для вывода численных данных. Поэтому в этом случае перед выводом необходимо преобразовать число в строку с помощью процедуры STR, а затем посредством символа «+» подключить ее к выводимой строке.
2.4 Программирование
Важным шагом, конечно же, является непосредственно создание программы «Шахматная доска», описывающей компьютерную модель игры в шахматы. Турбо Паскаль предоставляет разработчику широкие возможности быстрого и качественного проектирования компьютерной модели с использованием расчетов и графики.
Программирование компьютерной модели «Шахматная доска» приведено в листинге (Приложение А).
Задание предполагает, что пользователь самостоятельно будет вводить данные, определяющие координаты двух полей. В процессе работы было решено разбить программу на две части - текстовую и графическую.
Текстовая часть включает в себя следующее.
Для начала пользователю необходимо ввести данные, а программе запомнить их, присвоив введенному значению некоторую переменную. Для этого используются следующие функции:
WRITELN('введите координаты вертикали первого поля');
READLN(K);
Далее следует этап обработки введенных данных.
По заданию необходимо выяснить, являются ли выбранные поля одного цвета. Так как светлые и темные квадраты на шахматной доске чередуются, можно сделать вывод, что в случае, когда обе координаты вертикали и обе координаты горизонтали имеют одинаковую четность, два выбранных поля будут одного цвета. После обработки необходимо вывести соответствующее сообщение. В программе это условие реализуется следующим образом:
IF ((K MOD 2)=(M MOD 2))AND((L MOD 2)=(N MOD 2))
THEN WRITELN('выбранные поля одного цвета')
ELSE WRITELN(' выбранные поля разные по цвету ');
Кроме того, необходимо было выяснить, угрожает ли ферзь либо конь, находящийся на первом поле, второму полю, и вывести соответствующие сообщения. Для решения этого задания необходимо учитывать уже существующие правила игры в шахматы. Так ферзь ходит на любое поле по вертикали, горизонтали и диагонали, на которых находится.
Рисунок 5 - Движение шахматной фигуры Ферзь
Конь ходит зигзагом - через соседнее поле по вертикали или горизонтали, удаляясь затем от места исходного положения на одно из смежных полей по диагонали.
Рисунок 6 - Движение шахматной фигуры Конь
Изученные правила игры были описаны в программе следующем образом. Для случая с ферзем:
IF (K=M) OR (L=N) OR (ABS(K-M)=ABS(1-N))
THEN WRITELN ('ферзь на первом поле угрожает второму полю')
ELSE WRITELN(' ферзь на первом поле не угрожает второму полю ');
Для случая с конем:
IF ((ABS(K-M)=1) AND (ABS(1-N)=2)) OR ((ABS(K-M)=2) AND (ABS(1-N)=1))
THEN WRITELN ('конь на первом поле угрожает второму полю ')
ELSE WRITELN ('конь на первом поле не угрожает второму полю ');
Для того чтобы пользователь успел освоить выданную информацию, в программе используется функция задержки. То есть между текстовой и графической частью программы будет некоторое время, предназначенное для представления результатов обработки введенной информации.
DELAY(10000);
Текстовая часть программы при запуске будет выглядеть следующим образом:
Рисунок 7 - Вид окна программы при запуске
Далее программа будет выполнять следующую - графическую часть. Для того чтобы пользователь имел возможность самостоятельно проверить результаты обработки введенных им данных и для визуализации компьютерной модели, на экран выводится рисунок шахматной доски, а так же координаты, выбранных пользователем полей.
При работе с графикой в Турбо Паскаль необходимо запустить графический режим. Это можно осуществить с помощью следующей процедуры:
procedure PGR;
begin
driver:=detect;
InitGraph(driver,mode,'d:\BP\BGI');
if GraphResult<>grok then halt
end;
Для рисования линий шахматной доски в программе написана следующая процедура:
procedure RISOV;
begin
x:=50;
while x<GetMaxx -250 do
begin
line(x,50,x,370);
inc(x,40);
end;
y:=50;
while y<GetMaxy -70 do
begin
line(50,y,370,y);
inc(y,40);
end;
end;
Затем необходимо закрасить светлые квадраты. Это позволяет сделать процедура:
procedure ZAKR;
var i,ii:integer;
begin
x:=60;y:=60;
for ii:=1 to 4 do
begin
y:=y;
for i:=1 to 4 do
begin
SetFillStyle(1,15);
FloodFill(x,y,15);
inc(x,80);
end;
x:=100;
for i:=1 to 4 do
begin
SetFillStyle(1,15);
FloodFill(x,y+40,15);
inc(x,80);
end;
inc(y,80);
x:=60;
end;
end;
При работе в графическом режиме для обозначения символов в Турбо Паскале используется функция OutText или OutTextXY. В работе отображение на экране символов, обозначающих поля доски, происходит в цикле:
for sim:='A' to 'H' do
begin
OutTextXY(x,35,sim);
inc(x,40);
OutTextXY(35,y,chr(49+k));
inc(y,40);
inc(k);
end;
Пользователь может самостоятельно проверить результат, выданный программой, для чего при выполнении графической части повторно выводятся координаты полей, указанных пользователем. В графическом режиме языка Турбо Паскаль нет чисел, поэтому в программе для возможности вывода их на экран создана функция, переводящая численный тип данных в строчный:
function IntSt(int:integer):string;
var buf: string[10];
begin
str(int,buf);
IntSt:=buf
end;
Затем текстовая информация и обработанное таким образом число может выводиться на экран:
OutTextXY(10,400,'координаты первого поля '+ intst(k)+ intst (l));
Для выхода из графического режима используется функция CloseGraph, а для выхода из программы после нажатия любой клавиши - ReadKey;
Заключение
В данной курсовой работе была создана компьютерная модель игры в шахматы «Шахматная доска».
В процессе создания компьютерной модели были успешно решены задачи, поставленные в начале работы. Так были изучены понятии компьютерное моделирование и компьютерные игры; выделены особенности моделирования игр; в среде программирования Турбо Паскаль разработана программа, с помощью которой успешно выполняются все условия, обозначенные задании к курсовой работе.
Полученная модель позволяет без специальных знаний изучать всевозможные комбинации, находящиеся в игре и тренировать собственные навыки игры.
Разработанная программа позволяет самостоятельно вводить данные, обрабатывает их и выдает полный результат, удовлетворяющий заданному условию, кроме того программа содержит графическое изображение шахматной доски, поэтому пользователь может самостоятельно проверить правильность работы программы.
Разработанная модель может быть применена как основа для изучения игры в шахматы и создания более совершенной компьютерной модели.
В свете широкого использования IT-технологий, представленная курсовая работа является актуальной и отвечает предъявленным к ней требованиям. Проект разработан и написан на языке программирования Турбо Паскаль с использованием расчетов и графики.
Список использованной литературы
1 Штофф В.А. Моделирование и философия. - М. : «Наука», 1966. - 354 с.
2 Культин Н.Б. Delphi 6. Программирование на Object Pascal. Самоучитель. - СПб. : БХВ-Петербург, 2001. - 528 с.
3 Советов Б.Я., Яковлев С.А. Моделирование систем. - М. : ВШ, 1998. - 319 с.
4 Попов В.Б. Turbo Pascal: Учебное пособие. - М. : «Финансы и статистика», 2004. - 528 с.
5 Першиков В.И., Савинков В.М. Толковый словарь по информатике. - М. : «Финансы и статистика», 1995. - 544 с.
6 Шикин Е.В., Боресков А.В., Зайцев А.А. Начала компьютерной графики. - М. : «ДИАЛОГ-МИФИ», 1993. - 138 с.
Приложение
(обязательное)
Листинг программы
program DOSKA;
uses CRT,GRAPH;
var driver,mode,x,y:integer;
k,l,m,n:integer;
procedure PGR;
begin
driver:=detect;
InitGraph(driver,mode,'d:\BP\BGI');
if GraphResult<>grok then halt
end;
procedure RE6ENIE;
begin
writeln('vvedite koordinatu vertikali 1 polya<9');
readln(k);
writeln('vvedite koordinatu gorizontali 1 polya<9');
readln(l);
writeln('vvedite koordinatu vertikali 2 polya<9');
readln(m);
writeln('vvedite koordinatu gorizontali 2 polya<9');
readln(n);
if ((k mod 2)=(m mod 2))and((l mod 2)=(n mod 2))
then writeln('vibrannie polya odnogo cveta')
else writeln('vibrannie polya raznie po cvetu');
if (k=m)or(l=n)or(abs(k-m)=abs(1-n))
then writeln ('ferz na 1 pole ugrogaet 2 polyu')
else writeln('ferz na 1 pole ne ugrogaet 2 polyu');
if ((abs(k-m)=1)and(abs(1-n)=2))or((abs(k-m)=2)and(abs(1-n)=1))
then writeln ('kon na 1 pole ugrogaet 2 polyu')
else writeln('kon na 1 pole ne ugrogaet 2 polyu');
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
delay(10000);delay(10000);delay(10000);delay(10000);delay(10000);
end;
procedure RISOV;
begin
x:=50;
while x<GetMaxx -250 do
begin
line(x,50,x,370);
inc(x,40);
end;
y:=50;
while y<GetMaxy -70 do
begin
line(50,y,370,y);
inc(y,40);
end;
procedure ZAKR;
var i,ii:integer;
begin
x:=60;y:=60;
for ii:=1 to 4 do
begin
y:=y;
for i:=1 to 4 do
begin
SetFillStyle(1,15);
FloodFill(x,y,15);
inc(x,80);
end;
x:=100;
for i:=1 to 4 do
begin
SetFillStyle(1,15);
FloodFill(x,y+40,15);
inc(x,80);
end;
inc(y,80);
x:=60;
end;
procedure BUKVI;
var sim:char; x,k,y:integer;
begin
x:=70; y:=70;k:=0;
for sim:='A' to 'H' do
begin
OutTextXY(x,35,sim);
inc(x,40);
OutTextXY(35,y,chr(49+k));
inc(y,40);
inc(k);
end;
function IntSt(int:integer):string;
var buf: string[10];
begin
str(int,buf);
IntSt:=buf
end;
begin
ClrScr;
RE6ENIE;
PGR;
RISOV;
ZAKR;
BUKVI;
OutTextXY(10,400,'koordinati pervogo polya '+ intst(k)+ intst (l));
OutTextXY(10,420,'koordinati vtorogo polya '+ intst(m)+ intst (n));
OutTextXY(10,440,'dlya vihoda nagmite lubuyu klavi6u');
CloseGraph;
ReadKey;
end.
Размещено на allbest.ru
Подобные документы
Компьютерное моделирование - вид технологии. Анализ электрических процессов в цепях второго порядка с внешним воздействием с применением системы компьютерного моделирования. Численные методы аппроксимации и интерполяции и их реализация в Mathcad и Matlab.
курсовая работа [1,1 M], добавлен 21.12.2013Теоретические основы моделирования систем в среде имитационного моделирования AnyLogic. Средства описания поведения объектов. Анимация поведения модели, пользовательский интерфейс. Модель системы обработки информации в среде компьютерного моделирования.
курсовая работа [1,5 M], добавлен 15.05.2014Основы систематизации языков имитационного моделирования, моделирование систем и языки программирования. Особенности использования алгоритмических языков, подходы к их разработке. Анализ характеристик и эффективности языков имитационного моделирования.
курсовая работа [1,4 M], добавлен 15.03.2012Обзор средств компьютерного имитационного моделирования по созданию веб-приложения для визуализации имитационных моделей. Система имитационного моделирования AnyLogic, Arena, SimuLab. Серверная, клиентская часть. Модель работы отдела банка и участка цеха.
дипломная работа [3,3 M], добавлен 25.05.2015Расчет параметров моделирования в системе Fortran. Описание алгоритма и математической модели системы, их составляющих. Моделирование шума с заданной плотностью распределения вероятностей. Выполнение моделирования работы системы при входном сигнале N(t).
курсовая работа [896,3 K], добавлен 20.06.2012Сущность принципов информационной достаточности, осуществимости, множественности моделей, параметризации и агрегирования. Построение концептуальной модели. Сравнение размеров программного кода. Особенности технологии компьютерного моделирования.
презентация [49,3 K], добавлен 16.10.2013Основные понятия моделирования, виды моделей. Программа моделирования электрических и электронных цепей PSpice. Язык описания заданий на моделирование. Программа Probe и ее основные характеристики. Моделирование электромеханических преобразователей.
статья [522,6 K], добавлен 20.07.2012Порядок и методика моделирования входного сигнала, общие принципы представления сигналов математическими моделями. Взаимосвязь математических моделей с компьютерными, их место и значение на современном этапе. Пакеты для моделирования различных процессов.
реферат [1,1 M], добавлен 19.04.2009Развертывание системы на жестком диске, диалоговая система программирования Турбо Паскаль, запуск программы и выполнение задания. Функциональные клавиши и их назначение. Текстовый редактор, средства создания и редактирования текстов программ, курсор.
реферат [18,6 K], добавлен 01.04.2010Технология разработки и тестирования программного обеспечения в среде Visual Studio на примере создания программы моделирования систем массового обслуживания. Аналитические и имитационные методы моделирования с разными дисциплинами обслуживания заявок.
дипломная работа [1,1 M], добавлен 09.09.2012