Игра Sokoban
Сущность системного проектирования. Разработка детальной схемы, проектирование программных игровых модулей Sokoban. Описание языка программирования C#. Алгоритм программы. Требования к процессору, оперативной памяти, монитору для поддержания игры.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 08.01.2013 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
16
Размещено на http://www.allbest.ru/
Учреждение образования
“Белорусский государственный университет информатики и радиоэлектроники”
Кафедра ЭВМ
Пояснительная записка
к курсовой работе по курсу
Объектно-ориентированное программирование
по теме:
Игра Sokoban
Выполнил:
Холупов Р.Н.
Минск 2012
СОДЕРЖАНИЕ
Введение
1. Обзор литературы
2. Системное проектирование
3. Функциональное проектирование
4. Разработка программных модулей
5. Руководство пользователя
Заключение
Литература
Введение
Все мы когда то были детьми, наверняка самые светлые воспоминания и впечатления связаны у нас с играми.
Игра теснейшим образом связана с развитием личности
Игра - это жизненно важный и необходимый элемент в развитии как индивидуума, так и общества в целом.
В данной работе была реализована игра «Sokoban». Sokoban (Soko-Ban, яп. сокобан -- «кладовщик») -- логическая игра-головоломка, в которой игрок передвигает ящики по лабиринту, показанному в виде плана, с целью поставить все ящики на заданные конечные позиции. Только один ящик может быть передвинут за раз, причём герой игры -- «кладовщик» -- может только толкать ящики, но не тянуть их. Поскольку игру достаточно сложно воссоздать физически, обычно она реализуется в виде компьютерной игры.
Игра Sokoban была создана в 1980 году Hiroyuki Imabayashi, и издана в 1982 году компанией Thinking Rabbit (Япония). Кроме того, компания выпустила три сиквела: Boxxle, Sokoban Perfect и Sokoban Revenge.
Игра была реализована для множества компьютерных платформ, включая практически все домашние и персональные компьютеры. Также существуют версии игры для карманных компьютеров, игровых приставок и мобильных телефонов.
1. Обзор литературы
C# -- язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998--2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников -- языков С++, Java, Delphi, Модула и Smalltalk -- С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).
C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает FCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность была нарушена с выходом C# 3.0, представляющим собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.
2. Системное проектирование
1. Структурное проектирование.
Рассмотрим основные функции, реализованные в программе:
· Возможность выбора карты в произвольном порядке;
· Переход к следующему уровню без прохождения предыдущего;
· Отмену последнего сделанного хода;
· Сохранение результатов игры;
· Просмотр результатов игроков;
2. Структурная схема:
Рис.1. Структурная схема
3. Функциональное проектирование
Диаграмма классов
Разработка детальной схемы будущей программы производилась на унифицированном языке моделирования (UML), который является стандартным инструментом для создания "чертежей" программного обеспечения. С помощью UML можно визуализировать, специфицировать, конструировать и документировать программы. Диаграмма классов приложения представлена на Рис.2.
Рис.2. Диаграмма классов
public partial class Form1 : Form
Основная форма
public static int CellWeight = 70; |
Ширина единицы поля |
|
public static int CellHeight = 70; |
Высота единицы поля |
|
public static int result = 0; |
Количество сделанных ходов |
|
public static int level = 0; |
Текущий уровень |
|
Field myField; |
Объект типа Field |
|
public Image myimage; |
Объект типа Image |
|
public Form1() |
Конструктор. Происходит загрузка первой карты, в сответствии с которой устанавливаются размеры окна. |
|
protected override void OnPaint(PaintEventArgs e) |
Обновление(прорисовка) окна игры. Вызывается автоматически. |
|
Graphics g = Graphics.FromHwnd(this.Handle); |
Объект типа Graphics |
|
private void Form1_Load(object sender, EventArgs e) |
Загрузка основной формы. |
|
private void Form1_KeyUp(object sender, KeyEventArgs e) |
Обработка нажатия клавиши |
|
int kol; |
Количество прорисовываемых клеток (0,2,3) |
|
Graphics g1 = Graphics.FromHwnd(this.Handle); |
Объкт Graphics |
|
Image myimage1 = new Bitmap(Properties.Resources.Empty); |
Объкт Image |
|
public void загрузитьКартуToolStripMenuItem_Click(object sender, EventArgs e) |
Загрузка карты |
|
string fileName = openFileDialog1.FileName; |
Строка с именем уровня |
|
private void выходToolStripMenuItem_Click(object sender, EventArgs e) |
Выход из игры |
|
private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e) |
Отображение формы form2 |
|
private void отменаХодаToolStripMenuItem_Click(object sender, EventArgs e) |
Отмена предыдущего хода |
|
Graphics g1 = Graphics.FromHwnd(this.Handle); |
Объект Graphics |
|
Image myimage1 = new Bitmap(Properties.Resources.Empty); |
Объект Image |
|
private void следующийУровеньToolStripMenuItem_Click(object sender, EventArgs e) |
Загрузка следующего уровня |
|
private void сохранитьРезультатToolStripMenuItem_Click(object sender, EventArgs e) |
Сохранение результата. Отображается форма form3 |
|
private void посмотретьРезультыToolStripMenuItem_Click(object sender, EventArgs e) |
Просмотр реультатов. Отображается форма form4 |
public partial class Field
Класс для работы с картой
public int x, y; |
Координаты человечка |
|
public int x1, y1; |
Координаты направления хода |
|
public int count = 0; |
Счетчик поставленных на места ящиков |
|
public int count1 = 0; |
Количество крестиков(place) |
|
public int width; |
Ширина поля |
|
public int height; |
Высота поля |
|
public int NextLevel = 1; |
Следующий уровень |
|
public Item[,] f; |
Карта |
|
public Item[,] f2; |
Копия карты для отмены хода |
|
public Item GetItem(char cur) |
Возвращает значение поля(Empty, Wall, Men, Box, Place, Boxplace, Menplace) |
|
public void ReadMap(StreamReader reader) |
Считывание карты из файла в массив |
|
public void CopyMap() |
Копирование карты для отмены хода |
|
public int Move(int x1, int y1) |
Движение человечка по полю |
|
public void Draw(int x1, int y1, Graphics g1, Image myimage1, int kol) |
Прорисовка ближайших клеток поля(две или три) |
|
public void OpenNextLevel() |
Открытие следующего уровня игры |
public partial class Form2 : Form
Форма для вывода информации об игре
public Form2() |
конструктор |
|
private void button1_Click(object sender, EventArgs e) |
Закрытие окна с информацией об игре |
public partial class Form3: Form
Форма для сохранения результатов игры
public Form3() |
Конструктор |
|
public void button1_Click(object sender, EventArgs e) |
Запись результатов игры в файл(если файл не существует, то он будет создан), закрытие окна сохранения результатов |
public partial class Form4 : Form
Форма для просмотра результатов игры
public Form4() |
Конструктор |
|
private void button1_Click(object sender, EventArgs e) |
Чтение и вывод результатов из файла на экран, если файл с данным именем игрока существует |
|
private void button2_Click(object sender, EventArgs e) |
Закрытие окна |
4. Разработка программных модулей
На рис.3 изображена блок-схема метода отменаХодаToolStripMenuItem_Click()
Рис. 3. Метод отмена ХодаToolStripMenuItem_Click()
На рис.4 изображена блок-схема метода ReadMap()
Рис. 4. Метод ReadMap()
На рис.5 изображена блок-схема метода OpenNextLevel()
Рис.5. Метод OpenNextLevel()
5. Руководство пользователя
После запуска программы появляется окно игры с уже загруженной картой первого уровня(рис.6):
Рис.6. Карта первого уровня
Крестиками отмечены те места, куда необходимо переместить кубики. Красным цветом горят кубики, которые еще не поставлены на крестики, зеленым - те, которые уже стоят на месте.
Используя клавиши на клавиатуре (стрелки вверх, вниз, вправо, влево), поставьте все ящики на места. После того как вы это сделали, появится окно для сохранения результата данного уровня(рис.7):
Рис.7. Окно для сохранения
Здесь необходимо ввести ваше имя, под которым будет сохранен результат. После того, как Вы это сделали, нажимаем клавишу «Готово». Результат сохранился и загружается автоматически следующий уровень игры. Далее действия повторяются.
В игре реализована возможность выбора уровня для прохождения в произвольном порядке. Для этого необходимо выбрать в меню «Файл» пункт «Загрузить карту» и открыть необходимый уровень:
Рис. 8. Меню файл
Также возможен переход к следующему уровню не проходя текущий. Для этого нужно открыть меню «Файл» и выбрать пункт «Следующий уровень»(рис. 9). После нажатия уровень автоматически загрузиться.
Рис. 9. Следующий уровень
Вы можете также сделать отмену последнего сделанного вами хода. Для этого необходимо в меню «Файл» выбрать пункт «Отмена хода»(рис. 10). Загрузится предыдущее расположение объектов на карте.
Рис. 10. Отмена хода
Рис. 11. Просмотр результатов
Для того, чтобы просмотреть результаты игры игрока, необходимо выбрать в меню «Файл» пункт «Просмотреть результаты». На экране появляется диалоговое окно, где необходимо ввести имя игрока, результат которого Вы хотите видеть. Нажимаем «Готово»:
Для просмотра информации о программе необходимо выбрать пункт «О программе». Появится окно с информацией о создателе игры:
Рис.12. О программе
Заключение
игра sokoban программирование
В результате мною был написан аналог игры «Sokoban». Поставленная задача выполнена.
Для корректной работы программы необходимы следующие требования:
Минимальные требования:
- процессор AMD 400 MHz (или аналогичный); оперативная память 32 Мб; Windows 95/98/NT; монитор.
Желательные требования:
- процессор AMD 800 MHz (или аналогичный); оперативная память 64 Мб; Windows XP; монитор с поддержкой 32-ух битных цветов.
Список литературы
1. Microsoft Corporation - MSDN Library - January 2005;
2. Герберт Шилд «Программирование на C/C++»;
3. Джордж Шеферд «Программирование на Visual C++.Net»;
4. http://www.microsoft.com/Rus/Msdn/publish/articles
Размещено на Allbest.ru
Подобные документы
Понятие и эволюция игр, анализ их различных жанров и существующих аналогов. Выбор программных средств для реализации игры, написание сюжета и выбор среды разработки игры. Алгоритмы для придания гибкости обучающей игре. Описание программных модулей.
дипломная работа [2,7 M], добавлен 27.10.2017Разработка программы, моделирующей игру "Кости". Использование в программе генератора псевдослучайных чисел. Схема иерархии модулей. Описание работы программы. Регистрация игрока, окно программы. Определение языка программирования, основные операторы.
курсовая работа [3,2 M], добавлен 29.07.2010Требования к техническим, программным средствам разработки и функционированию программы. Обоснование выбранного языка программирования. Описание алгоритма решения задачи, тестирование ее основных функций. Понятие дружелюбного пользовательского интерфейса.
курсовая работа [85,9 K], добавлен 31.10.2014Разработка игры "Экзамен" с применением объектно-ориентированного программирования и языка Java (в среде Eclipse Helios). Структура программы и алгоритм решения задачи. Описание методов и переменных. Экспериментальное тестирование и оценка программы.
курсовая работа [122,5 K], добавлен 19.05.2011Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.
курсовая работа [1,5 M], добавлен 17.01.2011Разработка программы логической игры в "крестики-нолики" пять в ряд на поле размера 15х15 клеток с применением графики на языке Pascal с использованием объектно-ориентированного программирования. Структура алгоритма программы и описание ее работы.
курсовая работа [821,5 K], добавлен 13.02.2012Процесс создания моей программы "Веб-Браузер" на основе Internet Explorer. Работа с CD-дисках, DVD-дисках, дискетах и прочих переносных устройств памяти. Описание языка программирования. Описание алгоритма. Методика проектирования и реализации программ.
курсовая работа [1,4 M], добавлен 23.05.2015Разработка компьютерной игры, выбор структур, используемых данных, технологии, языка и среды программирования. Алгоритм и программа для реализации игры, функциональные возможности и сопровождение разрабатываемой системы. Выбор стратегии тестирования.
курсовая работа [341,9 K], добавлен 19.04.2011Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014