How do I Cancel a button?

BlitzPlus Forums/BlitzPlus Programming/How do I Cancel a button?

En929(Posted 2011) [#1]
What do I add to my game code if I want to cancel a key? For example, if I'm using key (57) for jumping, how do I make it so that when the character collides with a door, key (57) could no
longer be used for jumping? For reference, I put the simplified game code below and I put notes directly on the section that I need help
with (so it could be easier to find).





Graphics 1640, 1000


Global HENRY

HENRY = LoadAnimImage ("HenryMoveAroundIII.PNG",400,370,0,14)
DOOR = LoadImage ("Door.png")
BACKGROUND = LoadImage ("BLUEFOREST.jpg")
BACKGROUND2 = LoadImage ("DockII.jpg")
PLATFORM = LoadImage ("Platform.png")



Type HENRY
	Field x,y	
	Field frame 
End Type 

Type DOOR
	Field x,y
End Type 

Type PLATFORM
	Field x,y
End Type 

Type BACKGROUND
	Field x,y
	Field image
End Type 

h.HENRY = New HENRY

h\x = 500
h\y = 200
h\frame = 0

p.PLATFORM = New PLATFORM
p\x = -1500 
p\y = 500


d.DOOR = New DOOR
d\x = 500
d\y = 200

b.BACKGROUND = New BACKGROUND
b\x = 150
b\y = 50
b\image = BACKGROUND




While Not KeyDown (1) 

   Cls 


TileImage (b\image,b\x,b\y)



;----------------------------------------------------------------------------------------------------------------------------------------------------------
											;Here is the part I need help with
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------


If KeyHit (57) Then  ;------ I'd like to cancel this when my character collides with the door
 
h\y = h\y - 600 
								
EndIf 



If Not KeyHit (57) Then  ;------I'd like to also cancel this when my character collides with the door
	h\y = h\y + 40
EndIf 



If ImagesCollide (HENRY,h\x,h\y,0,DOOR,d\x,d\y,0) Then ;----- I would like key (57) to be cancelled when this happens
							 ;------ That is, I want to make it so that key (57) can no longer
							 ;-------- be used for jumping after this happens (for now). 						
									
		b\image = BACKGROUND2			
EndIf 




;--------------------------------------------------------------------------------------------------------------------------------------------------------------------
										;Thanks, this section was all I needed help with for now. 
;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------









If KeyDown(205)
      h\x = h\x + 3 
   EndIf 
   

   If KeyDown(203) 
      h\x = h\x - 3 
   EndIf 


 If ImagesCollide (HENRY, h\x, h\y,0,PLATFORM,(b\x + p\x), p\y,0) Then 

		
						h\y = 430				
EndIf 
	  

DrawImage (PLATFORM,p\x,p\y)
DrawImage (DOOR, d\x,d\y)
DrawImage (HENRY,h\x,h\y)

	
	

Flip

Wend 



Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011

Last edited 2011


Yeshu777(Posted 2011) [#2]
Why not just add a flag (set to True or False) when jumping is enabled.


If(h\jump_active = True) Then 

    If KeyHit (57) Then
 
        h\y = h\y - 600 
								
    EndIf 

    If Not KeyHit (57) Then  

        h\y = h\y + 40

    EndIf 

EndIf


If ImagesCollide (HENRY,h\x,h\y,0,DOOR,d\x,d\y,0)

    b\image = BACKGROUND2			

    h\jump_active = False

Else

    h\jump_active = True

EndIf 



Last edited 2011

Last edited 2011


En929(Posted 2011) [#3]
Thanks Yeshu, it worked.


Yeshu777(Posted 2011) [#4]
No Problem.