Jump to content
Retro Lord

Pong, ball movement

Recommended Posts

I'm having a bit of trouble with the ball movement in a pong game. I've set the ball movement up like this and it just gets stuck in the wall. There must be a better way?

 rem pushing the button starts the balls movement
 if a=0 && joy0fire then a=1
 rem ball going up and left
 if a=1 then ballx=ballx-1 : bally=bally-1
 rem ball going up and right
 if a=2 then ballx=ballx+1 : bally=bally-1

 rem ball going down and left
 if a=3 then ballx=ballx-1 : bally=bally+1
 rem ball going down and right
 if a=4 then ballx=ballx+1 : bally=bally+1

 if collision(ball,playfield) && a=1 then a=3
 if collision(ball,playfield) && a=2 then a=4
 if collision(ball,playfield) && a=3 then a=4
 if collision(ball,playfield) && a=4 then a=5

Entire code:

 set kernel_options no_blank_lines

 player1x=85
 player1y=80

 player0x=85
 player0y=70

 ballx=85 : bally=30



main

 playfield:
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 X..............................X
 X..............................X
 X..............................X
 X..............................X
 X..............................X
 X..............................X
 X..............................X
 X..............................X
 X..............................X
 X..............................X
end


 player0:
        %11111111
        %00000000
        %00000000
        %00000000
        %00000000
        %00000000
        %00000000
        %00000000
end

 player1:
        %11111111
        %00000000
        %00000000
        %00000000
        %00000000
        %00000000
        %00000000
        %00000000
end


 COLUPF=$0E
 COLUP0=$0E
 COLUP1=$0E
 NUSIZ0=$30
 NUSIZ1=$30

   ballheight = 2 : rem * Ball 4 pixels high.

   CTRLPF = $21 : rem * Ball 4 pixels wide.


 drawscreen

 if a=0 && joy0fire then a=1
 rem ball going up and left
 if a=1 then ballx=ballx-1 : bally=bally-1
 rem ball going up and right
 if a=2 then ballx=ballx+1 : bally=bally-1

 rem ball going down and left
 if a=3 then ballx=ballx-1 : bally=bally+1
 rem ball going down and right
 if a=4 then ballx=ballx+1 : bally=bally+1

 if collision(ball,playfield) && a=1 then a=3
 if collision(ball,playfield) && a=2 then a=4
 if collision(ball,playfield) && a=3 then a=4
 if collision(ball,playfield) && a=4 then a=5




 if joy0left then player0x=player0x-1
 if joy0right then player0x=player0x+1

 if joy1left then player1x=player1x-1
 if joy1right then player1x=player1x+1

 goto main

Share this post


Link to post
Share on other sites

Got it working with the playfield now but it's a bit wonky when it comes to hitting the paddles, any pointers or ideas?

 if a=0 && joy0fire then a=1
 rem ball going up and left
 if a=1 then ballx=ballx-1 : bally=bally-1
 rem ball going up and right
 if a=2 then ballx=ballx+1 : bally=bally-1

 rem ball going down and left
 if a=3 then ballx=ballx-1 : bally=bally+1
 rem ball going down and right
 if a=4 then ballx=ballx+1 : bally=bally+1

 if bally=10 && a=1 then a=3
 if bally=10 && a=2 then a=4

 if ballx<20 && a=3 then a=4
 if ballx<20 && a=1 then a=2

 if ballx>120 && a=2 then a=1
 if ballx>120 && a=4 then a=3

 if collision(ball,player0) && a=3 then a=2
 if collision(ball,player0) && a=4 then a=1

Share this post


Link to post
Share on other sites

Okay! That cleared a lot of things up for me, I got ball movement and hit detection up and running perfectly. But I have yet another question about scoring with 2 players.

 

I want 2 separate scores, one on the left side and one on the right side both starting at 0, and if respective player scores a point their score goes up. The only way I figured out how to do it is with sprite flicker and a counter, but that would take a little to much memory for my taste. Is there a better aproach to this?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...