|  | 分類:[Java]
 
 こんにちは、学校の課題なんですがよろしくお願いします。
 
 下記のプログラムを
 パドルをキーボードだけでなく、マウスでも操作できるように改良しなさい。
 スコアを表示する(1階跳ね返したら1点増える)
 今は白で統一されている壁、ボール、パドルの色をそれぞれ変える
 3回ミスしたらゲームオーバーと表示させる
 というように改良したいのですが、どうもうまくいきません
 回答よろしくおねがいします
 
 
 import javax.swing.JFrame;
 import javax.swing.JPanel;
 import javax.swing.Timer;
 import java.awt.Container;
 import java.awt.Graphics;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.KeyListener;
 import java.awt.BorderLayout;
 import java.awt.Color;
 
 class myPanel extends JPanel implements ActionListener, KeyListener {
 int x = 30, y = 20;
 int dx = 1, dy = 1, d = 30;
 int padY = 55;
 int pd = 0;
 Timer pTimer;
 final int width, hight;
 
 public myPanel(int w, int h) {
 width = w;
 hight = h;
 setBackground(Color.black);
 pTimer = new Timer(100, this);
 addKeyListener(this);
 }
 
 public void start() {
 pTimer.start();
 }
 
 @Override
 public void paintComponent(Graphics g) {
 super.paintComponent(g);
 g.setColor(Color.white);
 g.fillRect(30, 0, width, 5);
 g.fillRect(width-5, 0, 5, hight);
 g.fillRect(30, hight-5, width, 5);
 
 g.fillOval(x , y , 10, 10);
 
 g.fillRect(20, padY, 8, 30);
 }
 
 @Override
 public void actionPerformed(ActionEvent e) {
 padY += pd;
 if (padY < 0) {
 padY = 0;
 } else if (padY > hight - 30) {
 padY = hight - 30;
 }
 
 x += 10 * dx;
 y += 5 * dy;
 
 // 壁の当たり判定
 if (x > width - 15) {
 dx *= -1;
 x = width - 15;
 }
 if (y < 5) {
 dy *= -1;
 y = 5;
 } else if  (y > hight - 15) {
 dy *= -1;
 y = hight - 15;
 }
 
 // パドルの当たり判定
 if (x < 30) {
 if ((y >= padY) && (y <= padY+30)) {
 dx *= -1;
 x = 30;
 }
 }
 repaint();
 }
 
 @Override
 public void keyPressed(KeyEvent e) {
 switch (e.getKeyCode()) {
 case KeyEvent.VK_UP:
 pd = -10;
 break;
 case KeyEvent.VK_DOWN:
 pd = 10;
 break;
 }
 }
 
 @Override
 public void keyReleased(KeyEvent e) {
 switch (e.getKeyCode()) {
 case KeyEvent.VK_UP:
 case KeyEvent.VK_DOWN:
 pd = 0;
 }
 }
 
 @Override
 public void keyTyped(KeyEvent e) { }
 
 @Override
 public boolean isFocusable() {
 return true;
 }
 }
 
 class TinyPong extends JFrame {
 public static void main(String[] args) {
 JFrame f = new JFrame();
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.setLayout(new BorderLayout());
 f.setSize(300, 200);
 f.setTitle("Tiny Pong");
 f.setResizable(false);
 Container contentPane = f.getContentPane();
 myPanel p = new myPanel(300, 150);
 
 contentPane.add(p, "Center");
 p.start();
 
 f.setVisible(true);
 }
 }
 
 |