SuDoku游戏开发
来源:互联网 发布:卡尔加里 知乎 编辑:程序博客网 时间:2024/04/30 18:12
SuDoku介绍:
数独游戏,一种世界流行的数字排列游戏。在9*9的表格中填入1~9的数字,使每一行中没有重复的数字,每一列没有重复的数字,而且在被分成9个3*3的小表格中也没有重复的数字。
步骤[4]:
1. 设计界面
画出9*9的表格,因为采用GameCanvas,所以所有的界面全部要写在run()函数中,又因为这部分代码比较长,所以写到一个新的函数中drawScreen(Graphics g)。画出SuDoku数据集合,分成两种:作为条件给出的部分数据,用户玩游戏过程中设定的剩余数据。用户操纵的当前移动块,通过方向键进行控制。提示信息块,提示游戏过程中的一些状态。菜单控制块。
2. 产生合理SuDoku数据
高效合理的SuDoku数据产生算法没有找到,于是在随机和高效中求得了一个折衷,采用部分随机后的回溯算法。下面简单介绍一下算法思想:设置三个Boolean数组,availableX[9][9],availableX[9][9],availableBox[3][3][9],分别用来存储当前状态下的某行某列某小表格的可获得数据的集合,例如availableX[i][j]=true表示第i行中的j是一个可以获得数。首先随机获得第一行的随机数,接着从第二行的第一个方框开始作回溯算法,确定一个方框的数后,修改被它影响到的行,列,小表格的可获得数据集合。如果当前方框没有可以获得的数,则退回到前面一个方框,并进行相关修改。直到9*9的所有方框都分配正确的数据。接着,按照所要求的显示出来的数的数量,根据当前的SuDoku数据集合,随机给出,即得到高度随机的SuDoku产生器。
3. 处理命令
由于采用GameCanvas,所以可以有两种方式的命令处理:通过keyReleased等从Canvas类中继承下来的底层处理事件;GameCanvas的新函数getKeyStates(),它可以直接获得事件内容,只要放在run()函数中的循环体中即可。本游戏中需要处理的命令有三类:方向控制,在9*9的方框中进行移动;1~9的数字输入;菜单的处理,比如游戏的开始,Level选择,游戏完成。
4. 检验结果
需要检验的也是三部分,每一行是否存在相同的数字,每一列是否存在相同的数字,每一个3*3小表格中是否存在相同的数字。
类结构:
1. SudokuGameCanvas extends GameCanvas implements Runnable 2. SudokuMIDlet extends MIDlet implements CommandListener 在SudokuMIDlet中建立一个SudokuGameCanvas对象,并实例化
- SuDoku游戏开发
- LeetCode:Valid Sudoku,Sudoku Solver(数独游戏)
- leetcode_Valid Sudoku and Sudoku Solver (数独游戏) _easy
- 说说wxErlang的智力游戏Sudoku
- POJ 2676 Sudoku 数独游戏
- 数独(sudoku)游戏的程序求解
- 小算法练习,Sudoku(POJ2676数字游戏
- Sicily 1002. 数独游戏(sudoku)
- 华为OJ(数独游戏-Sudoku)
- hdu1426数独游戏Sudoku Killer DFS
- Sudoku
- sudoku
- Sudoku
- sudoku
- Sudoku
- Sudoku
- sudoku
- sudoku
- J2ME Game游戏开发包介绍
- 手机游戏开发现状
- cygwin + slickedit 进行开发
- J2ME架构
- J2ME优缺点
- SuDoku游戏开发
- Nokia模拟器
- 激励!
- 心情随笔
- Foundation - strings
- static关键字
- Macromedia公司的发展历程
- 反方向的钟
- 实现icallbackeventhandlre,以userControl返回做视图层