Разработка приложения для Windows, представляющего собой компьютерную игру “Морской бой”

Автор работы: Пользователь скрыл имя, 25 Мая 2011 в 14:00, курсовая работа

Описание

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

Содержание

Введение………………………………………………………………………..3

1. Разработка эскизного и технического проектов программы.....................5

1.1 Назначение и область применения.............................................................4

1.2 Постановка задачи........................................................................................4

1.3 Описание алгоритма.....................................................................................5

2. Разработка рабочего проекта.......................................................................12

2.1 Разработка программы...............................................................................12

2.2 Текст программы........................................................................................14

Заключение.......................................................................................................26

Список использованных источников.............................................................27

Работа состоит из  1 файл

КУРСОВАЯ.doc

— 232.00 Кб (Скачать документ)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Оглавление 

Введение………………………………………………………………………..3

1. Разработка  эскизного и технического проектов  программы.....................5

1.1 Назначение  и область применения.............................................................4

1.2 Постановка  задачи........................................................................................4

1.3 Описание  алгоритма.....................................................................................5

2. Разработка  рабочего проекта.......................................................................12

2.1 Разработка  программы...............................................................................12

2.2 Текст  программы........................................................................................14

Заключение.......................................................................................................26

Список  использованных источников.............................................................27

Приложение  А..................................................................................................28 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Введение 
 

                 Задание на курсовую работу по дисциплине

                “Алгоритмические языки и программирование”

Студент группы ОИН-709 Березин Георгий Михайлович

Направление: Информатика, № контракта 15200070602045

Тема: Разработка приложения для Windows, представляющего собой компьютерную игру “Морской бой”.

Условие задачи:

На поле 10 на 10 позиций стоят невидимые вражеские корабли: 4 корабля по 1 клетке, 3 корабля по 2 клетки, 2 корабля по 3 клетки, 1 корабль в 4 клетки. Необходимо поразить каждую из клеток кораблей. Два игрока вводят позиции кораблей в виде цифр (1, 2, 3, 4) в соответствующие элементы матрицы, тем самым определяя конфигурацию и положение кораблей. Игроки по очереди “наносят удары” по кораблям противника. Если позиция корабля указана верно, то она помечается крестиком на поле. Предусмотреть вариант игры, когда одним из играющих является ЭВМ.

Все, кто  имеет дело с компьютером, так  или иначе сталкивались  с  компьютерными играми, и подавляющее большинство может сходу назвать несколько игр, которые им особенно понравились. Те, кто уже совсем наигрался, почти наигрался или еще не наигрался, но в процессе общения с компьютером уже начал совмещать игры с чем-нибудь более полезным, возможно, хотели бы придумать какие-нибудь свои, не похожие ни на какие другие игры. Многое захватывает в таком творчестве. И не сам процесс игры, а разработка игровой вселенной, ее проектирование и реализация. Когда можно слить воедино сценарий, графику, музыку, искусно задуманный и умело запрограммированный алгоритм — создать единый фантастический мир, живущий по законам, которые ты же для него и придумал.

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

    1. Разработка эскизного  и технического  проектов программы 
 

    1.1 Назначение и область  применения 

Необходимо  разработать развлекательную программу, представляющую собой игру. Она должна удовлетворять требованиям, приведенными в задаче данной курсовой работе. Разрабатываемая программа должна работать только под управлением среды Windows 9х. Но мной была предусмотрена возможность запуска и нормальной работы игры и на более поздних версиях, на таких как Windows XP и Windows Vista. Программа предназначена для работы на досуге программистов и пользователей персональных компьютеров, которые хотят отдохнуть.

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

1.2 Постановка задачи 
 

    Данная  игра подразумевает игру между двумя игроками. Перед началом игры, игрокам необходимо расставить на своих полях корабли. По правилам игры, корабли должны быть следующие: один 4-х палубный, два 3-х палубных,  три 2-х палубных и четыре однопалубных. Порядок расстановки не имеет значения, но должны соблюдаться следующие правила: корабли не должны пересекаться и должны находится на расстоянии друг от друга минимум через одну клетку. Расставлять корабли можно поворачивая их на угол 90° по вертикали или по горизонтали.

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

