1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
   | /*
 * GameDemo.java
 */
 
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 
public class GameDemo extends JFrame {
 
    private GameDemo.GamePanel gamePanel;
 
    public GameDemo() {
        super("Arrows=red, Q,D,Z,S=black");
        setSize(400, 300);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gamePanel = new GamePanel();
        add(gamePanel);
        new Thread(gamePanel).start();
    }
 
    public static void main(final String[] args) {
        new GameDemo().setVisible(true);
    }
 
    class GamePanel extends JPanel implements KeyListener, Runnable {
 
        private int x1,  y1,  x2,  y2 = 100;
        private boolean right1,  left1,  up1,  down1,  right2,  left2,  up2,  down2;
        private int speed1 = 5,  speed2 = 2;
 
        public GamePanel() {
            addKeyListener(this);
            setFocusable(true);
            requestFocusInWindow();
        }
 
        public void keyTyped(final KeyEvent e) {
        }
 
        public void keyPressed(final KeyEvent e) {
            setKey(e, true);
        }
 
        public void keyReleased(final KeyEvent e) {
            setKey(e, false);
        }
 
        private void setKey(final KeyEvent e, final boolean b) {
            if (e.getKeyCode() == KeyEvent.VK_Q) {
                left1 = b;
            }
            if (e.getKeyCode() == KeyEvent.VK_D) {
                right1 = b;
            }
            if (e.getKeyCode() == KeyEvent.VK_Z) {
                up1 = b;
            }
            if (e.getKeyCode() == KeyEvent.VK_S) {
                down1 = b;
            }
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                left2 = b;
            }
            if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                right2 = b;
            }
            if (e.getKeyCode() == KeyEvent.VK_UP) {
                up2 = b;
            }
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                down2 = b;
            }
 
        }
 
        public void run() {
            while (true) {
                if (left1) {
                    x1 -= speed1;
                }
                if (right1) {
                    x1 += speed1;
                }
                if (up1) {
                    y1 -= speed1;
                }
                if (down1) {
                    y1 += speed1;
                }
                if (left2) {
                    x2 -= speed2;
                }
                if (right2) {
                    x2 += speed2;
                }
                if (up2) {
                    y2 -= speed2;
                }
                if (down2) {
                    y2 += speed2;
                }
                repaint();
 
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
 
        @Override
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            g.fillOval(x1, y1, 10, 10);
            g.setColor(Color.RED);
            g.fillOval(x2, y2, 10, 10);
        }
    }
} |