为了学习Android,自己编了一个小游戏,数独。
特点:
1.自动分析可选数字。
2.自动判断结果
3.支持Undo功能(Command设计模式)
4.支持自编题目。

功能简介

主画面
功能:
1.点击项目选择题目
2.按【Menu】键新建题目
3.长按项目选择删除或编辑题目

游戏/编辑画面

功能:
1.按数字按钮选择数字(置灰按钮不可选)
2.按【Undo】按钮取消上一步操作
3.编辑状态时按下【menu】键可以选择清除输入结果或保存题目
游戏状态下按下【menu】键可以选择清楚输入结果或启动自动填写功能(根据现在状态可以判断的部分)

 基本的想法

最初的时候,每个格都有选择所有数字的机会,当相同行或相同列或相同块的其他格选择了某数字是,这个数字就不能再选。

当一个格的可选数字之剩一个时,就作为答案使用,这是这个结果又会影响其他的同行,同列及同块的格。有点递归的感觉。

当一个格里的可选数字都没有了的时候,判定失败。

为了在选错的时候,有取消的机会,通过Command设计模式实现的动作的记录和恢复。这里麻烦一点的是在某一格的数组决定以后,会对其他各有影响,需要记录所有的变化。

挺复杂的吧,其实代码比想象的要简单。

可以从这里(http://down.51cto.com/data/255564)下载工程文件和源代码。