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

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

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

дин из трех принципов объектно-ориентированного программирования - инкапсуляция. Объединение данных с функциями их обработки в сочетании со скрытием ненужной для использования этих данных информации называется инкапсуляцией. Также имеется конструктор, который инициализирует начальные данные. Конструктор не возвращает значение, даже типа 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+