拼图小游戏

配置JDK,附件 game.jar可双击运行

package javaapplication1;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.*;

public class Games extends JFrame implements ActionListener {
private JButton buttons[][];// 存储按键的数组

private Container container;// 一个容器

private GridLayout layout;// 布局方式为GridLayout

private int count = 0, is[] = new int[8];// count的作用是计算按键移动的次数,is[]储存一个随机产生的1到8数字数组

public Games() {
super("Numeric Sliding Puzzle");// 设置标题
}

public void initGraph(int intX,int intY){

   layout = new GridLayout(intX, intY);// 3行3列
   container = getContentPane();// 该容器的布局方式,及其重要,否则产生空引用异常
   container.setBackground(Color.WHITE);
   container.setLayout(layout);// 将该布局方式作用于容器
   buttons = new JButton[intX][intY];// 给按键数组分配储存空间
   int locate1, locate2;// locate1用来指示当前产生的元素 locate2用来指示locate1之前的元素
   for (locate1 = 0; locate1 < intX*intY-1; locate1++) {// 该方法作用是产生1到8这8个数,随机分配给数组,即无序排列
    int g = new Random().nextInt(intX*intY-1) + 1;// 随机产生一个空白按键,即不显示的那个
    is[locate1] = g;
    for (locate2 = locate1 - 1; 0 <= locate2; locate2--) {
     if (is[locate1] == is[locate2])
      break;
    }

    if (locate2 != -1)
     locate1--;
   }
   int temp = 0;
   int r = new Random().nextInt(intX);// 随机产生一个0到3的数,代表空白按键的行
   int l = new Random().nextInt(intY);// 随机产生一个0到3的数,代表空白按键的列
   for (int i = 0; i < intX; i++) {
    for (int j = 0; j < intY; j++) {
     if (r == i && l == j) {// 空白按键设置为9,不显示
      buttons[i][j] = new JButton(String.valueOf(intX*intY));
      container.add(buttons[i][j]);
      buttons[i][j].setVisible(false);
     } else {
      buttons[i][j] = new JButton("" + is[temp++]);// 将数组数组的值作为显示的8个按键的名字
      container.add(buttons[i][j]);
     }
     buttons[i][j].setBackground(Color.black);
     buttons[i][j].setForeground(Color.WHITE);
     buttons[i][j].setFont(getFont());
    
    
     buttons[i][j].addActionListener(this);// 注册监听事件
    }
   }
   setSize(300, 300);// 设置显示容器区域大小
   setVisible(true);
 
}


public Font getFont(){
Font fnB = new Font ("Arial",Font.BOLD,30);
return fnB;
}

public void actionPerformed(ActionEvent event) {// 事件处理,由于计算量小该处将所有按键单独分析
   JButton b = (JButton) event.getSource();
   if (b == buttons[0][0]) {
    if (buttons[0][1].getText().equals("9")) {
     buttons[0][1].setText("" + buttons[0][0].getText());
     buttons[0][1].setVisible(true);
     buttons[0][0].setText("9");
   //  buttons[0][0].setFont()
     buttons[0][0].setVisible(false);
     count++;
    } else if (buttons[1][0].getText().equals("9")) {
     buttons[1][0].setText("" + buttons[0][0].getText());
     buttons[1][0].setVisible(true);
     buttons[0][0].setText("9");
     buttons[0][0].setVisible(false);
     count++;
    }
   }

   else if (b == buttons[0][1]) {
    if (buttons[0][0].getText().equals("9")) {
     buttons[0][0].setText("" + buttons[0][1].getText());
     buttons[0][0].setVisible(true);
     buttons[0][1].setText("9");
     buttons[0][1].setVisible(false);
     count++;
    } else if (buttons[0][2].getText().equals("9")) {
     buttons[0][2].setText("" + buttons[0][1].getText());
     buttons[0][2].setVisible(true);
     buttons[0][1].setText("9");
     buttons[0][1].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[0][1].getText());
     buttons[1][1].setVisible(true);
     buttons[0][1].setText("9");
     buttons[0][1].setVisible(false);
     count++;
    }

   } else if (b == buttons[0][2]) {
    if (buttons[0][1].getText().equals("9")) {
     buttons[0][1].setText("" + buttons[0][2].getText());
     buttons[0][1].setVisible(true);
     buttons[0][2].setText("9");
     buttons[0][2].setVisible(false);
     count++;
    } else if (buttons[1][2].getText().equals("9")) {
     buttons[1][2].setText("" + buttons[0][2].getText());
     buttons[1][2].setVisible(true);
     buttons[0][2].setText("9");
     buttons[0][2].setVisible(false);
     count++;
    }

   } else if (b == buttons[1][0]) {
    if (buttons[0][0].getText().equals("9")) {
     buttons[0][0].setText("" + buttons[1][0].getText());
     buttons[0][0].setVisible(true);
     buttons[1][0].setText("9");
     buttons[1][0].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[1][0].getText());
     buttons[1][1].setVisible(true);
     buttons[1][0].setText("9");
     buttons[1][0].setVisible(false);
     count++;
    } else if (buttons[2][0].getText().equals("9")) {
     buttons[2][0].setText("" + buttons[1][0].getText());
     buttons[2][0].setVisible(true);
     buttons[1][0].setText("9");
     buttons[1][0].setVisible(false);
     count++;
    }

   } else if (b == buttons[1][1]) {
    if (buttons[0][1].getText().equals("9")) {
     buttons[0][1].setText("" + buttons[1][1].getText());
     buttons[0][1].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    } else if (buttons[1][0].getText().equals("9")) {
     buttons[1][0].setText("" + buttons[1][1].getText());
     buttons[1][0].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    } else if (buttons[1][2].getText().equals("9")) {
     buttons[1][2].setText("" + buttons[1][1].getText());
     buttons[1][2].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    } else if (buttons[2][1].getText().equals("9")) {
     buttons[2][1].setText("" + buttons[1][1].getText());
     buttons[2][1].setVisible(true);
     buttons[1][1].setText("9");
     buttons[1][1].setVisible(false);
     count++;
    }

   } else if (b == buttons[1][2]) {
    if (buttons[0][2].getText().equals("9")) {
     buttons[0][2].setText("" + buttons[1][2].getText());
     buttons[0][2].setVisible(true);
     buttons[1][2].setText("9");
     buttons[1][2].setVisible(false);
     count++;
    } else if (buttons[2][2].getText().equals("9")) {
     buttons[2][2].setText("" + buttons[1][2].getText());
     buttons[2][2].setVisible(true);
     buttons[1][2].setText("9");
     buttons[1][2].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[1][2].getText());
     buttons[1][1].setVisible(true);
     buttons[1][2].setText("9");
     buttons[1][2].setVisible(false);
     count++;
    }

   } else if (b == buttons[2][0]) {
    if (buttons[1][0].getText().equals("9")) {
     buttons[1][0].setText("" + buttons[2][0].getText());
     buttons[1][0].setVisible(true);
     buttons[2][0].setText("9");
     buttons[2][0].setVisible(false);
     count++;
    } else if (buttons[2][1].getText().equals("9")) {
     buttons[2][1].setText("" + buttons[2][0].getText());
     buttons[2][1].setVisible(true);
     buttons[2][0].setText("9");
     buttons[2][0].setVisible(false);
     count++;
    }
   }

   else if (b == buttons[2][1]) {
    if (buttons[2][0].getText().equals("9")) {
     buttons[2][0].setText("" + buttons[2][1].getText());
     buttons[2][0].setVisible(true);
     buttons[2][1].setText("9");
     buttons[2][1].setVisible(false);
     count++;
    } else if (buttons[2][2].getText().equals("9")) {
     buttons[2][2].setText("" + buttons[2][1].getText());
     buttons[2][2].setVisible(true);
     buttons[2][1].setText("9");
     buttons[2][1].setVisible(false);
     count++;
    } else if (buttons[1][1].getText().equals("9")) {
     buttons[1][1].setText("" + buttons[2][1].getText());
     buttons[1][1].setVisible(true);
     buttons[2][1].setText("9");
     buttons[2][1].setVisible(false);
     count++;
    }

   } else if (b == buttons[2][2]) {
    if (buttons[2][1].getText().equals("9")) {
     buttons[2][1].setText("" + buttons[2][2].getText());
     buttons[2][1].setVisible(true);
     buttons[2][2].setText("9");
     buttons[2][2].setVisible(false);
     count++;
    } else if (buttons[1][2].getText().equals("9")) {
     buttons[1][2].setText("" + buttons[2][2].getText());
     buttons[1][2].setVisible(true);
     buttons[2][2].setText("9");
     buttons[2][2].setVisible(false);
     count++;
    }
   }
   if (buttons[0][0].getText().equals("1")// 假如1到8已经排列完成,则执行该语句
     && buttons[0][1].getText().equals("2")
     && buttons[0][2].getText().equals("3")
     && buttons[1][0].getText().equals("4")
     && buttons[1][1].getText().equals("5")
     && buttons[1][2].getText().equals("6")
     && buttons[2][0].getText().equals("7")
     && buttons[2][1].getText().equals("8")) {
   int  option=   JOptionPane.showConfirmDialog(Games.this, "would you like to play again ? ", "提示 ",JOptionPane.YES_NO_CANCEL_OPTION);
   if(option==JOptionPane.NO_OPTION) {
  System.exit(0);
   }else if(option==JOptionPane.YES_OPTION){
   this.dispose();
   new Games().initGraph(3, 3); 
   }else if(option==JOptionPane.CANCEL_OPTION){
   return ;
   }
   }

}

/*public void inputParam(){
  JFrame  jframe = new JFrame("请输入行数和列数");
  jframe.setSize(300, 300);
  jframe.setLayout(new FlowLayout());
  jframe.setBackground(Color.blue);
  jframe.setResizable(false);
  jframe.setVisible(true);
 
 
  JPanel jpanel=new JPanel();
  jpanel.setLayout(new FlowLayout());
  jpanel.setVisible(true);

  jframe.add(jpanel);
 
  JTextField jt = new JTextField();
  jt.setBackground(Color.WHITE);
  jt.setSize(600, 20);
  jt.setVisible(true);
 
  jpanel.add(jt);
 

 
}
*/
public static void main(String[] args) {
   Games game = new Games();
   game.initGraph(3,3);
}

}



猜你喜欢

转载自super-sjh.iteye.com/blog/1537150