618
コメント:
|
1192
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 3: | 行 3: |
{{{ | ピースを1つ取り除いてできた空白部分を使って 移動するための処理を記述します。 {{{#!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; Game14() { addMouseListener(this); } |
行 6: | 行 25: |
int ix, iy, dx, dy; | int x, y, dx, dy; |
行 8: | 行 27: |
ix = e.getX() / pSize; iy = e.getY() / pSize; if(ix < 0 || ix >= nx || iy < 0 || iy >= ny) return; if(ix == spx && iy != spy) { dx = 0; dy = (iy < spy) ? -1 : 1; } else if(iy == spy && ix != spx) { dy = 0; dx = (ix < spx) ? -1 : 1; } else |
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) |
行 23: | 行 45: |
do | while (x != spx || y != spy) |
行 28: | 行 50: |
} while (spx != ix || spy != iy); ban[spx][spy] = nx*ny-1; // はずしたピース |
}; |
行 32: | 行 53: |
public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } |
ピースを動かす
ピースを1つ取り除いてできた空白部分を使って 移動するための処理を記述します。
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 Game14()
15 {
16 addMouseListener(this);
17 }
18 public void mousePressed(MouseEvent e)
19 {
20 int x, y, dx, dy;
21
22 x = e.getX() / haba;
23 y = e.getY() / haba;
24 dx = (x<spx) ? -1 : (x>spx) ? 1 : 0;
25 dy = (y<spy) ? -1 : (y>spy) ? 1 : 0;
26 // if(x < spx)
27 // dx = -1;
28 // else if(x > spx)
29 // dx = 1;
30 // else
31 // dx = 0;
32 // if(y < spy)
33 // dy = -1;
34 // else if(y > spy)
35 // dy = 1;
36 // else
37 // dy = 0;
38 if(dx != 0 && dy != 0)
39 return;
40 while (x != spx || y != spy)
41 {
42 ban[spx][spy] = ban[spx+dx][spy+dy];
43 spx = spx + dx;
44 spy = spy + dy;
45 };
46 repaint();
47 }
48
49 public void mouseEntered(MouseEvent e) { }
50 public void mouseExited(MouseEvent e) { }
51 public void mouseReleased(MouseEvent e) { }
52 public void mouseClicked(MouseEvent e) { }