СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ




ЗАДАНИЕ

При написании программы были поставлены следующие задачи:

­­­­­­­- программа должна иметь поле, где будут расставлены выбиваемые кирпичи и ракетка с шариком;

- реализовать меню, включающее в себя выбор уровня, начало игры, таблицу рекордов и выход из игры;

- реализовать движение ракетки с шариком влево и вправо, не разрешая выход за границы игрового поля;

- рассчитать угол отражения шарика, в зависимости от места его падения на ракетку.

КАЛЕНДАРНЫЙ ГРАФИК

выполнения курсовой работы

 

Наименование и содержание этапа (раздела) Срок выполнения
Постановка задачи. Изучение необходимой учебной и научно-технической литературы 03.09.2011 – 24.09.20011
Разработка структуры данных и алгоритма решения задачи 17.09.2011 – 08.10.2011
Написание текста программы 01.10.2011 – 19.11.2011
Тестирование и отладка программного продукта 29.10.2011 – 19.11.2011
Оформление отчета о проделанной работе 26.11.2011 – 03.12.2011
Сдача работы руководителю и защита работы 03.12.2011 – 24.12.2011

 

СОДЕРЖАНИЕ

 

Введение..................................................................................................... 5

1 Решение задачи....................................................................................... 6

2 Описание программного обеспечения................................................... 7

2.1 Программная реализация................................................................ 7

2.2 Общие сведения................................................................................ 9

2.2.1 Список файлов......................................................................... 9

2.2.2 Технические требования.......................................................... 9

2.3 Состав программы............................................................................ 10

2.4 Алгоритм........................................................................................... 13

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

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

Приложение А Руководство системного программиста.......................... 19

Приложение Б Руководство пользователя............................................... 20

 

 

 

ВВЕДЕНИЕ

 

Данная программа представляет собой полностью реализованную компьютерную аркадную игру «Батут» в режиме компьютер-игрок. Целью этой игры является прохождение максимально большого количества уровней и набора максимального количества очков. Уровень считается пройденным, если удалось разбить все кирпичи на поле отраженным ударами шариком.

Игра подойдет детям для развития координации движений, развивает быструю реакцию и глазомер.

 

 

Решение задачи

 

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

При запуске программы пользователю предоставляется меню, с помощью которого он может выбрать нужный ему раздел (рисунок 1). Для осуществления простоты навигации и ”лёгкого” интерфейса предусмотрены вложенные подменю. После завершения работы программа возвращается в главное меню.

 

Рисунок 1 – Главное меню, новая игра

Описание программного обеспечения

Программная реализация

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

Также прописаны карты, созданные нами (рисунок 2).

 

Рисунок 2 – Выбор карты

 

Данный программный продукт предусматривает наличие файла: batut.exe.

Движение мяча определяет попадание мяча по кирпичику. Так как суть игры в том, чтобы сбить все кирпичики, нужно привести часть кода, чтобы показать, как реализуется направление мяча.

Перемещение шарика осуществляется по координатам x и y (учитывается количество жизней):

ball.x+=ball_d.x; //перемещение мячика

ball.y+=ball_d.y;

if(ball.y+ball_s/2>400) //если мяч упал до низа (проигрыш)

{

heals--; // -1 жизнь

label1->Text="x"+Convert::ToString(heals); //обновляем отображение жизней

if(heals) //если еще есть жизни

{

board.set((400-board_w)/2,400-board_h);//перемещаем доску и мяч в исходное состояние

ball.set(400/2,300);

ball_d.set(0,4); //задаем направление мяча

}

else

{

timer2->Stop();//останавливаем таймер игры

textBox2->Visible=1;//делаем видимое поле для ввода имени

}

}

if(ball.x+ball_s/2>400 || ball.x-ball_s/2<0) //отскок мяча от левой и правой стенок

{

ball_d.x*=-1; //меняем направление по Х

}

if(ball.y-ball_s/2<0)//отскок мяча от потолка

{

ball_d.y*=-1;

}

if(ball.y+ball_s/2>board.y && ball.x>board.x && ball.x<board.x+board_w)//удар мяча об доску

{

float x;

x=(((ball.x-board.x)*600)/(board_w*100))-3; // изменяем угол отражения (сильнее или слабее) на значение от -3 до 3

ball_d.x+=x;

if(ball_d.x>3)//если приращение по модулю больше 3

ball_d.x=3;

if(ball_d.x<-3)

ball_d.x=-3;

ball_d.y=4-abs(ball_d.x);//преращение по У расчитываем как 4(скорость) - приращенеи по Х

ball_d.y*=-1;//и меняем направление

}

 

 

Общие сведения

Наименование программы: игра-аркада «Батут».

Разработчик: Севрюкова А.В., ИКИТ СФУ, ФИВТ, КИ 10-15.

Назначение программы: Как правило, такие игры не требуют определенной стратегии, важна лишь скорость реакции, четкость движений и отличный глазомер. Таким образом, игра предназначена для тренировки рук и скорости.

Получается, что, играя в логические игры, активизируется мышление игрока.

 

Список файлов

batut.exe - файл для запуска программы.

batut.sln - файл проекта на языке C++.

Resources - папка с ресурсами для игры (картинки, звуки).

Технические требования

Процессор: Pentium IV и выше.

RAM: 16Mb и выше.

Видеокарта: 4Mb и выше.

Свободное дисковое пространство: 40Mb.

Состав программы

 

struct XY - структура координат поля игры.

board, ball – координаты шарика и ракетки, приращения их движения.

board_d, ball_d – приращени движения шарика и ракетки.

static int Score – счет, для записи в таблицу рекордов.

