I'm trying to make a pong game from scratch, to get used to the blitz language. However, I'm stuck at the moment, because my bat would get stuck when it reaches the edge of the screen (I'm stopping the bat from going off-screen). Please help. Here's my full code:
Global screenx = 640 Global screeny = 480 Global upkey = 200 Global leftkey = 203 Global rightkey = 205 Global downkey = 208 Graphics screenx,screeny,16,2 ;Set type for bat info Type entityinfo Field x Field y Field width Field height Field xspeed# Field yspeed# End Type ;Create Mybat instance Mybat.entityinfo = New entityinfo Mybat\x = 320 Mybat\y = 240 Mybat\width = 100 Mybat\height = 25 ;Create Ball instance Ball.entityinfo = New entityinfo Ball\x = 320 Ball\y = 240 Ball\width = 25 Ball\height = 25 ;Create bat and ball image gfxBat = CreateImage(Mybat\width,Mybat\height) gfxBall = CreateImage(25,25) ;Draw bat and ball image SetBuffer ImageBuffer(gfxBat) Color 114,108,219 Rect 0,0,100,25,1 SetBuffer ImageBuffer(gfxBall) Color 114,108,219 Oval 0,0,25,25,1 ;Center the images MidHandle gfxBat MidHandle gfxBall ;Switch back to back buffer SetBuffer BackBuffer() ;Game loops starts here ;================================ While Not KeyHit(1) ;================================ ;Clear screen Cls ;Just to know x,y values of my bat Text 0,0,mybat\x Text 0,10,mybat\y ;Draw my bat onto screen DrawImage gfxbat,mybat\x,mybat\y ;Make sure bat is on screen If (Mybat\x > (Mybat\width)/2) And (Mybat\x < screenx-((Mybat\width)/2)) Then If leftkey()=1 Then Mybat\x = Mybat\x - 2 EndIf If rightkey()=1 Then Mybat\x = Mybat\x + 2 EndIf EndIf Flip Wend ;Just some functions Function LeftKey() If KeyDown(leftkey) = 1 Then Return 1 Else Return 0 EndIf End Function Function RightKey() If KeyDown(rightkey) = 1 Then Return 1 Else Return 0 EndIf End Function Function UpKey() If KeyDown(upkey) = 1 Then Return 1 Else Return 0 EndIf End Function Function DownKey() If KeyDown(Downkey) = 1 Then Return 1 Else Return 0 EndIf End Function