forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Проблема с коллизиями стандартных images (http://forum.boolean.name/showthread.php?t=5021)

ARA 14.11.2007 02:26

Проблема с коллизиями стандартных images
 
Привет всем!
Решил парабатить мир арканоидом :D
Споткнулся на неприятности:
Когда мячик летит в правый нижний угол, то он не ударяется об рокетку, а пролетает сквозь неё.
Может кто заметит ошибку (я так лично весь код прошерстил ни один раз)
Заранее спасибо.
Исходник шедевра брать ацуда: www.mirage-lab.com/help.rar
(23КБ)

ARA 15.11.2007 01:57

Re: Проблема с коллизиями стандартных images
 
Ребят, помогите начинающему прогеру) плиииз

Pixel 15.11.2007 02:08

Re: Проблема с коллизиями стандартных images
 
Вложений: 2
Я в многих ping-pong'ах такую траблу видел ;)
Мож это поможет ? см. аттач.

ARA 15.11.2007 14:19

Re: Проблема с коллизиями стандартных images
 
Спасибо конечно, но охото узнать в чём проблема в 2d.

jimon 15.11.2007 22:34

Re: Проблема с коллизиями стандартных images
 
Цитата:

ballposy>player\posX
имхо в етом проблемма

ARA 16.11.2007 00:42

Re: Проблема с коллизиями стандартных images
 
Ай спасибо тебе!

Spiderman 05.08.2008 17:33

Ответ: Проблема с коллизиями стандартных images
 
Люди, помогите с коллизиями изображений!

Создаю шпилу в двухмерке, использую сразу несколько вариантов коллизий картинок т.е. ImagesOverlap, ImagesOverlap но столкнулся с ацкой проблемой и не хочу перелапачивать сотни строк кода. Может как-то по-простому решается.

Мне надо сделать, чтобы часть картинок на экране не отображалась (оформлено типом images) [я по умному нужной части изображений просто не делаю DrawImage] вот только ацкие коллизии срабатывают... потому что картинка то остается и ее координаты тоже.

Как избавится от ацкой коллизии?

HolyDel 05.08.2008 17:48

Ответ: Проблема с коллизиями стандартных images
 
if ImagesOverlap(блаблабла)

замени на

if ImagesOverlap(блаблабла) and УСЛОВИЕ_ОТОБРАЖЕНИЯ_МЯЧА

Spiderman 05.08.2008 18:58

Ответ: Проблема с коллизиями стандартных images
 
ага что-то вроде конструкции
только все равно много всего изменять (много коллизий как назло в моей аркаде)

if ImagesOverlap(блаблабла) and image\visible=true

спс.

H@NON 06.08.2008 14:00

Ответ: Проблема с коллизиями стандартных images
 
все таки лучше написать так:
if image\visible=true and ImagesOverlap(блаблабла)
сначало проверится первое условие, и если оно истинно то проверится второе. Так можно съэоконить время на проверки :)

HolyDel 06.08.2008 14:39

Ответ: Проблема с коллизиями стандартных 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


H@NON 06.08.2008 16:20

Ответ: Проблема с коллизиями стандартных images
 
h=163 1:1360
h=163 2:1380
h=175 3:450
h=163 4:1362

что это?
Edit:
аа, спасибо, понял :). Очевидно что 3-й вариант проверки лучший.

HolyDel 06.08.2008 16:38

Ответ: Проблема с коллизиями стандартных images
 
Да, это я собственно к тому - что блиц не C++, и он обрабатывает ВСЕ операнды в условии, и только потом выдает результат.
т.е. в блице:
Код:

if false and MegaFunc()
мегафунк вызовится
в С++
Код:

if(0 && MegaFunc())
мегафунк не вызовится

важно понимать что сначала нужно проверять на самые быстрые условия и самые редко случающиееся.


Часовой пояс GMT +4, время: 18:54.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot