JAVA 16方格排序游戏
来源:互联网 发布:动态网页制作python 编辑:程序博客网 时间:2024/04/30 02:38
有4*4的方格 其中有1-15个数 不重复 有一个空白格
每次点其中一个格子 如果该格子与空白格相连 则这两个交换
当1-15个数在这些格子中顺序或逆序显示 则成功
import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import org.ietf.jgss.GSSManager;import java.io.*;import java.text.BreakIterator;import java.util.*;import java.util.logging.Handler;public class Game extends JFrame{JPanel mainPanel=new JPanel();JButton button[][]=new JButton[4][4];int data[][]=new int[4][4];ArrayList<String> num=new ArrayList<String>();public Game(){super("16方格排序游戏");Container c=this.getContentPane();mainPanel.setLayout(new GridLayout(4, 4, 3, 3));c.add(mainPanel);for(int i=0;i<4;i++){for(int j=0;j<4;j++){button[i][j]=new JButton();mainPanel.add(button[i][j]);button[i][j].addActionListener(new Handler());data[i][j]=0;}}InitNum();}void InitNum(){num.clear();for(int i=0;i<16;i++){num.add(String.valueOf(i));}for(int i=0;i<4;i++){for(int j=0;j<4;j++){Random r=new Random();int index=r.nextInt(num.size());String string=num.get(index);if(string.equals("0")){button[i][j].setText("");data[i][j]=0;}else{button[i][j].setText(string);data[i][j]=Integer.parseInt(string);}num.remove(index);}}}class Handler implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getActionCommand().length()==0)return;int n=Integer.parseInt(e.getActionCommand());int locationx = 0,locationy = 0;int location = 0;int aim=-1;//记录空白按钮位置for(int i=0;i<4;i++){for(int j=0;j<4;j++){if(data[i][j]==n){locationx=i;locationy=j;location=i*4+j;}}}int cand[]={location-1,location+1,location-4,location+4};for(int i=0;i<4;i++){if(check(cand[i])){aim=cand[i];}}if(aim>=0&&aim<16){int temp=data[locationx][locationy];button[aim/4][aim%4].setText(String.valueOf(temp));data[aim/4][aim%4]=temp;button[locationx][locationy].setText("");data[locationx][locationy]=0;}if(isOver()){int choice = JOptionPane.showConfirmDialog(null,JOptionPane.YES_NO_OPTION); if(choice == JOptionPane.YES_OPTION) InitNum(); else System.exit(0);}}boolean check(int index){if(index>=0 && index<16 && data[(index)/4][(index)%4]==0)return true;return false;}boolean isOver(){int i,j;for(i=0;i<16;i++){if(data[i/4][i%4]!=i)break;}if(i==16)return true;for(i=0;i<15;i++){if(data[i/4][i%4]!=i+1)break;}if(i==15)return true;for(i=0,j=15;i<16;i++,j--){if(data[j/4][j%4]!=i)break;}if(i==16)return true;for(i=0,j=15;i<15;i++,j--){if(data[j/4][j%4]!=i+1)break;}if(i==15)return true;return false;}}public static void main(String[] args){Game game=new Game();game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);game.setSize(300,300);game.setVisible(true);}}
效果图:
0 0
- JAVA 16方格排序游戏
- 方格游戏
- js方格游戏
- js实现方格游戏
- 【codevs2853】方格游戏 DP
- CODEVS 2853 方格游戏
- 【51Nod 1180】方格射击游戏
- 16:踩方格
- 16:踩方格
- 16:踩方格
- 16:踩方格
- 高中OJ3502. 【NOIP2013模拟11.4B组】方格游戏(game)
- JZOJ-senior-3502. 【NOIP2013模拟11.4B组】方格游戏
- hdu 骨牌铺方格 (java)
- JAVA数组排序——抽彩游戏
- 动态规划练习一 16:踩方格
- 动态规划练习题-16(踩方格)
- 动态规划 16 (踩方格)
- jquery多个相同ID动态绑定同一事件
- tempalte.js例子
- 使用sed、awk命令生成.java或.yaml文件所需语句
- 初学HTML用法大全指导(一)html对文本的设置
- Crashing Robots(POJ 2632)(模拟)
- JAVA 16方格排序游戏
- C Primer Plus 练习 P85
- 关于list集合
- PHP微信支付开发之扫描支付(模式二)后如何回调
- 第三章 装饰者模式
- win8.1重装后修复ubuntu引导
- 笔记软件
- nginx源码学习(一)
- 安装auto-fu.zsh让命令输入自动补全