"Морской бой": разработка программы

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Для того чтобы скачать эту работу.
1. Подтвердите что Вы не робот:
2. И нажмите на эту кнопку.
закрыть



Задание

 

Разработать программу на языке C++, реализующую игру Морской бой.

Создать объект корабль, у которого должно быть свойство цвет и метод прорисовки. От него создать четыре потомка (корабли с соответствующими размерами). От этих потомков создать необходимое количество потомков (в зависимости от размеров корабля, если 4, то 1 корабль, если 3, то 2 корабля и т.д.), которых должны иметь свойство позиция. При попадании в корабль сменить его цвет на другой. Клетки реализовать объектом (со свойствами позиция и методами прорисовки). При попадании в пустую клетку сделать ее отличимой от остальных (например, поставить в ней крест), кроме того не позволять игроку и компьютеру стрелять в нее. На экране отображать поля обоих игроков. Компьютеру задать простую логику: добивать корабль, не стрелять в соседние клетки от затопленного корабля и т.д. На экране отображать счетчик оставшихся кораблей игрока и компьютера.

 

 

Аннотация

 

Данная курсовая работа направлена на изучение принципов объектно-ориентированного программирование. В данной работе разрабатывается игра Морской бой. В программе используются классы, наследование, виртуальные методы.

Курсовая работа содержит:

рисунков - 6,

графиков - 0,

таблиц - 0,

схем - 1,

страниц - 19.

 

 

Введение

программирование игра виртуальный

Целью данной курсовой работы является разработка карточной игры. Это задача реализуется с помощью объектно-ориентированного подхода. Выбор карточной игры был дан на усмотрение студента, и среди многочисленных вариантов предпочтение было отдано простой игре 21. Суть игры заключается в том, что бы набрать количество очков равное или максимально приближенное к 21. Игра предназначена для двоих игроков.

Обычно перед началом разработки любой игры должна сформироваться идея, а издатель/разработчик должен дать зелёный свет.

В более распространённом случае, если разработчик и издатель являются разными компаниями, идея должна быть предложена руководству, одобрена и выставлена на рассмотрение издателям. В этом деле может помочь рабочее демо, но оно не является обязательным для авторитетного издателя с хорошей репутацией. Если заинтересованный издатель найден, можно начинать производство. Сегодня идея игры редко убеждает, если в ней не заинтересован издатель.

Если разработчик также является издателем, или если они оба являются подразделениями одной компании, то одобрение должно дать только высшее руководство. Однако, в зависимости от размера компании-издателя, может потребоваться несколько попыток, пока идея не поднимется вверх через все слои руководства.

Для реализации этой работы необходимо разработать класс, который будет представлять основу данной программы оттолкнувшись от которой можно реализовывать все более и более сложные и интересные идеи. Подобием такого класса послужил класс Karta который хранит в себе всё необходимые сведения об игровой карте и методы которые свойственны ей среди которых имеются: выдача карты, выбор случайной карты из колоды и т.д.

Для управления всеми действами в программе необходимо было создать соответствующее ей меню, которое впоследствии было разработано.

Главным помощником в работе мне послужил язык программирования высокого уровня С++, который без всяких трудностей и препятствий позволил мне реализовать всю поставленную предо мною задачу целиком и полностью.

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

 

 

1.Анализ задачи

 

Смысл игры Морской бой следующий: создаётся два поля 10х10, на которых размещаются по 10 кораблей разного размера (один - размера четыре, два - размера три, три - размера два и четыре - размера один); корабли могут располагаться горизонтально и вертикально; два корабля не могут находиться в соседних полях; каждый игрок видит только свои корабли и обстрелянные поля противника; стрелять разрешается только по тем полям, по которым еще не стреляли; если игрок ранил корабль, то поле закрашивается красным цветом, если убил - то все поля вокруг корабля закрашиваются серым цветом; игрок стреляет до первого промаха, далее ход переходит к противнику; как только кто-то из игроков убьёт все корабли противника, он выигрывает, все игра окончена.

