welcome: please sign in
location: "ピースを動かす"の差分
2と5のリビジョン間の差分 (その間の編集: 3回)
2009-12-04 06:15:29時点のリビジョン2
サイズ: 618
編集者: masahiko
コメント:
2009-12-17 07:54:00時点のリビジョン5
サイズ: 1260
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 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;
 
 void shokika()
 {
  ...
  spx = yoko-1;
  spy = tate-1;
 }

 Game14()
 {
  addMouseListener(this);
 }
行 6: 行 32:
  int ix, iy, dx, dy;   int x, y, dx, dy;
行 8: 行 34:
  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: 行 52:
  do   while (x != spx || y != spy)
行 28: 行 57:
  } while (spx != ix || spy != iy);
  ban[spx][spy] = nx*ny-1; // はずしたピース
  };
行 32: 行 60:
   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         void shokika()
  15         {
  16                 ...
  17                 spx = yoko-1;
  18                 spy = tate-1;
  19         }
  20 
  21         Game14()
  22         {
  23                 addMouseListener(this);
  24         }
  25         public void mousePressed(MouseEvent e)
  26         {
  27                 int x, y, dx, dy;
  28 
  29                 x = e.getX() / haba;
  30                 y = e.getY() / haba;
  31                 dx = (x<spx) ? -1 : (x>spx) ? 1 : 0;
  32                 dy = (y<spy) ? -1 : (y>spy) ? 1 : 0;
  33 //              if(x < spx)
  34 //                      dx = -1;
  35 //              else if(x > spx)
  36 //                      dx = 1;
  37 //              else
  38 //                      dx = 0;
  39 //              if(y < spy)
  40 //                      dy = -1;
  41 //              else if(y > spy)
  42 //                      dy = 1;
  43 //              else
  44 //                      dy = 0;
  45                 if(dx != 0 && dy != 0)
  46                         return;
  47                 while (x != spx || y != spy)
  48                 {
  49                         ban[spx][spy] = ban[spx+dx][spy+dy];
  50                         spx = spx + dx;
  51                         spy = spy + dy;
  52                 };
  53                 repaint();
  54         }
  55         
  56         public void mouseEntered(MouseEvent e) { }
  57         public void mouseExited(MouseEvent e) { }
  58         public void mouseReleased(MouseEvent e) { }
  59         public void mouseClicked(MouseEvent e) { }      

ピースを動かす (最終更新日時 2012-01-12 07:09:21 更新者 masahiko)