Игра Sokoban

 

Учреждение образования


Белорусский государственный университет информатики и радиоэлектроники





Кафедра ЭВМ





Пояснительная записка

к курсовой работе по курсу

Объектно-ориентированное программирование

по теме:

Игра Sokoban





Выполнил:

Холупов Р.Н.




Минск 2012

СОДЕРЖАНИЕ


Введение

. Обзор литературы

. Системное проектирование

. Функциональное проектирование

. Разработка программных модулей

. Руководство пользователя

Заключение

Литература

Введение


Все мы когда то были детьми, наверняка самые светлые воспоминания и впечатления связаны у нас с играми.

Игра теснейшим образом связана с развитием личности

Игра - это жизненно важный и необходимый элемент в развитии как индивидуума, так и общества в целом.

В данной работе была реализована игра «Sokoban». Sokoban (Soko-Ban, яп. сокобан - «кладовщик») - логическая игра-головоломка, в которой игрок передвигает ящики по лабиринту, показанному в виде плана, с целью поставить все ящики на заданные конечные позиции. Только один ящик может быть передвинут за раз, причём герой игры - «кладовщик» - может только толкать ящики, но не тянуть их. Поскольку игру достаточно сложно воссоздать физически, обычно она реализуется в виде компьютерной игры.

Игра Sokoban была создана в 1980 году Hiroyuki Imabayashi, и издана в 1982 году компанией Thinking Rabbit (Япония). Кроме того, компания выпустила три сиквела: Boxxle, Sokoban Perfect и Sokoban Revenge.

Игра была реализована для множества компьютерных платформ, включая практически все домашние и персональные компьютеры. Также существуют версии игры для карманных компьютеров, игровых приставок и мобильных телефонов.

1.Обзор литературы

# - язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998-2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio.# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников - языков С++, Java, Delphi, Модула и Smalltalk - С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, 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# и др.


. Системное проектирование


. Структурное проектирование.

Рассмотрим основные функции, реализованные в программе:

·Возможность выбора карты в произвольном порядке;

·Переход к следующему уровню без прохождения предыдущего;

·Отмену последнего сделанного хода;

·Сохранение результатов игры;

·Просмотр результатов игроков;

. Структурная схема:














Рис.1. Структурная схема

3. Функциональное проектирование


Диаграмма классов

Разработка детальной схемы будущей программы производилась на унифицированном языке моделирования (UML), который является стандартным инструментом для создания "чертежей" программного обеспечения. С помощью UML можно визуализировать, специфицировать, конструировать и документировать программы. Диаграмма классов приложения представлена на Рис.2.


Рис.2. Диаграмма классов

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;Объект типа Fieldpublic Image myimage;Объект типа Imagepublic Form1()Конструктор. Происходит загрузка первой карты, в сответствии с которой устанавливаются размеры окна.protected override void OnPaint(PaintEventArgs e)Обновление(прорисовка) окна игры. Вызывается автоматически.Graphics g = Graphics.FromHwnd(this.Handle); Объект типа Graphicsprivate 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);Объкт GraphicsImage myimage1 = new Bitmap(Properties.Resources.Empty);Объкт Imagepublic 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)Отображение формы form2private void отменаХодаToolStripMenuItem_Click(object sender, EventArgs e)Отмена предыдущего ходаGraphics g1 = Graphics.FromHwnd(this.Handle);Объект GraphicsImage myimage1 = new Bitmap(Properties.Resources.Empty);Объект Imageprivate void следующийУровеньToolStripMenuItem_Click(object sender, EventArgs e)Загрузка следующего уровняprivate void сохранитьРезультатToolStripMenuItem_Click(object sender, EventArgs e)Сохранение результата. Отображается форма form3private void посмотретьРезультыToolStripMenuItem_Click(object sender, EventArgs e)Просмотр реультатов. Отображается форма form4partial 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()Открытие следующего уровня игрыpartial class Form2 : Form


Форма для вывода информации об игре

public Form2()конструкторprivate void button1_Click(object sender, EventArgs e)Закрытие окна с информацией об игреpartial class Form3: Form


Форма для сохранения результатов игры

public Form3()Конструкторpublic void button1_Click(object sender, EventArgs e)Запись результатов игры в файл(если файл не существует, то он будет создан), закрытие окна сохранения результатов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()


. Руководство пользователя


После запуска программы появляется окно игры с уже загруженной картой первого уровня(рис.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;

.Герберт Шилд «Программирование на C/C++»;

.Джордж Шеферд «Программирование на Visual C++.Net»;

4.http://www.microsoft.com/Rus/Msdn/publish/articles


Учреждение образования Белорусский государственный университет информатики и радиоэлектроники Кафедра ЭВМ Пояснител

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