数独游戏的设计与实现
前景:数独游戏,是一种数学智力拼图游戏,是“独立的数字游戏”的简称,源自18世纪末的瑞士,后在美国发展,在日本得以发扬光大。
数独游戏可以训练玩家的逻辑推理能力,不少教育者皆认为数独是锻炼脑筋的好方法。
然而如何制作出这个游戏?首先要了解它的规则:
1.游戏会从一个部分带有数字的九宫格开始。 在9×9的大九宫格(即3格宽×3格高)方阵里,每一格又细分为一个小九宫格。
2.游戏开始,已给定若干数字,其它宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字。
3.填数字时必须满足以下条件:在空白的小格子里填上1~9中的数字,使得每个数字在“九宫格”的每行、每列、每个小九宫格中均只出现一次。
数独的数字排列方式千变万化,玩法逻辑简单,每个数独游戏的解答方案都是独一无二的。
制作过程:首先明白数独是分为3*3的9个大宫格,然后9个大宫格里面再分3*3的小宫格,这个就是数独表,然后就在排列数字在里面,我设置的为500*500的大小,
但是怕玩家不习惯,所以设置的可以自由调整大小的功能,即为可以自由拉缩窗口,表格就会跟着其变化。
我选择使用2个图,一个是根据遍历算法随机排列出一份数独表,这里我称为答案吧,另外一个是把大部分数字隐藏,仅显示部分数字的数独表,这里称为游戏表吧。
然而玩家只能看到游戏边,答案表是被隐藏在下面的,其中显示的数字背景色为灰色,并且是不能修改的,然而白色背景色的格子是允许填充数字的,然而,在游戏表上面填的数字,也许与答案的不一样,
但是因为便历算法,在判断行,列,每个大宫格,符合条件没有相同数字都算符合,反正答案只有一个,满足游戏的本性,让玩家自己探索,直达出现相同数字,即为错误,随即
不能再次输入数字了,但是没有出现游戏结束的提示,因为游戏还是要继续的。只有知道所有格子都填充完,并且没有出现错误,游戏表就会和答案表相比较,其实一般都是正确的了,随即就会弹出通关成功的提示。
困难与解决:因为数独游戏的核心代码很多,我的代码大部分也是参考网上得来的,其中有个比较麻烦的是没有办法调整出多一个界面,原本是想像制作五子棋一样,制作2个界面,一个为大界面,另外一个就是数独界面,在数独界面外,有选择按钮,比如“重置游戏”、“退出游戏”、“查看答案”、“难度”等。可是我在最初制作界面时候选择的语句就是界面的3*3平均分配的语句,如果要改,可能就是需要把游戏界面填充在大界面,由于时间问题,没有去实现。
还有比较多的问题是理解网上代码的用法吧,因为数独的核心代码都是遍历算法判断是否正确,先设定好的答案,再根据显示的数字去不断判断填的数字是否正确而已,主要是理解该实现的思想。
体会:其实很多游戏的开发都必须要详细的分析和明确目标,因为在制作途中,你会发现,困难不可怕,可怕的是突发奇想的东西,往往你会想实现这些东西的时候,你会发现很难去调整你当初制作的方向和目标,拿数独游戏来做比如吧,制作出来并不难,根据网上的参考还有自己Java的知识,融合在一起就能实现了,但是麻烦的是,你想多点新玩法,你就会牺牲很多东西的,有可能是和自己的目标冲突,所以,在制定好目标时候,应该先去实现了,在去找第二个目标,不然两头都无法到岸,只会活在瓶颈中。