1.3 Описание алгоритма 
 

    Описание  обобщённого алгоритма работы программы. После начала новый игры игрок расставляет свои корабли. Как только игрок завершит расстановку всех кораблей, программа автоматически сгенерирует расположение кораблей на своём поле. Т.к. право первого хода принадлежит игроку, то программа будет ждать первого хода игрока. Далее происходит графическая прорисовка хода. В случае попадания происходит проверка на наличие неподбитых кораблей компьютера. Если таковые есть, то игрок делает следующий ход, если нет, то игра заканчивается. В случае, если игрок промахнулся, то ход передаётся компьютеру, далее следует графическая прорисовка его хода, проверка на попадание и в случае промаха ход передаётся игроку. В случае попадания происходит проверка на наличие неподбитых кораблей игрока, если таковых нет, игра завершается, в противном случае компьютер повторяет свой ход.

    Описание  алгоритма расстановки кораблей компьютером. Т.к. кол-во палуб кораблей обратно пропорционально кол-ву кораблей, то в алгоритме используются два цикла. В первом цикле переменной X присваивается значение 4, которое в дальнейшем уменьшается на 1 до 1 и означает кол-во палуб корабля. Во вложенном цикле, переменной Y присваивается значение переменной X, в дальнейшем оно изменяется до 4 с шагом в 1, и означает кол-во кораблей с кол-вом палуб X. 
 

Рис.1. Обобщённая схема алгоритма 
 
 

      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Рис. 2. Алгоритм расстановки кораблей компьютером 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Рис. 3. Алгоритм хода компьютера

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

    Расстановка осуществляется выбором начальных координат по X и Y, затем случайным образом выбирается направление размещения (вверх, вниз вправо или влево), производится расчёт конечных координат по X и Y и если корабль можно разместить на данном участке (если корабли не пересекаются, не накладываются друг на друга, и не выходят за границы массива), то происходит его регистрация в массиве. Если все направления проверены, и корабль невозможно разместить, то происходит их обнуление, генерация новых начальных координат X и Y, и перебор направлений повторяется. Так продолжается до завершения расстановки всех кораблей.

    Описание  алгоритма хода компьютера. В начале алгоритма происходит проверка координат удара, на случай, если корабль в прошлом ходу был подбит, но не уничтожен. Если координаты равны нулю, то происходит их случайная генерация (если ячейка с новыми координатами открыта, то генерация продолжится). Далее производится графический вывод состояния ячейки и проверка на полное уничтожение корабля, если корабль полностью подбит, то следует генерация новых координат. Если корабль не уничтожен, то следует проверка на присутствие его палубы в данной клетке, если ячейка пуста, то происходит обнуление координат, сброс направлений и передача хода игроку. Если ячейка не пуста, то происходит случайный выбор направления и проверка ячейка со смещением в выбранном направлении. Если ячейка открыта, то генерация направления повторяется, если нет, то происходит приращение координат X или Y в выбранном направлении, графический вывод состояния ячейки. Если корабль полностью открыт, то координаты и направления обнуляются и ход заканчивается. Для исключения ошибки, связанной с обращением к несуществующим ячейкам массива, введена следующая проверка на выход координат за его пределы: если координаты вышли за пределы размера массива, то происходит инверсия направления (если направление было вверх, то стало вниз, если было вправо, то изменяется на лево и т.д.) и продолжение хода компьютера. Если же координаты в норме, то следует проверка на наличие палубы корабля в данной открытой ячейке и если обнаруживается её присутствие, то происходит дальнейшее приращение координат в выбранном направлении. Если текущие координаты менее 0, то происходит сброс направлений (однако при следующем ходе компьютера, оно будет выбрано случайно и отсчитываться из данной ячейки) и завершение хода компьютера. Если координаты больше 0, то происходит инверсия направления, приращение координат в выбранном направлении. Затем ячейка проверяется, была ли она открыта или нет. Если ячейка была открыта, то происходит сброс направлений и завершение хода компьютера, если нет, то просто завершение хода. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2. Разработка рабочего  проекта 
 

2.1 Разработка программы 
 

    Для разработки приложения игры “Морской бой” используется среда визуального программирования “Delphi”. Проект программы содержит одно окно – Mainform – игровое поле.

      1 - Компонент Mainform.

      Свойства:

      Caption – “Морской бой”;

      Border – BsSingle;

      Name – Mainform.

      События:

      FormCreate – включение генератора случайных числе и сброс координат и направлений в ноль;

      FormPaint – перерисовка игровых полей Manpole и Comppole при перерисовке формы Mainform. 

      2 – компонент TLabel1.

      Свойства:

      Font – чёрный, размер 10;

      Caption – “Ваше поле:”. 

      3 – компонент TMainMenu.

      Свойства:

      Items

      Игра (Menu1)

      Начать  новую (Menu2)

      Выход (Menu3)

      События:

      Menu2 – начать новую игру;

      Menu3 – закончить работу с приложением. 

      4 – компонент Comppole.

      Свойства:

      ColCount – 10;

      DefaultColWidth – 20;

      DefaultRowHeight – 20;

      RowCount – 10;

      События:

      ComppoleMouseDown – используется при расстановке игроком кораблей на поле, сохраняет начальную координату корабля;

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

      5 – компонент TLabel2.

      Свойства:

Информация о работе Разработка приложения для Windows, представляющего собой компьютерную игру “Морской бой”