Pong


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 3 of 3

Thread: Pong

  1. #1
    Join Date
    Jan 2007
    Posts
    2

    Pong

    Hi, I'm creating a version of Pong in java, but I have a problem. When I hold down the buttons to move the left and right paddles at the same time, only the one that I hit most recently is registered. I was wondering how I could get them to work simultaneously. Thanks for the help.

    Here is my code if it helps:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.applet.AudioClip;
    import java.net.URL;

    public class PongPanel extends JPanel
    {
    private final int WIDTH = 600, HEIGHT = 400;
    private final int DELAY = 20, IMAGE_SIZE = 30;
    private final int MOVE = 5;
    private final int REC_WIDTH = 10, REC_HEIGHT = 50;
    private int LRecX = 10, RRecX = 580;
    private int LRecY = 180, RRecY = 180;
    private Timer timer;
    private ImageIcon image;
    private int scoreL = 0, scoreR = 0;
    private int x, y;
    private double moveX = 3, moveY = 3;

    public PongPanel()
    {
    addKeyListener (new DirectionListener());

    timer = new Timer(DELAY, new ReboundListener());

    image = new ImageIcon ("Smiley.gif");

    x = 50;
    y = 50;

    setPreferredSize (new Dimension(WIDTH, HEIGHT));
    setBackground (Color.black);

    timer.start();

    setFocusable(true);
    }

    public void paintComponent(Graphics page)
    {
    super.paintComponent(page);
    image.paintIcon (this, page, x, y);

    page.setColor (Color.white);
    page.fillRect (LRecX, LRecY, REC_WIDTH, REC_HEIGHT); // paints paddles
    page.fillRect (RRecX, RRecY, REC_WIDTH, REC_HEIGHT);

    page.drawString("" + scoreL, 288, 10);
    page.drawString("" + scoreR, 310, 10);
    }

    private class ReboundListener implements ActionListener
    {
    public void actionPerformed (ActionEvent event)
    {
    x += moveX; // moves ball
    y += moveY;

    Rectangle rectL = new Rectangle(LRecX, LRecY, REC_WIDTH, REC_HEIGHT);
    Rectangle rectR = new Rectangle(RRecX, RRecY, REC_WIDTH, REC_HEIGHT);
    Rectangle imageRect = new Rectangle(x, y, IMAGE_SIZE, IMAGE_SIZE);

    if(rectL.intersects(imageRect)) // reverses direction of ball if it hits left paddle
    {
    if (moveX < 0)
    moveX -= .3;
    else
    moveX += .3;

    if (moveY < 0)
    moveY -= .3;
    else
    moveY += .3;

    moveX = moveX * -1;
    }

    if(rectR.intersects(imageRect)) // reverses direction of ball if it hits right paddle
    {
    if (moveX < 0)
    moveX -= .3;
    else
    moveX += .3;

    if (moveY < 0)
    moveY -= .3;
    else
    moveY += .3;

    moveX = moveX * -1;
    }

    if (y <= 0 || y >= HEIGHT-IMAGE_SIZE) // bounces of top and bottom of screen
    {
    moveY = moveY * -1;
    }

    if (x < 0) // starts over if right scores
    {
    scoreR += 1;

    x = 50;
    y = 50;

    moveX = 4;
    moveY = 4;
    }

    if (x > WIDTH-IMAGE_SIZE) // starts over if left scores
    {
    scoreL += 1;

    x = 50;
    y = 50;

    moveX = 4;
    moveY = 4;
    }

    repaint();
    }
    }

    private class DirectionListener implements KeyListener
    {
    public void keyPressed (KeyEvent event)
    {
    switch (event.getKeyCode()) // moves paddles
    {
    case KeyEvent.VK_UP:
    RRecY -= MOVE; // up and down for right paddle
    break;
    case KeyEvent.VK_DOWN:
    RRecY += MOVE;
    break;
    case KeyEvent.VK_A:
    LRecY -= MOVE; // a and z for left paddle
    break;
    case KeyEvent.VK_Z:
    LRecY += MOVE;
    break;
    }

    repaint();
    }

    public void keyTyped (KeyEvent event) {}
    public void keyReleased (KeyEvent event) {}
    }
    }

  2. #2
    Join Date
    Nov 2006
    Posts
    12
    Make a boolean for the movekeys that is set to true for keyPressed and set to false for keyReleased

  3. #3
    Join Date
    Jan 2007
    Posts
    2
    Thanks for the help! It works great now.

Similar Threads

  1. KeyListener not responding
    By lordanki in forum Java
    Replies: 3
    Last Post: 04-04-2006, 10:13 AM
  2. pong ball movemet?
    By Sportsdude11751 in forum Java
    Replies: 1
    Last Post: 04-17-2005, 04:04 PM
  3. Correct Pong URL
    By David Lambert in forum Web
    Replies: 0
    Last Post: 11-15-2000, 05:07 PM
  4. Correct Pong URL
    By David Lambert in forum Web
    Replies: 0
    Last Post: 11-15-2000, 05:03 PM
  5. Correct Pong URL
    By David Lambert in forum Web
    Replies: 0
    Last Post: 11-15-2000, 05:01 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center