"Морской бой": разработка программы
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
дин из трех принципов объектно-ориентированного программирования - инкапсуляция. Объединение данных с функциями их обработки в сочетании со скрытием ненужной для использования этих данных информации называется инкапсуляцией. Также имеется конструктор, который инициализирует начальные данные. Конструктор не возвращает значение, даже типа void, и должен называться также как и класс. Конструкторов может быть несколько с разными параметрами.
Листинг объявления класса Base_Korabl:
class Base_Korabl {:Color;:_Korabl();Prorisovka(short x, short y);
}
В этом листинге в производном классе был переопределён метод Prorisovka() для прорисовки кораблей разного размера. Этот принцип объектно-ориентированного программирования называется полиморфизмом - возможностью использовать в различных классах иерархии одно имя для обозначения сходных по смыслу действий и гибко выбирать требуемое действие во время выполнения программы.
Листинг объявления класса Kor_potomok:
class Kor_potomok: Base_Korabl {Razmer, X, Y, Polojenie, KOL_RANENIY;:_potomok(short Razmer, short x, short y, short Polojenie);Prorisovka(int sdvX, int sdvY);Vistrel(int x, int y);Ranenie();Vistrel_v_kletkus(Kletka *kletka[10][10]);Rasstanovka(Kletka *kletka[10][10]);
}
Класс Kor_potomok является производным от класса Base_Korabl. Он наследует все свойства и методы базового класса и добавляет новые. Это еще один принцип объектно-ориентированного программирования - наследование. Наследование - это возможность создания иерархии классов, когда потомки наследуют все свойства своих предков, могут их изменять и добавлять новые.
Также к программе подключены следующие заголовочные файлы:
isotream - заголовочный файл подключается для получения доступа к функциям потокового ввода/вывод
stdlib - заголовочный файл стандартной библиотеки общего назначения. Использованы функции:- функция устанавливающая случайный порядок выбора псевдослучайных чисел функцией- функция возвращающая случайного число из указанного диапазона.
conio - заголовочный файл объявляет несколько библиотечных функций для работы с консольным вводом и выводом программы. При помощи него были решены проблемы связанные с формированием внешнего вида программы. Использованы функции:
gotoxy - перемещает курсор в текстовом окне на указанную позицию курсора. Прототип функции void gotoxy(int x, int y).- определяет текстовое окно на экране. Прототип функции void window(int left,int top,int right,int bottom).
textbackground - задает цвет фона в текстовом режиме. Прототип функции void textbackground(int newcolor).
textcolor - Устанавливает цвет символов в текстовом режиме. Прототип функции void textcolor(int newcolor).
clrscr - очищает текущее текстовое окно и перемещает курсор в верхний левый угол экрана. Прототип функции void clrscr(void).
getch - читает один символ, непосредственно с консоли, без вывода его на экран. Прототип функции int getch(void).
dos.h - используется для подключения следующих функции delay .
При вызове функции delay выполнение программы приостанавливается на время, определяемое параметром milliseconds. Прототип функции void delay (unsigned milliseconds).
Полный листинг программы смотрите в приложении 1.
Заключение
В данной работе была разработана игра Морской бой. В программе использовались классы, наследование, виртуальные методы. В качестве языка программирования был выбран язык С++. Этот язык является прямым преемником языка С и фактически включает его как подмножество. Тем самым, С++ целиком содержит хорошо зарекомендовавшую себя традиционную модель вычислений языка С, и предоставляет мощные средства работы с объектами. Было спроектировано три класса: Kletka - класс клетка, содержащий свойство позиция и метод прорисовки; Base_Korabl - базовый класс корабль со свойствам цвет методом прорисовки; Kor_potomok - класс производный от класса Base_Korabl, к которому помимо свойств базового класса добавляются свойства позиция, размер, положение, и в котором переопределён метод прорисовки, чтобы прорисовывать корабли разного размера. Все свойства классов закрыты с помощью метки видимости private, а доступ к ним осуществляется с помощью общедоступных методов работающими со свойствами. Такой подход позволяет скрыть от особенности организации класса, предоставив пользователю интерфейс работы с классом.
При разработке программы я получил практические навыки в работы с классами и закрепил теоретические знания по объектно-ориентированному программированию.
Особых трудностей в написании работы не возникло.
Дальнейшую модификацию программы вижу в усложнении логики игры компьютера таким образом, чтобы сначала он стрелял по тем клеткам, в которых могут располагаться большие корабли.
Цель работы заключалась в изучении принципов объектно-ориентированного программирования, и эта цель была достигнута.
Список литературы
.С/С++. Программирование на языке высокого уровня. Павловская Т.А. Санкт - Петербург Питер 2004 г;
.C/C++. Объектно-ориентированное программирование. Практикум. Павловская Т.А. Санкт - Петербург Питер 2004 г;
.C/C++. Структурное программирование. Практикум. Павловская Т.А., Щупак Ю.А. Санкт - Петербург Питер 2005 г;
.Конспект лекций по дисциплине Объектно-ориентированное программирование;
Приложения
Приложение 1 (листинг программы)
#include
#include
#include
#include Kletka {:Pustaya_kletka, Vistrel, X, Y;:(int x, int y) {Vistrel = 0; Pustaya_kletka = 0; X = x; Y = y;}Vistrel_v_kletku(int vistrel = 1) {Vistrel = vistrel;}Vistrel_ili_net() {return Vistrel;}Korabl_v_kletku(int pustaya_kletka) {Pustaya_kletka = pustaya_kletka;}Pustaya_ili_net() {return Pustaya_kletka;}Prorisovka(int sdvX, int sdvY) {(3*(sdvX+X), 2*(sdvY+Y), 3*(sdvX+X)+2, 2*(sdvY+