Клетку представим объектом класса Kletka, который хранит координаты клетки и имеет метод прорисовки. Корабли реализуем двумя классами: базовым классом Base_Korabl, со свойством цвет и виртуальным методом прорисовки, и производным от него классом Kor_potomok, который содержит, позицию корабля, размер, положение, и в котором переопределен метод прорисовки базового класса для прорисовки кораблей разного размера.

Использование объектно-ориентированного программирования упрощает нам задачу. Объектно-ориентированное программирование - это подход к разработке программного обеспечения, основанный на объектах. Этот подход позволяет максимизировать принципы модульности и "сокрытия информации". Объектно-ориентированное программирование базируется на связывании или инкапсуляции структур данных и процедуры, которая работает с данными в структуре, с модулем.

Объектно-ориентированный принцип разработки дает много преимуществ. Например, каждый объект инкапсулирует его структуру данных с процедурой, используемой для работы с экземплярами структуры данных. Это позволяет устранить в коде программы внутренние зависимости, которые могут быстро привести к тому, что этот код будет трудно обслуживать. Объекты могут также наследовать из порождающего объекта структуры данных и другие характеристики, что позволяет сэкономить усилия и обеспечить прозрачное использование для многих целей больших фрагментов кода.

 

2. Выбор языка программирования

 

Язык С++ является в настоящее время наиболее распространенным и перспективным языком промышленного программирования. Он содержит наиболее полный набор свойств и возможностей, выработанных всей историей развития языков программирования. К существенным характерным свойствам С++ следует отнести прежде всего мощную поддержку объектно-ориентированного подхода к разработке программ и механизм параметризации типов и алгоритмов. Широкий диапазон типов и развитые возможности построения пользовательских типов позволяют адекватно отразить особенности предметной области; строгие правила обращения с константными типами способствуют надежности программ. Повышению надежности создаваемых программ служит простой и гибкий аппарат управления исключительными ситуациями. Развитые схемы преобразования и приведения типов позволяют обеспечить достаточный компромисс между строгой типизацией и эффективностью исполнения программ. Средства явного управления областями действия ("пространства имен") предоставляют удобный механизм структурирования больших программ.

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

Помимо широкой распространенности и популярности, в том числе, и в отечественной практике программирования, язык С++ служит технологической основой перспективной парадигмы, возникшей в недавнее время, - обобщенного программирования. Основным инструментом реализации обобщенного программирования на языке С++ служит механизм шаблонов и убедительным примером использования этой парадигмы является Стандартная Библиотека Шаблонов (Standard Template Library, STL), разработанная А.Степановым и М.Ли и вошедшая в 1994 г. в состав стандартной библиотеки С++.

Еще одно обстоятельство, обусловившее выбор языка С++ принятие в конце 1998 г. Международного Стандарта ANSI/ISO этого языка. Факт стандартизации для такого большого, сложного и современного языка, как С++, трудно переоценить. Если говорить коротко, С++ становится инструментом промышленного программирования в общемировом масштабе. Приверженность все большего числа корпоративных разработчиков программного обеспечения к использованию типовых решений и стандартизованных инструментальных средств дает твердую уверенность в успешных перспективах С++, по крайней мере, на ближайшие десять-пятнадцать лет (примерный срок смены поколений языков программирования).

 

3.Проектирование класса

 

В данной курсовой работе были созданы следующие классы:

Kletka - класс клетка:

Свойства:

Pustaya_kletka - пустая или не пустая клетка,

Vistrel - стреляли в клетку или нет,

X - координата X,

Y - координата Y.

Методы:

Kletka(int x, int y) - конструктор,

void Vistrel_v_kletku(int vistrel = 1) - функция выстрел в клетку,

int Vistrel_ili_net() - функция определяет, стреляли в клетку или нет,

void Korabl_v_kletku(int Pustaya_kletka) - функция устанавливает, корабль в клетку,

int Pustaya_ili_net() - функция определяет, пустая или не пустая клетка,

void Prorisovka(int sdvX, int sdvY) - функция прорисовки._Korabl - базовый класс корабль:

Свойства:

Color - цвет корабля.

Методы:

Base_Korabl() - конструктор,

&#