Im confused

Blitz3D Forums/Blitz3D Beginners Area/Im confused

Shuffles(Posted 2009) [#1]
PROBLEM SOLVED

Okay, I'm trying to create a program where I fire with an image and I hit another image and then make it disappear.
Tell me how to shoot something then when they make contact make the image DISAPPEAR. PROBLEM SOLVED
----------------------------------------------------------------------


GIB3D(Posted 2009) [#2]
FreeImage retard


Guy Fawkes(Posted 2009) [#3]
HA!

im sorry. but that was funny...
no offense or anything :P

~DS~


Kryzon(Posted 2009) [#4]
Freeimage retard

hahahaHAHAHAHAHA that totally sounded ambiguous


Guy Fawkes(Posted 2009) [#5]
XD


Shuffles(Posted 2009) [#6]
lol im serious can anyone help me? I dont understand...


rolow(Posted 2009) [#7]
First, you missed a couple of parameters for the ImageCollide() function, specifically the Frame number. Set it to 0 if only using an image without frames.

ImageRectCollide (image,x,y,frame,rect x,rect y,rect width,rect height)

How about trying:

If ImagesCollide(bullet,b\x,b\y,0,retard,r\x,r\y,0) Then Delete retard


Shuffles(Posted 2009) [#8]
it says cannot delete non-newtype.


GIB3D(Posted 2009) [#9]
Um... you can't delete images.. you can only free them...
If ImagesCollide(bullet,b\x,b\y,0,retard,r\x,r\y,0) Then FreeImage retard 


Did you even try?


Gabriel(Posted 2009) [#10]
A number of people think you're trying to delete the image, but I don't think you are. I think you're wanting to delete the type instance, but the type instance is called r, so it should be delete r instead of delete retard. retard is just the name of the type, it does not point to an object in particular.

Incidentally, it would be less confusing - for you and us - if you changed the variable you use to load the image into. Having a type called retard and an image called retard is asking for confusion. I think Blitz3D won't care and will not confuse them, but it will make your life easier. Then we'd know for sure which you were trying to do.


Shuffles(Posted 2009) [#11]
i put freeimage and it nows says that the image doesn't exist! I'm still stuck.


Matty(Posted 2009) [#12]
I haven't changed your code just placed some comments at some points indicating what some of the problems are..and there are a few.

;CONFUSED AKA THE PROGRAM WON'T WORK
ret = LoadImage("retard.jpg")
colin = LoadImage ("colin.jpg")
ResizeImage (colin,100,100)
bullet = LoadImage("bullet.bmp")
AutoMidHandle True
SeedRnd MilliSecs()


x= 0
y = 0

Type bullet
Field x
Field y
End Type 

Type retard
Field x
Field y
End Type


SetBuffer BackBuffer()

Repeat 

Cls ; clearing the screen at the begining of each loop
;drawling colin
DrawImage colin,x,y


;moving colin
If KeyDown(203) Then x = x - 5
If KeyDown(205) Then x = x + 5
If KeyDown(200) Then y = y - 5
If KeyDown(208) Then y = y + 5


If KeyHit(57) Then
b.bullet = New bullet
b\x = x - 200
b\y = y - 130
EndIf

For b.bullet = Each bullet
b\y = b\y - 5
DrawImage bullet,b\x,b\y
If b\y < -100 Then Delete b
Next
; ret stuff etc........
If x = x Then r.retard = New retard	; <<<< - X will always equal X - This is going to create a new 'retard' object each frame - totally unnecessary

r\x = 130
r\y = 0


DrawImage ret,r\x,r\y

If ImagesCollide(bullet,b\x,b\y,0,ret,r\x,r\y,0) Then FreeImage ret  ;This should be in your bullet for..next loop as b/x and b/y will be undefined at this point
								     ;also if you free the image then you won't be able to draw it again.



Flip

Until KeyDown(1) 




Kryzon(Posted 2009) [#13]
Theres this little line here also:
If x = x Then r.retard = New retard

That will always be true, thus you are constantly creating more instances of the Retard type.

I seriously suggest that you re-write everything.
It works like a charm sometimes when you do it for the second time.

EDIT: I posted the same time as Matty...not a chance.


Shuffles(Posted 2009) [#14]
Now just tell me how when I hit the image with the bullet that the "retard" disappears. I fixed the other stuff I think. :)
Thank you so much so far.


Matty(Posted 2009) [#15]
Had a bit of free time, though this is not from in front of a machine that has blitz installed but try this:

;CONFUSED AKA THE PROGRAM WON'T WORK

Graphics 800,600,0,2 ;you really should specify the graphics mode first.

ret = LoadImage("retard.jpg")
colin = LoadImage ("colin.jpg")
ResizeImage (colin,100,100)
bullet = LoadImage("bullet.bmp")
AutoMidHandle True
SeedRnd MilliSecs()


x= 0
y = 0

Type bullet
Field x
Field y
End Type 

Type retard
Field x
Field y
End Type


SetBuffer BackBuffer()

Repeat 

Cls ; clearing the screen at the beginning of each loop
;drawling colin
DrawImage colin,x,y


;moving colin
If KeyDown(203) Then x = x - 5
If KeyDown(205) Then x = x + 5
If KeyDown(200) Then y = y - 5
If KeyDown(208) Then y = y + 5


If KeyHit(57) Then
b.bullet = New bullet
b\x = x - 200
b\y = y - 130
EndIf

;i put this in for a bit of fun...
if (millisecs()>time) then
	time=millisecs()+Rand(500,2000)
	r.retard=new retard
	r\x = rand(0,graphicswidth())
	r\y = rand(0,graphicsheight()/2)
endif 


For b.bullet = Each bullet
b\y = b\y - 5
DrawImage bullet,b\x,b\y
For r.retard = each retard
	If ImagesCollide(bullet,b\x,b\y,0,ret,r\x,r\y,0) then 
		delete r
	endif 
next
If b\y < -100 Then Delete b
Next

For r.retard = each retard
	drawimage ret,r\x,r\y 
next





vwait
Flip false

Until KeyDown(1) 





Shuffles(Posted 2009) [#16]
Matty thank you very much problem solved!( I liked the extra stuff too :p )
Thanks also to everyone else who posted! I'm a noob lol.


Kryzon(Posted 2009) [#17]
Depends, if you don't study Matty's version then you are really a noob :D


GIB3D(Posted 2009) [#18]
"FreeImage retard"
Heh.. wasn't calling you a retard btw.


Warner(Posted 2009) [#19]
Hehe :) classic..