Автор работы: Пользователь скрыл имя, 18 Ноября 2013 в 21:14, дипломная работа
Темой своей работы я выбрал реализацию футбольного симулятора, так как люблю этот вид спорта, а так же считаю его наиболее популярным. В мои задачи входит:
Создать интерфейс, реализующий передвижения игроков
Написать логическую структуру игры (движение игроков, пас, удар)
Реализовать атаку и защиту команд
Для реализации проекта я выбрал язык С++ и кроссплатформенную среду разработки Qt5.0.2
ВВЕДЕНИЕ 7
1. ПРЕДВАРИТЕЛЬНЫЙ АНАЛИЗ 4
2. ОСНОВНЫЕ ПРОЕКТНЫЕ РЕШЕНИЯ 6
2.1. Постановка задачи 6
2.2. Требования к программе 6
2.2.1. Требования к функциональным характеристикам 6
2.2.2. Требования к надежности 6
2.2.3. Требования к составу технических средств 7
2.2.4. Требования к программной совместимости 7
2.3. Обоснование выбора среды разработки 7
2.4. Организация входных и выходных данных 8
2.4.1. Выходные данные 8
2.5. Разработка пользовательского интерфейса 8
2.6. Словесное описание алгоритма 9
2.6.1. Описание логики игры 9
2.6.2. Описание структуры классов 11
2.7. Тестирование 11
2.8. Руководство пользователя 14
2.8.1. Общие сведения о программном продукте 14
2.8.2. Описание запуска 15
2.8.3. Инструкция по работе 15
3. ОРГАНИЗАЦИОННЫЙ РАЗДЕЛ 16
3.1. Требования к рабочему месту 16
3.2. Зрительная гимнастика 17
3.3. Требования пожаробезопасности при работе на вычислительной технике 17
ЗАКЛЮЧЕНИЕ 18
Список используемой литературы 19
}
else
{
plNotBallBlue(blue->
plBallBlue(blue->getPlayer2())
}
def(red->getPlayer1(), blue->getPlayer1());
def(red->getPlayer2(), blue->getPlayer2());
}
void Game::runRed(Player * player)
{
if (player->getX() >= red->getBorder()) // граница атаки больше единицы
{
player->setX(player->getX()-1)
int num = qrand() % 3;
if (num == 1) // если единица
player->setY(player->getY()+1)
else if (num == 2) // если двойка
player->setY(player->getY()-1)
borderOffset(player);
}
}
void Game::runBlue(Player * player)
{
if(player->getX() <= blue->getBorder()) // граница атаки больше единицы
{
player->setX(player->getX()+1)
int num = qrand() % 3;
if(num == 1) // если единица
player->setY(player->getY()+1)
if(num == 2) // если двойка
player->setY(player->getY()-1)
borderOffset(player);
}
}
void Game::plBallRed(Player * player)
{
if(player->getLineBottom() == 0 && player->getLineTop() == 0) // если нет выхода за границу по у
{
// если игрок находится рядом с защитником
if(red->obl(player, blue->getPlayer1()) == 1)
{
int num = qrand() % 4; // создается случайное число
switch(num)
{
case 0: player->setY(player->getY()+1)
borderOffset(player);
break;
case 1: player->setY(player->getY()-1)
borderOffset(player);
break;
case 2: pas(red->getPlayer1(), red->getPlayer2());
break;
}
}
else
runRed(player);
ball->coord(player); // присвоить мячу координаты игрока
if(player->getX() <= red->getBorder()+5) // если игрок входит в зону для удара
{
if (((player->getY() > blue->getBorder()/4+5) && (player->getY() < blue->getBorder()/2))
|| ((player->getY() < blue->getBorder()/4-5) && (player->getY()
> 0))) // если игрок в области
pas(red->getPlayer1(), red->getPlayer2());
else
striceRed(blue->getGoalkeeper(
}
}
else // если граница по у пересечена
lineOffset(player);
}
void Game::play()
{
if(blue->whouBall % 2 == 0) // какая команда с мячом
{
ball->nullPas();
redAt();
}
else
{
ball->nullPas();
blueAt();
}
}
void Game::plNotBallBlue(Player * player)
{
if(player->getLineBottom() == 0 && player->getLineTop() == 0)
{
if(blue->obl(player, red->getPlayer2()) == 1 || blue->obl(player, red->getPlayer1()) == 1) // если в области видимости противник
{
int num = qrand() % 3;
switch(num)
{
case 0:
player->setY(player->getY()+1)
borderOffset(player);
break;
case 1:
player->setY(player->getY()-1)
borderOffset(player);
case 2:
player->setX(player->getX()-1)
}
}
else
runBlue(player);
}
else
lineOffset(player);
}
void Game::plNotBallRed(Player * player)
{
if(player->getLineBottom() == 0 && player->getLineTop() == 0)
{
if(red->obl(player, blue->getPlayer2()) == 1 || red->obl(player, blue->getPlayer1()) == 1) // если в области видимости противник
{
int num = qrand() % 3;
switch(num)
{
case 0:
player->setY(player->getY()+1)
borderOffset(player);
break;
case 1:
player->setY(player->getY()-1)
borderOffset(player);
case 2:
player->setX(player->getX()+1)
}
}
else
runRed(player);
}
else
lineOffset(player);
}
void Game::plBallBlue(Player * player)
{
if(player->getLineTop() == 0 && player->getLineBottom() == 0)
{
// если игрок находится рядом с защитником
if(blue->obl(player, red->getPlayer1()) == 1)
{
int num = qrand() % 4;
switch(num)
{
case 0: player->setY(player->getY()+1)
borderOffset(player);
break;
case 1: player->setY(player->getY()-1)
borderOffset(player);
break;
case 2: pas(blue->getPlayer1(), blue->getPlayer2());
break;
}
}
else
runBlue(player);
ball->coord(player); // перезаписать координаты мяча
if(player->getX() >= blue->getBorder()-5) // если игрок в зоне для удара
{
if (((player->getY() > blue->getBorder()/4+5) && (player->getY() < blue->getBorder()/2))
|| ((player->getY() < blue->getBorder()/4-5) && (player->getY() > 0)))
pas(blue->getPlayer1(), blue->getPlayer2());
else
striceBlue(red->getGoalkeeper(
}
}
else
lineOffset(player);
}
void Game::goolRed () // устанавливает игроков в позицию после забитого мяча
{
ball->setStart(0);
red->whouBall++;
red->getPlayer1()->setX(30);
red->getPlayer1()->setY(12);
red->getPlayer2()->setX(30);
red->getPlayer2()->setY(8);
ball->coord(red->getPlayer1())
blue->getPlayer1()->setX(20);
blue->getPlayer1()->setY(12);
blue->getPlayer2()->setX(20);
blue->getPlayer2()->setY(8);
}
void Game::goolBlue ()
{
ball->setStart(0);
blue->whouBall++;
red->getPlayer1()->setX(20);
red->getPlayer1()->setY(12);
red->getPlayer2()->setX(20);
red->getPlayer2()->setY(8);
blue->getPlayer1()->setX(10);
blue->getPlayer1()->setY(12);
blue->getPlayer2()->setX(10);
blue->getPlayer2()->setY(8);
ball->coord(blue->getPlayer1()
}
void Game::def(Player * plBlue, Player * plRed)
{
if(blue->obl(plBlue, plRed) == 0) // если нет противника в зоне видимости
{
if (plBlue->getX() < plRed->getX())
plBlue->setX(plBlue->getX()+1)
if (plBlue->getY() > plRed->getY())
plBlue->setY(plBlue->getY()-1)
if (plBlue->getX() > plRed->getX())
plBlue->setX(plBlue->getX()-1)
if (plBlue->getY() < plRed->getY())
plBlue->setY(plBlue->getY()+1)
}
else // если противник рядом
{
int num = qrand() % 2; // смещение по у вверх или низ
switch(num)
{
case 0: plBlue->setY(plBlue->getY()+1)
break;
case 1: plBlue->setY(plBlue->getY()-1)
break;
}
num = qrand() % 2;
switch(num)
{
case 0: plBlue->setX(plBlue->getX()+1)
break;
case 1: plBlue->setX(plBlue->getX()-1)
break;
}
}
if (plBlue->getX() == plRed->getX() && // если координаты игрока равны координатам противника то он отбирает мяч
plBlue->getY() == plRed->getY())
{
ball->coord(plBlue);
blue->whouBall++;
}
}
ДП.230105.809.2013.ПЗ |
Лист | |||||
------ | ||||||
Изм |
Лист |
№ докум. |
Подп. |
Дата |
||
| ||||||
КП.2203.897.2000.ПЗ |
Лист | |||||
-------- | ||||||
Изм |
Лист |
№ докум. |
Подп. |
Дата |
Информация о работе Разработка приложения: футбольный симулятор