static int heals – количество жизней.

array<String^>^ file – массив уровней.

static int **bricks; - массив из выбиваемых кирпичей.

Results=new rec[11] – массив результатов.

В данном фрагменте кода рисуются кирпичи (блоки). Описывается выбивание кирпичей, осуществляется пересчет очков и определяется направление шарика, после удара о блок:

int left,right,top,bottom,i,j;

int b_r=ball_s/2;

SolidBrush^ Brick_Brush = gcnew SolidBrush(Color::Green); //кисть для блоков

Pen^ Brick_Pen=gcnew Pen(Color::DarkGreen); //кисть для обводки блоков

bool can_change=1; for(i=0;i<10;i++) //проход по массиву с блоками

{for(j=0;j<10;j++)

{ top=i*brick_h; //опеределение границ текущего блока

bottom=top+brick_h;

left=j*brick_w;

right=left+brick_w;

if((ball.x-b_r<right && ball.x+b_r>left)&&(ball.y+b_r>top && ball.y-b_r<bottom)) //если мячик коснулся блока

{ if(bricks[i][j]==2) //если блок типа 2

{ bricks[i][j]=1; //делаем его типом 1

Score+=100; //добавляем 100 очков

textBox1->Text=Score.ToString();

if(can_change)//если за текущее перемещение мяча он еще не был отражен

{if(ball.x+b_r>left && ball.x+b_r<left+5) //определяем сторону блока, куда коснулся мяч

{

ball_d.x*=-1;//отскок мяча

}

if(ball.x-b_r<right && ball.x-b_r>right-5)

{

ball_d.x*=-1;

}

if(ball.y+b_r>top && ball.y+b_r<top+5)

{

ball_d.y*=-1;

}

if(ball.y-b_r<bottom && ball.y-b_r>bottom-5)

{

ball_d.y*=-1;}

can_change=0; //больше за текущее перемещение мяча, мы не сможем поменять его направление

}

} else

if(bricks[i][j]==1) //если тип блока 1

{coutn--;//вычитаем из количества блоков 1

bricks[i][j]=0;//убираем его

Score+=100;

textBox1->Text=Score.ToString();

if(can_change) {

if(ball.x+b_r>left && ball.x+b_r<left+5)

{

ball_d.x*=-1;

}

if(ball.x-b_r<right && ball.x-b_r>right-5)

{ ball_d.x*=-1;

}

if(ball.y+b_r>top && ball.y+b_r<top+5)

{

ball_d.y*=-1;

}

if(ball.y-b_r<bottom && ball.y-b_r>bottom-5)

{

ball_d.y*=-1;

}

can_change=0;

}

}

}

if(bricks[i][j]!=0) //если блок не 0, т.е. есть

{

switch(bricks[i][j]) //выбор типа блока

{

case 1:

Brick_Brush->Color=Color::Green; //рисуем зеленым

g->FillRectangle(Brick_Brush,left,top,brick_w,brick_h);

break;

case 2:

Brick_Brush->Color=Color::Blue; //и синим соответственно

g->FillRectangle(Brick_Brush,left,top,brick_w,brick_h);

break;

}

g->DrawRectangle(Brick_Pen,left,top,brick_w,brick_h); //и обводим этот блок

}

}

}

 

Алгоритм

При запуске программы открывается окно игры с заставкой (рисунок 1). Сверху имеется вкладка «Игра», включающаяся в себя разделы «Новая игра», «Результаты» и «Выход». Зайдя в раздел «Новая игра», можно выбрать уровень, либо начать игру сначала. При выборе «Играть!» в разделе «Новая игра», начинается игровой процесс, где пользователю предстоит, управляя отскакивающим от ракетки шариком, разбивать кирпичи (рисунок 3).

 

 

Рисунок 3 – Начало игры

Рисунок 4 – Игровой процесс

 

При прохождении игры или проигрыше открывается поле для ввода имени, куда можно вписать свое имя, для того, чтобы впоследствии его можно было найти в таблице рекордов (рисунок 5).

 

 

Рисунок 5 – Запись в таблицу рекордов

 

После ввода имени откроется окно с лучшими результатами предыдущих игроков (рисунок 6). Также таблицу рекордов можно посмотреть, зайдя в раздел «Игра»/ «Результаты». При нажатии «Выйти» программа закрывается.

 

 

Рисунок 6 – Просмотр таблицу рекордов

 

               
   
 
     
 

 

 

                                           
     
 
   
 
 
 
     
 
 
   
 
     
 
   
 
   
 
   

 


Рисунок 7 – Блок-схема организации главного меню

 

 

ЗАКЛЮЧЕНИЕ

 

Разработанный программный продукт удовлетворяет всем указанным в начале отчета требованиям.

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

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

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

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 Егорова, Е.В. Программирование на языке высокого уровня. Часть II: учеб. / Е.В. Егорова. – Барнаул: изд-во Дрофа, 1998 – 176 с.

2 Павловская, Т.А. С/С++ программирование на языке высокого уровня: учеб. / Т.А. Павловская. – СПб.: изд-во Питер, 2009 – 203 с.

3 Лафоре, Р. Объектно-ориентированное программирование в С++, классика Computer Science. / Р. Лафоре. – СПб.: изд-во Питер, 2004 – 187 с.

4 Давыдов, В.Г. Технологии программирования С++ / В.Г. Давыдов – СПб.: изд-во БХВ-Петербург, 2005 – 305 с.

5 Шилдт, Г. С/С++. Справочник программиста / Г.Шилдт. – М.: изд-во Вильямс, 2007 – 593 с.

 

ПРИЛОЖЕНИЕ А



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: