Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 16:56   #1
jocry
Пользователь
 
Аватар для jocry
 
Регистрация: 05.10.2008
Сообщений: 49
По умолчанию Игра «Аквариум»

Здравствуйте, есть задания:
Экран представляет собой аквариум, заполненный водой. В аквариуме живут карпы. Каждый карп умеет перемещаться внутри аквариума, разворачиваться возле стенок аквариума, и сканировать пространство перед собой в некотором секторе. Карпов в аквариуме много, и они плавают стаями. Также в аквариуме живет щука. Она движется быстрее любого карпа, но хуже видит (меньше радиус сканирования). Увидев карпа, щука начинает преследование, настигнув – съедает. Съеденный карп удаляется из аквариума (а его объект уничтожается). Карпы, увидев щуку, начинают движение в противоположную сторону (убегают). Программа завершает работу, когда щука съест последнего карпа.

Подсказки по выполнению:
Аквариум – это класс-контейнер; содержит в себе клас «рыба», к которому относятся и карп и щука. Чтобы создать стаю, карпов можно объединить в связный список. При съедании карпа, его объект уничтожается и удаляется из списка.
Описать движение рыб можно просто: движется по прямой, потом по случайному событию меняет направление движения в случайную сторону.
Для организации процесса «сканирования» пространства, можно координаты всех рыб хранить в отдельном массиве и брать информацию о местоположении оттуда. Если положение какого-нибудь карпа находится в радиусе зрения щуки, она начинает преследование – вместо движения по прямой начинает движение кратчайшим путем к текущему положению карпа.


Подскажите с чего начать, как заставить карпов двигаться стаями?
jocry вне форума Ответить с цитированием
Старый 17.04.2011, 17:59   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Как вариант: создать классы рыба, стая, аквариум. От рыбы отнаследоваться карпом и щукой. Стая может представлять из себя список рыб(карпов), а также дополнительные данные о стае (например, взвешенный центр стаи). Рыбы в стае будут двигаться относительно него, менять направление все вместе, а не по одиночке. Вот и все, собственно. Остальное уже детали, на решение которых у вас руки развязаны.
mMAg вне форума Ответить с цитированием
Старый 17.04.2011, 18:30   #3
jocry
Пользователь
 
Аватар для jocry
 
Регистрация: 05.10.2008
Сообщений: 49
По умолчанию

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

Код:
  fx,fy:integer;

 if (Button1.Left > Form1.Width-Button1.Width) then  fx:=-5*Random(5);
 if (Button1.Left < 0) then  fx:=5*Random(5);
 if (Button1.top > Form1.Height-Button1.Height*2) then  fy:=-5*Random(5);
 if (Button1.top < 0) then  fy:=5*Random(5);
 Button1.Left:=Button1.Left+fx;
 Button1.top:=Button1.top+fy;
jocry вне форума Ответить с цитированием
Старый 17.04.2011, 19:12   #4
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Вопрос не по существу. я из приведенного кода вижу лишь изменение fx и fy, и какое-то их влияние на некий Button1. Не вижу ни малейшего намека на скорость и направление движения рыбы.
mMAg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра Кристинка89 C++ Builder 2 17.03.2011 01:39
Игра на С++ Willer Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 14.06.2010 20:04
Игра Shyt Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 09.04.2010 16:48
Игра DimR Фриланс 5 19.11.2009 19:12