java课程设计九宫格数独(4)

2019-08-20 20:27

计算机与信息工程系《数独游戏的设计与实现》课程设计

} return 1; }

static void set_data_zero(){ //数独初始化 for(int i=0;i<=9;i++){ for(int j=0;j<=9;j++){

data[i][j]=0; //0表示数字未给出 } } }

static void setnum(){ //设置数字 setzero(); //未给出的数字,需玩家填入 set_data_zero(); //初始化数独 for(int i=1;i<=9;i++){ //填充次数

int n =(int)(Math.random()*100)+1; //随机添加任意整数 int j=i*3-((i+2)/3*8-6); data[i][j]=n%9+1; //产生数字

int k=data[i][j]; //设置间隔 row[i][k]=1; col[j][k]=1;

sql[(i+2)/3][(j+2)/3][k]=1; } DFS(); }

static void setzero(){ //数独空格初始化 for(int i=0;i<=9;i++){

第 16 页 共 31 页

计算机与信息工程系《数独游戏的设计与实现》课程设计

for(int k=0;k<=9;k++){ row[i][k]=0; col[i][k]=0; }

for(int j=0;j<=9;j++){ for(int k=0;k<=9;k++){ sql[(i+2)/3][(j+2)/3][k]=0; } } } }

static void settext(){ //设置数独游戏中的数字 for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ //int hard=2; //hard代表难度

int n =(int)(Math.random()*100)+1; //随机数 if(n%hard==0){ //根据选择的难易程度设置数独 text[i][j]=new JTextField(Integer.toString(data[i][j])); text[i][j].setEditable(false); //不可编辑,只能显示 } else{

text[i][j]=new JTextField(); //其他难度,新建文本行 }

text[i][j].setHorizontalAlignment(JTextField.CENTER); //水平居中 atext[i][j]=text[i][j].getText(); //设置组件 } }

第 17 页 共 31 页

计算机与信息工程系《数独游戏的设计与实现》课程设计

}

static int gettext(){ //玩家填入数字 for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ try{ //异常处理

int k=Integer.parseInt(text[i][j].getText()); //第一个文本行输入操作 ansdata[i][j]=k; }

catch(NumberFormatException nfe){ //捕获PerseInt( )方法声明的异常对象

JOptionPane.showMessageDialog(null,\数据中包括非数字,请重新输入!\); //提示出错信息 return 0; } } } return 1; }

static int ans(){ //设置答案窗口的面板格局 setzero(); //空格初始化 for(int i=1;i<=9;i++){ for(int j=1;j<=9;j++){ int k=ansdata[i][j]; if( k>9 || k<1 ){ return 0; }

if( row[i][k]==1 || col[j][k]==1 || sql[(i+2)/3][(j+2)/3][k]==1 ){ return 0;

第 18 页 共 31 页

计算机与信息工程系《数独游戏的设计与实现》课程设计

}

row[i][k]=1; col[j][k]=1;

sql[(i+2)/3][(j+2)/3][k]=1; } } return 1; }

public ShuDu1(){ //数独游戏布局 super(\); //窗口标题 this.setSize(470,500); //设置窗口尺寸 this.setLocation(260,130); //窗口位置 this.setVisible(true); //显示窗口

this.setDefaultCloseOperation(EXIT_ON_CLOSE); //单击窗口按钮时,结束程序运行

this.setResizable(false); //窗口大小不可变 JPanel panel_but=new JPanel(new FlowLayout());

JPanel panel_txt=new JPanel(new GridLayout(3,3,2,2)); //将面板设置为3行3列网格布局,并设置大小

JPanel panel[]=new JPanel[10];

for(int i=1;i<=9;i++){ //设置9个面板

panel[i]=new JPanel(new GridLayout(3,3)); //将面板设置为3行3列网格布局

panel_txt.add(panel[i]); //添加组件

int m=(i+2)/3*3-2; //生成九个3*3的网格,并添加数字 int n=((i-1)%3+1)*3-2; for(int j=m;j<=m+2;j++){

第 19 页 共 31 页

计算机与信息工程系《数独游戏的设计与实现》课程设计

for(int k=n;k<=n+2;k++){ panel[i].add(text[j][k]); } } }

this.add(panel_but,\); //为当前类添加框架 this.add(panel_txt); //添加文本

menubar.add(menu_file); //添加主菜单

menu_file.add(item_next); //添加下拉菜单选项 menu_file.add(item_ans); menu_file.add(menu_edit); menu_file.add(item_exit);

menu_edit.add(item_sol); menu_edit.add(item_rem);

item_exit.addActionListener(this); //注册单击事件监听器,委托当前对象处理事件

item_next.addActionListener(this); item_ans.addActionListener(this); item_sol.addActionListener(this); item_rem.addActionListener(this);

this.setMenuBar(menubar); //设置难易程度等级菜单 Object pro[]={\,\,\};

box=new JComboBox(pro); //单击事件处理方法,实现ActionListener接口 if(hard==datahard[0]){ box.setSelectedIndex(0);

第 20 页 共 31 页


java课程设计九宫格数独(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《新编数学教学论》涂荣豹 - 王光明等

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: