- Разработка программы на языке C++, реализующей игру «Морской бой»
- Описание и преимущества языка программирования высокого уровня С++. Характеристика, отличительные черты объявления класса BaseKorabl, Kletka и KorPotomok. Особенности основных алгоритмов создания программы, сущность листинга в производном классе.
- Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
- ВВЕДЕНИЕ
- Программа «Морской бой» — чисто игровая программа, предназначена для удовлетворения игровых потребностей пользователя. Она требует использования мыши, так как только с ее помощью пользователь может размещать на игровом поле корабли и «стрелять» по кораблям противника.
- Актуальность: Разработать программу, реализующую игру «Морской бой» в режиме пользователь — компьютер. В процессе реализации данной задачи использовать основные свойства объектно-ориентированного программирования (в обязательном порядке создать несколько классов (свойство инкапсуляции), которые будут взаимодействовать между собой и, если будет необходимо, использовать также другие свойства ООП).
- Цель: Разработать программу на языке C++, реализующую игру «Морской бой». Создать объект корабль, у которого должно быть свойство цвет и метод прорисовки. От него создать четыре потомка (корабли с соответствующими размерами). От этих потомков создать необходимое количество потомков (в зависимости от размеров корабля, если 4, то 1 корабль, если 3, то 2 корабля и т.д.), которых должны иметь свойство позиция. При попадании в корабль сменить его цвет на другой. Клетки реализовать объектом (со свойствами позиция и методами прорисовки). При попадании в пустую клетку сделать ее отличимой от остальных (например, поставить в ней крест), кроме того не позволять игроку и компьютеру стрелять в нее. На экране отображать поля обоих игроков. Компьютеру задать простую логику: добивать корабль, не стрелять в соседние клетки от затопленного корабля и т.д. На экране отображать счетчик оставшихся кораблей игрока и компьютера.
- Обычно перед началом разработки любой игры должна сформироваться идея, а издатель/разработчик должен дать «зелёный свет».Для управления всеми действами в программе необходимо было создать соответствующее ей меню, которое впоследствии было разработано.
- Главным «помощником» в работе мне послужил язык программирования высокого уровня С++, который без всяких трудностей и препятствий позволил мне реализовать всю поставленную предо мною задачу целиком и полностью.
- В курсовой работе приведены все этапы разработки программы, начиная с постановки самой задачи до её непосредственной реализации. Данная курсовая работа направлена на изучение принципов объектно-ориентированного программирование. В данной работе разрабатывается игра «Морской бой». В программе используются классы, наследование, виртуальные методы.
- ГЛАВА 1. Выбор Языка Программирования
- 1.1 Выбор языка программирования
- С++ является прямым преемником языка С и фактически включает его как подмножество. Тем самым, С++ целиком содержит хорошо зарекомендовавшую себя традиционную модель вычислений языка С, в том числе, развитый обще алгоритмический базис, широкие возможности конструирования новых типов и гибкие средства работы с памятью, включая арифметику над указателями. Это обстоятельство обеспечивает сохранение в актуальном состоянии миллионы строк программного текста, разработанного на С, и дает дополнительные гарантии широкого использования С++.
- Помимо широкой распространенности и популярности, в том числе, и в отечественной практике программирования, язык С++ служит технологической основой перспективной парадигмы, возникшей в недавнее время, — обобщенного программирования. Основным инструментом реализации обобщенного программирования на языке С++ служит механизм шаблонов и убедительным примером использования этой парадигмы является Стандартная Библиотека Шаблонов (StandardTemplateLibrary, STL), разработанная А.Степановым и М.Ли и вошедшая в 1994 г. в состав стандартной библиотеки С++.
- Еще одно обстоятельство, обусловившее выбор языка С++ принятие в конце 1998 г. Международного Стандарта ANSI/ISO этого языка. Факт стандартизации для такого большого, сложного и современного языка, как С++, трудно переоценить. Если говорить коротко, С++ становится инструментом промышленного программирования в общемировом масштабе. Приверженность все большего числа корпоративных разработчиков программного обеспечения к использованию типовых решений и стандартизованных инструментальных средств дает твердую уверенность в успешных перспективах С++, по крайней мере, на ближайшие десять-пятнадцать лет (примерный срок смены поколений языков программирования).
- 1.2 Проектирование класса
- Kletka — класс клетка:
- Свойства:
- 1.3 Программирование задачи
- Игра «Морской бой»
- Разработка программы, реализующей игру «Морской бой» в режиме пользователь — компьютер. Обеспечение удобного проектирования, настройки, и разделения отдельных исполняемых операций. Рассмотрение алгоритмов основных функций, используемых в программе.
- Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Разработка программы на языке C++, реализующей игру «Морской бой»
Описание и преимущества языка программирования высокого уровня С++. Характеристика, отличительные черты объявления класса BaseKorabl, Kletka и KorPotomok. Особенности основных алгоритмов создания программы, сущность листинга в производном классе.
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ГЛАВА 1. Выбор Языка Программирования
1.1 Выбор языка программирования
1.3 Программирование задачи
1.4 Листинг. Объявления класса Kletka
1.5 Объявления класса BaseKorabl
1.6 Объявления класса KorPotomok
ГЛАВА 2. Описание предметной области
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНОКОВ
ВВЕДЕНИЕ
Данная курсовая работа направлена на изучение принципов объектно-ориентированного программирования. Разработать программу на языке C++, реализующую игру «Морской бой». В программе используются, выбор языка программирования. Характеристика необходимых классов, наследований, виртуальных методов.
Программа «Морской бой» — чисто игровая программа, предназначена для удовлетворения игровых потребностей пользователя. Она требует использования мыши, так как только с ее помощью пользователь может размещать на игровом поле корабли и «стрелять» по кораблям противника.
Актуальность: Разработать программу, реализующую игру «Морской бой» в режиме пользователь — компьютер. В процессе реализации данной задачи использовать основные свойства объектно-ориентированного программирования (в обязательном порядке создать несколько классов (свойство инкапсуляции), которые будут взаимодействовать между собой и, если будет необходимо, использовать также другие свойства ООП).
Цель: Разработать программу на языке C++, реализующую игру «Морской бой». Создать объект корабль, у которого должно быть свойство цвет и метод прорисовки. От него создать четыре потомка (корабли с соответствующими размерами). От этих потомков создать необходимое количество потомков (в зависимости от размеров корабля, если 4, то 1 корабль, если 3, то 2 корабля и т.д.), которых должны иметь свойство позиция. При попадании в корабль сменить его цвет на другой. Клетки реализовать объектом (со свойствами позиция и методами прорисовки). При попадании в пустую клетку сделать ее отличимой от остальных (например, поставить в ней крест), кроме того не позволять игроку и компьютеру стрелять в нее. На экране отображать поля обоих игроков. Компьютеру задать простую логику: добивать корабль, не стрелять в соседние клетки от затопленного корабля и т.д. На экране отображать счетчик оставшихся кораблей игрока и компьютера.
Обычно перед началом разработки любой игры должна сформироваться идея, а издатель/разработчик должен дать «зелёный свет».Для управления всеми действами в программе необходимо было создать соответствующее ей меню, которое впоследствии было разработано.
Главным «помощником» в работе мне послужил язык программирования высокого уровня С++, который без всяких трудностей и препятствий позволил мне реализовать всю поставленную предо мною задачу целиком и полностью.
В курсовой работе приведены все этапы разработки программы, начиная с постановки самой задачи до её непосредственной реализации. Данная курсовая работа направлена на изучение принципов объектно-ориентированного программирование. В данной работе разрабатывается игра «Морской бой». В программе используются классы, наследование, виртуальные методы.
Постановка задачи: В данном проекте необходимо реализовать известную игру «Морской бой». Наиболее важные алгоритмы этой игры: алгоритмы расстановки кораблей по полю, выбора направления удара Компа в поле Игрока и непосредственно нанесение удара им.
Возможности программы: С помощью данной программы пользователь может насладиться игрой «Морской бой» в режиме пользователь — компьютер.
ГЛАВА 1. Выбор Языка Программирования
1.1 Выбор языка программирования
Язык С++ является в настоящее время наиболее распространенным и перспективным языком промышленного программирования. Он содержит наиболее полный набор свойств и возможностей, выработанных всей историей развития языков программирования. К существенным характерным свойствам С++ следует отнести прежде всего мощную поддержку объектно-ориентированного подхода к разработке программ и механизм параметризации типов и алгоритмов. Широкий диапазон типов и развитые возможности построения пользовательских типов позволяют адекватно отразить особенности предметной области; строгие правила обращения с константными типами способствуют надежности программ. Повышению надежности создаваемых программ служит простой и гибкий аппарат управления исключительными ситуациями. Развитые схемы преобразования и приведения типов позволяют обеспечить достаточный компромисс между строгой типизацией и эффективностью исполнения программ. Средства явного управления областями действия («пространства имен») предоставляют удобный механизм структурирования больших программ.
С++ является прямым преемником языка С и фактически включает его как подмножество. Тем самым, С++ целиком содержит хорошо зарекомендовавшую себя традиционную модель вычислений языка С, в том числе, развитый обще алгоритмический базис, широкие возможности конструирования новых типов и гибкие средства работы с памятью, включая арифметику над указателями. Это обстоятельство обеспечивает сохранение в актуальном состоянии миллионы строк программного текста, разработанного на С, и дает дополнительные гарантии широкого использования С++.
Помимо широкой распространенности и популярности, в том числе, и в отечественной практике программирования, язык С++ служит технологической основой перспективной парадигмы, возникшей в недавнее время, — обобщенного программирования. Основным инструментом реализации обобщенного программирования на языке С++ служит механизм шаблонов и убедительным примером использования этой парадигмы является Стандартная Библиотека Шаблонов (StandardTemplateLibrary, STL), разработанная А.Степановым и М.Ли и вошедшая в 1994 г. в состав стандартной библиотеки С++.
Еще одно обстоятельство, обусловившее выбор языка С++ принятие в конце 1998 г. Международного Стандарта ANSI/ISO этого языка. Факт стандартизации для такого большого, сложного и современного языка, как С++, трудно переоценить. Если говорить коротко, С++ становится инструментом промышленного программирования в общемировом масштабе. Приверженность все большего числа корпоративных разработчиков программного обеспечения к использованию типовых решений и стандартизованных инструментальных средств дает твердую уверенность в успешных перспективах С++, по крайней мере, на ближайшие десять-пятнадцать лет (примерный срок смены поколений языков программирования).
1.2 Проектирование класса
Kletka — класс клетка:
Свойства:
· Pustaya_kletka — пустая или не пустая клетка,
· Vistrel — стреляли в клетку или нет,
· Kletka(int x, int y) — конструктор,
· voidVistrel_v_kletku(intvistrel = 1) — функция выстрел в клетку,
· intVistrel_ili_net() — функция определяет, стреляли в клетку или нет,
· voidKorabl_v_kletku(intPustaya_kletka) — функция устанавливает, корабль в клетку,
· intPustaya_ili_net() — функция определяет, пустая или не пустая клетка,
· voidProrisovka(intsdvX, intsdvY) — функция прорисовки._Korabl — базовый класс корабль:
· Prorisovka(short x, short y) — функция виртуального метода прорисовки._potomok — класс производный от Base_Korabl:
· Polojenie — положение (горизонтальное или вертикальное),
· KOL_RANENIY — количество ранений.
· Kor_potomok(short Razmer, short x, short y, short Polojenie) — конструктор,
· void Prorisovka(intsdvX, intsdvY) — функцияпереопределёногометодапрорисовки,
· intVistrel(int x, int y) — функциявыстрел,
· voidVistrel_v_kletkus(Kletka *kletka[10][10]) — функция обстрела всех клеток вокруг корабля, если он убит,
· voidRasstanovka(Kletka *kletka[10][10]) — функция расставляет корабли.
Связь между базовым классом Base_Korabl и производным классам Kor_potomok. Класс Kletka — независимый класс.
1.3 Программирование задачи
Источник
Игра «Морской бой»
Разработка программы, реализующей игру «Морской бой» в режиме пользователь — компьютер. Обеспечение удобного проектирования, настройки, и разделения отдельных исполняемых операций. Рассмотрение алгоритмов основных функций, используемых в программе.
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования
«Уральский федеральный университет имени первого Президента России Б.Н. Ельцина»
студента 3 курса Леденева Д.А
Научный руководитель: Игнатенко Н.В
«Морской бой» — игровой проект в жанре изометрической стратегии. Это улучшенная версия всем известной старой игры, разработанной в 1930гг в США, Управление в игре осуществляется с помощью мыши. Игрок «расставляет» на поле корабли и «стреляет» по кораблям противника
Постановка задачи: Разработать программу, реализующую игру «Морской бой» в режиме пользователь — компьютер. В процессе реализации данной задачи использовалась программа sublime text 3
Цель: Достичь реализации данной задачи наиболее оптимальными методами и с минимальной тратой ресурсов.
Возможности программы: С помощью данной программы пользователь может пройти игру «Морской бой» в режиме пользователь — компьютер.
Описание предметной области
Предметная область данного проекта — игра «Морской бой». Она реализуется с помощью нажатий на клавиши мыши (размещение кораблей и выстрелы по кораблям противника, удачные попадания фиксируются желтым цветом).
Правила игры следующие: в поле 10х10 пользователь расставляет свои корабли (корабли не должны лежать друг на друге, стоять рядом, пересекаться). Точно так же компьютер на своем игровом поле расставляет свои корабли. Количество кораблей 10, а именно: один четырехпалубный (одна палуба соответствует одной клетке игрового поля), два трехпалубных, три двухпалубный и четыре однопалубных. После расстановки кораблей пользователь и компьютер поочередно «стреляют» по клеткам игрового поля противника. Если кому-либо из них удалось попасть во вражеский корабль, то, согласно правилам, ход не переходит к противнику (если игрок попал в корабль противника, то он имеет право еще одного выстрела) до следующего промаха. Победа достается тому, кто первым уничтожит все корабли противника. Ниже приводится диаграмма прецедентов, на которой изображены варианты действий для пользователя и компьютера.
С целью более удобного проектирования, настройки, и разделения отдельных исполняемых операций, программа построена на классах, которые взаимодействуют между собой. Использование классов дает улучшенной понимание кода, а значит настройку и последующую модификацию исходного кода программы.
В данной программе четко прослеживаются группы функций, которые из-за выполняемых ними операций стоит объединить в классы. Проанализировав предметную область программы можно выделить следующие классы:
Класс Flot — класс, который содержит данные о кораблях (количество кораблей, поле на котором следует размещать корабли и т.д.);
Класс AI — так называемый класс искусственного интеллекта, размещает корабли противника;
Класс Referee — наследник класса AI, который проверяет состояние кораблей и флотов пользователя и компьютера;
Класс HandersOfEvents — наследник класса Referee. Это единственный класс в данной программе, который взаимодействует с формой напрямую.
Также в программе используется структура Ship, которая содержит данные о количестве палуб корабля, расположении частей корабля, следит за состоянием корабля в целом.
int i, j, n; // переменные, используемые в циклах
bool destroy; // флаг, проверяющий наличие флота
TImage *Im; // поле, на котором мы рисуем
Ship ship[10]; // количество кораблей
Источник