#acl All: == ピースを動かす == ピースを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 = (xspx) ? 1 : 0; dy = (yspy) ? 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) { } }}}