Delay Fix

Blitz3D Forums/Blitz3D Beginners Area/Delay Fix

HuNTeD(Posted 2004) [#1]
Can anyone tell me how to make this NOT delay when trying to use it?

--------------------------------

Graphics 800,600,0,2

SetBuffer BackBuffer()

Type rocket
Field x,y,angle,iangle,speed,turnrate
End Type

Dim rocketimage(500)

TFormFilter 1

Global rocketpic = LoadImage("rocket.bmp")
For a = 0 To 360
rr = CopyImage(rocketpic)
RotateImage(rr,a)
rocketimage(a) = rr
MidHandle rocketimage(a)
Next


While Not KeyDown(1)
Cls
If MouseDown (1)

r.rocket = New rocket

r\x = Rand(1,800)
r\y = Rand(1,600)
r\angle = 0
r\speed = Rand (1,10)
r\turnrate = Rand (1,10)

End If



For h.rocket = Each rocket


h\iangle = ATan2((MouseY()-h\y),((MouseX()-h\x)))

xmov# = Cos(h\angle) * h\speed
ymov# = Sin(h\angle) * h\speed

h\x = h\x + xmov#
h\y = h\y + ymov#


realangle_current = h\angle
realangle_intend = h\iangle

If h\angle < 1
realangle_current = 180+(180 - Abs(h\angle))
End If
If h\iangle < 1
realangle_intend = 180+(180 - Abs(h\iangle))
EndIf



If realangle_intend > realangle_current And h\iangle > 0 Then h\angle = h\angle + h\turnrate
If realangle_intend > realangle_current And h\iangle < 1 Then h\angle = h\angle + h\turnrate
If realangle_intend < realangle_current And h\iangle > 0 Then h\angle = h\angle - h\turnrate
If realangle_intend < realangle_current And h\iangle < 1 Then h\angle = h\angle - h\turnrate

If realangle_current> 360 Then realangle_current = 1
If realangle_current< 1 Then realangle_current = 360


DrawImage rocketimage(realangle_current),h\x,h\y


Next



Flip


Wend


Rob Farley(Posted 2004) [#2]
A couple of things:

"Can anyone tell me how to make this NOT delay when trying to use it?"
Make what delay when you use what?

Also take a look at the codebox tags.


HuNTeD(Posted 2004) [#3]
when you use that scrip, images go at the mouse. But when you load it up there is about a 10 second delay before you can click your mouse to make the images show up.


Ross C(Posted 2004) [#4]
The delay would come from using RotateImage. It's pretty slow. So, you can't do much about that i'm afraid :o)


TomToad(Posted 2004) [#5]
You can maybe rotate the images in a paint program beforehand, then index them with either loading each image in an array or use the frame parameter.


HuNTeD(Posted 2004) [#6]
ok then, ill just have to take the rotate image out then cuz i need that speed.


wizzlefish(Posted 2004) [#7]
create a couple of images, each one with the same picture rotated at a different angle.


Ross C(Posted 2004) [#8]
I don't really see how the speed really makes a difference to the game...unless it's taking a really long time to load :o) But saying that, if you make your image rotated in paint, give them sequencial file names, like:

image1.bmp
image2.bmp
image3.bmp
image4.bmp
image5.bmp
...
etc etc

then, in blitz, you can use a loop to load them in :o)

Dim rocketimage(7)
For loop = 1 To 7
    rocketimage(loop) = LoadImage("image"+loop+".bmp")
Next


Hope that helps somewhat :o)


HuNTeD(Posted 2004) [#9]
already fixed, i found out i dont need the rotateimage, works alot better without it. thanks.