|
2D-программирование Вопросы, касающиеся двумерного программирования |
14.11.2007, 02:26
|
#1
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Проблема с коллизиями стандартных images
Привет всем!
Решил парабатить мир арканоидом :D
Споткнулся на неприятности:
Когда мячик летит в правый нижний угол, то он не ударяется об рокетку, а пролетает сквозь неё.
Может кто заметит ошибку (я так лично весь код прошерстил ни один раз)
Заранее спасибо.
Исходник шедевра брать ацуда: www.mirage-lab.com/help.rar
(23КБ)
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
15.11.2007, 01:57
|
#2
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Re: Проблема с коллизиями стандартных images
Ребят, помогите начинающему прогеру) плиииз
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
15.11.2007, 02:08
|
#3
|
Нуждающийся
Регистрация: 25.02.2007
Сообщений: 58
Написано 3 полезных сообщений (для 6 пользователей)
|
Re: Проблема с коллизиями стандартных images
Я в многих ping-pong'ах такую траблу видел
Мож это поможет ? см. аттач.
|
(Offline)
|
|
15.11.2007, 14:19
|
#4
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Re: Проблема с коллизиями стандартных images
Спасибо конечно, но охото узнать в чём проблема в 2d.
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
15.11.2007, 22:34
|
#5
|
|
Re: Проблема с коллизиями стандартных images
|
|
|
16.11.2007, 00:42
|
#6
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Re: Проблема с коллизиями стандартных images
Ай спасибо тебе!
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
05.08.2008, 17:33
|
#7
|
Знающий
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
|
Ответ: Проблема с коллизиями стандартных images
Люди, помогите с коллизиями изображений!
Создаю шпилу в двухмерке, использую сразу несколько вариантов коллизий картинок т.е. ImagesOverlap, ImagesOverlap но столкнулся с ацкой проблемой и не хочу перелапачивать сотни строк кода. Может как-то по-простому решается.
Мне надо сделать, чтобы часть картинок на экране не отображалась (оформлено типом images) [я по умному нужной части изображений просто не делаю DrawImage] вот только ацкие коллизии срабатывают... потому что картинка то остается и ее координаты тоже.
Как избавится от ацкой коллизии?
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
|
(Offline)
|
|
05.08.2008, 17:48
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Проблема с коллизиями стандартных images
if ImagesOverlap(блаблабла)
замени на
if ImagesOverlap(блаблабла) and УСЛОВИЕ_ОТОБРАЖЕНИЯ_МЯЧА
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.08.2008, 18:58
|
#9
|
Знающий
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
|
Ответ: Проблема с коллизиями стандартных images
ага что-то вроде конструкции
только все равно много всего изменять (много коллизий как назло в моей аркаде)
if ImagesOverlap(блаблабла) and image\visible=true
спс.
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
|
(Offline)
|
|
06.08.2008, 14:00
|
#10
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Проблема с коллизиями стандартных images
все таки лучше написать так:
if image\visible=true and ImagesOverlap(блаблабла)
сначало проверится первое условие, и если оно истинно то проверится второе. Так можно съэоконить время на проверки
|
(Offline)
|
|
06.08.2008, 14:39
|
#11
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Проблема с коллизиями стандартных images
Const n=1000
For i=1 To 10000
MegaFunc()
Next
gh=MilliSecs()
SeedRnd gh
a=MilliSecs()
h=0
For i=1 To n
If (i Mod 3 = 2 ) And MegaFunc()=1 Then h=h+1
Next
Print "h="+Str(h)+"1:"+Str(MilliSecs()-a)
SeedRnd gh
a=MilliSecs()
h=0
For i=1 To n
If MegaFunc()=1 And (i Mod 3 = 2 ) Then h=h+1
Next
Print "h="+Str(h)+"2:"+Str(MilliSecs()-a)
SeedRnd gh
a=MilliSecs()
h=0
For i=1 To n
If (i Mod 3 = 2 )
If MegaFunc()=1 Then h=h+1
EndIf
Next
Print "h="+Str(h)+"3:"+Str(MilliSecs()-a)
SeedRnd gh
a=MilliSecs()
h=0
For i=1 To n
If (MegaFunc()=1)
If i Mod 3 = 2 Then h=h+1
EndIf
Next
Print "h="+Str(h)+"4:"+Str(MilliSecs()-a)
Function MegaFunc()
s#=2
For i=1 To 100
s#=s+s^s*Sin(s)-(Sqr(Cos(s)+Tan(s))-1.618)^2
Next
Return Rand(0,1)
End Function
WaitKey
|
(Offline)
|
|
06.08.2008, 16:20
|
#12
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Проблема с коллизиями стандартных images
h=163 1:1360
h=163 2:1380
h=175 3:450
h=163 4:1362
что это?
Edit:
аа, спасибо, понял . Очевидно что 3-й вариант проверки лучший.
|
(Offline)
|
|
06.08.2008, 16:38
|
#13
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Проблема с коллизиями стандартных images
Да, это я собственно к тому - что блиц не C++, и он обрабатывает ВСЕ операнды в условии, и только потом выдает результат.
т.е. в блице:
мегафунк вызовится
в С++
мегафунк не вызовится
важно понимать что сначала нужно проверять на самые быстрые условия и самые редко случающиееся.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:42.
|