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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2007, 23:31   #1
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
Стрелка Арканойд

Здраствуйте всем! Я сейчас пишу код для арканоида и столкнулся с некоторыми проблемами(я конечно еще достаточно плохо знаком с Делфи, но по моему это все-таки достаточно сложно)((
Механизм такой:на форме находятся Shape`ы ((т.е. это и мячик, и планка,и блоки) прим: из соображений того, что если я захочу в последствии сделать красивую графику, то PaintBox приведет в тупик) и взаимодействуют между собой. Но в результате того что пиксел неделим обработка отскоков превращается в сущий кашмар(мяч постоянно куда-нить заежает и т.д. )
Если кто-нибудь уже занимался подобным, или-же знает где найти исходник, может поможете решить некоторые проблемы???
к примеру Как можно более подробно описать перемещение мячика и его отскок ( в основном отскок)
не через стандартные Left,Top&Width (т.к. мячик должен характеризоваться не ''квадратом''со сторонами Width и Height, а окружностью) или же Во что объединить блоки(ну там список мало подходит, можно ли созать какой нибудь там динамический массив?) что бы легче было ими управлять?
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 25.02.2007, 09:11   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Сначало надо решить как мячик будет отскакивать от платформы. В играх которые я видел есть 2 способа:
1) Угол падения равен углу отражения ВСЕГДА.
2) Угол отражения не зависит от угла падения, а зависит от места падения на платформе (чем ближе к краю, тем больше угол отражения(горизонтальнее полетит)).

От стенок как правило отскакивает Падение=Отражению.

Как вообще мяч передвигаем?
Просто приращиваем его координаты:
X:=X+kx; Y:=Y+ky;
После столкновения со стеной (допустим правой стеной) будет так:
X:=X-kx; Y:=Y+ky;

Момент столкновения: после каждого перемещения проверяем
If X>200 then kx:=-kx;
X:=X+k;
...

Какие блоки? "Карта" что ли? Можно просто массив задать (обычный)
mas: array [1..15,1..20]of byte;
Т.к. размер карты в арканоидах как правило фиксированный.
Массив можно забивать так:
если 0 - пустая клетка, т.е. свободное пространство
если 1 - обычный блок
если 3 - там бонус какой-то
и т.д.
zetrix вне форума Ответить с цитированием
Старый 25.02.2007, 12:01   #3
Yogurt
Пользователь
 
Аватар для Yogurt
 
Регистрация: 22.01.2007
Сообщений: 25
По умолчанию

Я думаю надо описывать движение мячика прежде всего с математической точки зрения, а потом привязать графическое изображение к математической модели. Таким образом мы, зная скорости мяча (по x и y координатам), положение платформы (или любого другого объекта), можем предсказать все скорости после соударения. Если платформа не будет крутиться, то это всё сведется к простой задаче, которую каждый способен решить.
Yogurt вне форума Ответить с цитированием
Старый 25.02.2007, 16:26   #4
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
Сообщение

Блоками я назвал те самые ''кирпичики'', которые разбивает мячик.
Все формулы типа -- X:=X-kx; Y:=Y+ky -- у меня уже описаны
Мяч отскакивает от платформы под разными углами т.к. так интереснее играть.
Цитата:
Можно просто массив задать (обычный)
mas: array [1..15,1..20]of byte;
Я не понял, сами блоки-то чем будут - Shape`ами что-ли?
И можно по-подробнее про массив??(как Shape` в массив организовать?)
Цитата:
Момент столкновения: после каждого перемещения проверяем If X>200 then kx:=-kx;
У меня также ,только вот если к примеру kx=4, а X=199, то выполниться X:=X+kx, X станет 203, и мяч <<залезет>> за предел формы, и лишь потом отскочит. Хотелось бы это устранить.

ToYogurt ты там в другой теме спрашивал как сделать движение объекта боллее плавным - так вот у меня в цикле While перемещается платформа
за один шаг цикла на 5 пикселей , задана задержка Sleep(8) и в конце изображение объектов на форме обновляется командой Application.ProcesMessages.
Вроде перемещается плавно...

p.s. могу попозже выложить код, только там сейчас черт ногу сломит...
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Арканойд! MAKEDON Общие вопросы Delphi 0 05.01.2008 19:10