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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2011, 01:12   #1
cliv
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 13
По умолчанию сталкивающиеся шарики (арканоид)

стабильно повторяющееся задание студентам и старшим школьникам - изготовить что то типа арканоида с разными вариациями.
в этом варианте реализовано столкновение, добавление, удаление, и слежение за шариками
пользуйтесь на здоровье
Вложения
Тип файла: rar arkan.rar (183.6 Кб, 48 просмотров)
cliv вне форума Ответить с цитированием
Старый 30.06.2011, 08:48   #2
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Немного странное поведение шарика: при одном ударе ускоряется, при следующем замедляется, потом снова ускоряется и так по кругу.
неверное столкновение с доской: при ударе о доску шарик соприкасается не с верхней, а с нижней гранью доски.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 30.06.2011, 09:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу. а у меня два шарика в "клинч" вошли. Один стоял на месте, а второй около него вверх-вниз (примерно на полтора-два диаметра шара) прыгал... продолжалось бесконечно, до тех пор, пока я третьим не разбил это "сладкую парочку"...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.06.2011, 12:24   #4
cliv
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 13
По умолчанию

характерные ошибки copy/paste программирования. Для точного соприкосновения с доской замените строку
Код:
if Y > Form1.ClientHeight-Size-Form1.Shape1.Height
на строку
Код:
if Y > Form1.Shape1.Top-Size
cliv вне форума Ответить с цитированием
Старый 30.06.2011, 13:17   #5
cliv
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 13
По умолчанию

если есть необходимость при ударе объекта об "ракетку" увеличивать скорость против текущей добавьте еще одну переменную например Vn и замените строку Vy:= -RandomRange(1,20) на конструкцию типа
Код:
Vn:= -Vy;
      Repeat
        Vy:= - RandomRange(1,20);
        Until (Vy < Vn)or(Vy= -19);
cliv вне форума Ответить с цитированием
Старый 30.06.2011, 13:31   #6
cliv
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 13
По умолчанию

во избежания "клинча" замените простое инвертирование скорости
Код:
Vx:= - Vx;
Vy:= - Vy;
на более сложные рандомизирование конструкции, хотя с клинчем по моему интереснее
cliv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Летающие шарики (Delphi) Alena_44 Помощь студентам 27 08.05.2011 09:02
Шарики движутся рывками wint1000 Фриланс 28 30.11.2010 17:02
Шарики движутся рывками wint1000 Общие вопросы Delphi 9 28.11.2010 22:21
Шарики sk1p Общие вопросы C/C++ 1 06.04.2010 01:11