Игра Sokoban

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,16 Мб
  • Опубликовано:
    2012-12-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Игра 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;

Объект типа 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

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

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()

Открытие следующего уровня игры

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 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

Похожие работы на - Игра Sokoban

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!