つぎのようなプログラムを書きます。
マウスのボタンがどのピースの位置で押されたか判定し、 そのピースの位置を四角く塗りつぶします。
数字6のところで押されたらこのように表示される。
マウスが押されたときの処理はmousePressedに書き、 表示の処理はpaintComponentに書きます。
処理に必要なデータは属性値(インスタンス変数の値)として記憶します。
クリックされた位置により cx, cy の値を次のように設定することにします。
次に、paintComponent内でこの値を使って 長方形を描きます。
数字6のところで押されたときは
となり、上の実行例のようになります。
?の2箇所を書き、プログラムを完成させなさい。
1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.*;
4
5 public class Game4 extends JPanel implements MouseListener
6 {
7 Image img;
8 int cx, cy;
9
10 Game4()
11 {
12 ImageIcon ii = new ImageIcon("game0.png");
13 img = ii.getImage();
14 addMouseListener(this);
15 }
16
17 public void paintComponent(Graphics g)
18 {
19 g.drawImage(img, 0,0, this);
20 g.setColor(Color.blue);
21 g.fillRect(cx*100, cy*100, 100, 100);
22 }
23
24 public void mousePressed(MouseEvent e)
25 {
26 int x, y;
27 x = e.getX();
28 y = e.getY();
29 cx = ? ;
30 cy = ? ;
31 repaint();
32 }
33 public void mouseEntered(MouseEvent e) { }
34 public void mouseExited(MouseEvent e) { }
35 public void mouseReleased(MouseEvent e) { }
36 public void mouseClicked(MouseEvent e) { }
37
38 public static void main(String[] args)
39 {
40 JFrame f;
41
42 f = new JFrame();
43 f.setVisible(true);
44 f.setTitle("15Game");
45 f.setSize(420, 450);
46 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
47 f.add( new Game4() );
48 }
49 }