Was bedeutet das wenn hinter ein Procedure ein .b steht???
Und was kann ich machen um diesen fehler zu lösen???
hier ist der Code:
Code: Alles auswählen
InitSprite()
InitKeyboard()
InitMouse()
UsePNGImageDecoder()
OpenScreen(1024,768,16,"Schooter")
#ScreenW = 1024
#ScreenH = 768
#HeroH = 98
#HeroW = 98
#EnemyH = 32
#EnemyW = 32
Declare KeyboardHandling()
Declare NewEnemyWave()
Declare EnemyDisplay()
Declare EnemyMovement()
Declare ShowExplosion()
Declare LeftMouseClicked()
;Declare PushingEdgeDetection()
LoadSprite(0,"E:\PureBasic\2DShooter\fx\sterne.bmp")
LoadSprite(1,"E:\PureBasic\2DShooter\fx\Hero.png")
LoadSprite(2,"e:\PureBasic\2DShooter\fx\Enemy.png")
LoadSprite(3,"fx\Fire.png")
For idx = 1 To 5
LoadSprite(10+idx,"e:\PureBasic\2DShooter\fx\Explosion"+Str(idx)+".png")
TransparentSpriteColor(10+idx,RGB(0,67,171))
Next
For idx = 0 To 2
TransparentSpriteColor(idx,RGB(0,67,171))
Next
Structure Hero
X.l
Y.l
EndStructure
Global Fighter.Hero
Structure Enemy
X.l
Y.l
EndStructure
Global Gegner.Enemy
Global NewList Feinde.Enemy()
Structure Explosion
X.l
Y.l
State.l
EndStructure
Global NewList Explode.Explosion()
Structure Geschoss
X.l
Y.l
EndStructure
Global NewList Geschosse.Geschoss()
Fighter\X = #ScreenW/2-(#HeroW/2)
Fighter\Y = #ScreenH-#HeroH
Repeat
ExamineKeyboard()
ExamineMouse()
;ClearScreen(0,0,0)
DisplaySprite(0,0,0)
DisplayTransparentSprite(1,Fighter\X,Fighter\Y)
EnemyDisplay()
ShowExplosion()
FlipBuffers()
KeyboardHandling()
NewEnemyWave()
EnemyMovement()
LeftMouseClicked()
;PushingEdgeDetection()
Until KeyboardPushed(1)
Procedure KeyboardHandling()
If KeyboardPushed(#PB_Key_Right)
If Fighter\X<#ScreenW-#HeroW
Fighter\X+2
EndIf
ElseIf KeyboardPushed(#PB_Key_Left)
If Fighter\X>0
Fighter\X-2
EndIf
ElseIf KeyboardPushed(#PB_Key_Up)
If Fighter\Y<(#ScreenH+#HeroH)
Fighter\Y-2
EndIf
ElseIf KeyboardPushed(#PB_Key_Down)
If Fighter\Y>(0+#HeroH)
Fighter\Y+2
EndIf
EndIf
EndProcedure
Procedure NewEnemyWave()
enemycounter.l
enemycounter = Random(8)
If CountList(Feinde()) = 0
For idx = 1 To enemycounter
AddElement(Feinde())
Next
ForEach Feinde()
Feinde()\X = Random(1024)
Feinde()\y = Random(200)
Next
EndIf
EndProcedure
Procedure EnemyDisplay()
ForEach Feinde()
DisplayTransparentSprite(2,Feinde()\X,Feinde()\Y)
Next
EndProcedure
Procedure EnemyMovement()
ForEach Feinde()
Feinde()\y = Feinde()\Y+1.1
If Feinde()\Y>=#ScreenH
Feinde()\Y = 0
Feinde()\X = Random(#ScreenW)
EndIf
If SpriteCollision(1,Fighter\X,Fighter\Y,2,Feinde()\X,Feinde()\Y)
AddElement(Explode())
Explode()\X = Feinde()\X
Explode()\Y = Feinde()\Y
Explode()\State = 1
DeleteElement(Feinde())
EndIf
Next
EndProcedure
Procedure ShowExplosion()
ForEach Explode()
If Explode()\State <= 5
DisplayTransparentSprite(10+Explode()\State,Explode()\X,Explode()\Y)
Explode()\State = Explode()\State + 1
Else
DeleteElement(Explode())
EndIf
Next
EndProcedure
Procedure LeftMouseClicked()
If ExamineMouse()<>0
If PushingEdgeDetection() = 1
AddElement(Geschosse())
Geschosse()\X = Fighter\X+(#HeroW/2)-18
Geschosse()\Y = Fighter\Y
EndIf
EndIf
EndProcedure
Procedure.b PushingEdgeDetection()
Static pka.b
ExamineMouse()
If MouseButton(1)
If pka.b= 0:pka.b=1:ProcedureReturn 1:EndIf
ElseIf pka.b
pka.b=0
EndIf
ProcedureReturn 0
EndProcedure
Code-Tags wurden hinzugefügt
(RSBasic)