40
コメント:
|
2258
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 3: | 行 3: |
ピースを1つ取り除いてできた空白部分を使って 移動するための処理を記述します。 ---- === マウスを使えるようにする === マウスを使えるようにする方法は前に述べた通りです。 1.クラス宣言にimplements MouseListenerを追加 2.addMouseListener(this)を追加 . コンストラクタ内に記述します。 3.マウスイベントに対する5つのメソッドを記述 . public void mousePressed(MouseEvent e) { } . public void mouseEntered(MouseEvent e) { } . public void mouseExited(MouseEvent e) { } . public void mouseReleased(MouseEvent e) { } . public void mouseClicked(MouseEvent e) { } {{{#!java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Game14 extends JPanel implements MouseListener { int haba; int yoko, tate; String fname; Image img; int[][] ban; int spx, spy; public void paintComponent(Graphics g) { int dx, dy, sx, sy; for(dy = 0; dy < tate; dy++) for(dx = 0; dx < yoko; dx++) { sx = ...; sy = ...; g.drawImage(img, dx*haba, dy*haba, (dx+1)*haba, (dy+1)*haba, sx*haba, sy*haba, (sx+1)*haba, (sy+1)*haba, this); } g.setColor(Color.lightGray); g.fillRect(spx*haba, spy*haba, haba, haba); } void shokika() { ... spx = yoko-1; spy = tate-1; } Game14() { addMouseListener(this); } public void mousePressed(MouseEvent e) { int x, y, dx, dy; x = e.getX() / haba; y = e.getY() / haba; dx = (x<spx) ? -1 : (x>spx) ? 1 : 0; dy = (y<spy) ? -1 : (y>spy) ? 1 : 0; // if(x < spx) // dx = -1; // else if(x > spx) // dx = 1; // else // dx = 0; // if(y < spy) // dy = -1; // else if(y > spy) // dy = 1; // else // dy = 0; if(dx != 0 && dy != 0) return; while (x != spx || y != spy) { ban[spx][spy] = ban[spx+dx][spy+dy]; spx = spx + dx; spy = spy + dy; }; repaint(); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } }}} |
ピースを動かす
ピースを1つ取り除いてできた空白部分を使って 移動するための処理を記述します。
マウスを使えるようにする
マウスを使えるようにする方法は前に述べた通りです。
1.クラス宣言にimplements MouseListenerを追加
2.addMouseListener(this)を追加
- コンストラクタ内に記述します。
3.マウスイベントに対する5つのメソッドを記述
public void mousePressed(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mouseClicked(MouseEvent e) { }
1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.*;
4
5 public class Game14 extends JPanel implements MouseListener
6 {
7 int haba;
8 int yoko, tate;
9 String fname;
10 Image img;
11 int[][] ban;
12 int spx, spy;
13
14 public void paintComponent(Graphics g)
15 {
16 int dx, dy, sx, sy;
17
18 for(dy = 0; dy < tate; dy++)
19 for(dx = 0; dx < yoko; dx++)
20 {
21 sx = ...;
22 sy = ...;
23 g.drawImage(img,
24 dx*haba, dy*haba, (dx+1)*haba, (dy+1)*haba,
25 sx*haba, sy*haba, (sx+1)*haba, (sy+1)*haba,
26 this);
27 }
28 g.setColor(Color.lightGray);
29 g.fillRect(spx*haba, spy*haba, haba, haba);
30 }
31
32 void shokika()
33 {
34 ...
35 spx = yoko-1;
36 spy = tate-1;
37 }
38
39 Game14()
40 {
41 addMouseListener(this);
42 }
43
44 public void mousePressed(MouseEvent e)
45 {
46 int x, y, dx, dy;
47
48 x = e.getX() / haba;
49 y = e.getY() / haba;
50 dx = (x<spx) ? -1 : (x>spx) ? 1 : 0;
51 dy = (y<spy) ? -1 : (y>spy) ? 1 : 0;
52 // if(x < spx)
53 // dx = -1;
54 // else if(x > spx)
55 // dx = 1;
56 // else
57 // dx = 0;
58 // if(y < spy)
59 // dy = -1;
60 // else if(y > spy)
61 // dy = 1;
62 // else
63 // dy = 0;
64 if(dx != 0 && dy != 0)
65 return;
66 while (x != spx || y != spy)
67 {
68 ban[spx][spy] = ban[spx+dx][spy+dy];
69 spx = spx + dx;
70 spy = spy + dy;
71 };
72 repaint();
73 }
74
75 public void mouseEntered(MouseEvent e) { }
76 public void mouseExited(MouseEvent e) { }
77 public void mouseReleased(MouseEvent e) { }
78 public void mouseClicked(MouseEvent e) { }