• 数独游戏的设计与实现


    前景:数独游戏,是一种数学智力拼图游戏,是“独立的数字游戏”的简称,源自18世纪末的瑞士,后在美国发展,在日本得以发扬光大。

    数独游戏可以训练玩家的逻辑推理能力,不少教育者皆认为数独是锻炼脑筋的好方法。

    然而如何制作出这个游戏?首先要了解它的规则:

    1.游戏会从一个部分带有数字的九宫格开始。 在9×9的大九宫格(即3格宽×3格高)方阵里,每一格又细分为一个小九宫格。

    2.游戏开始,已给定若干数字,其它宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字。

    3.填数字时必须满足以下条件:在空白的小格子里填上1~9中的数字,使得每个数字在“九宫格”的每行、每列、每个小九宫格中均只出现一次。

    数独的数字排列方式千变万化,玩法逻辑简单,每个数独游戏的解答方案都是独一无二的。

    制作过程:首先明白数独是分为3*3的9个大宫格,然后9个大宫格里面再分3*3的小宫格,这个就是数独表,然后就在排列数字在里面,我设置的为500*500的大小,

    但是怕玩家不习惯,所以设置的可以自由调整大小的功能,即为可以自由拉缩窗口,表格就会跟着其变化。

    我选择使用2个图,一个是根据遍历算法随机排列出一份数独表,这里我称为答案吧,另外一个是把大部分数字隐藏,仅显示部分数字的数独表,这里称为游戏表吧。

    然而玩家只能看到游戏边,答案表是被隐藏在下面的,其中显示的数字背景色为灰色,并且是不能修改的,然而白色背景色的格子是允许填充数字的,然而,在游戏表上面填的数字,也许与答案的不一样,

    但是因为便历算法,在判断行,列,每个大宫格,符合条件没有相同数字都算符合,反正答案只有一个,满足游戏的本性,让玩家自己探索,直达出现相同数字,即为错误,随即

    不能再次输入数字了,但是没有出现游戏结束的提示,因为游戏还是要继续的。只有知道所有格子都填充完,并且没有出现错误,游戏表就会和答案表相比较,其实一般都是正确的了,随即就会弹出通关成功的提示。

    困难与解决:因为数独游戏的核心代码很多,我的代码大部分也是参考网上得来的,其中有个比较麻烦的是没有办法调整出多一个界面,原本是想像制作五子棋一样,制作2个界面,一个为大界面,另外一个就是数独界面,在数独界面外,有选择按钮,比如“重置游戏”、“退出游戏”、“查看答案”、“难度”等。可是我在最初制作界面时候选择的语句就是界面的3*3平均分配的语句,如果要改,可能就是需要把游戏界面填充在大界面,由于时间问题,没有去实现。

    还有比较多的问题是理解网上代码的用法吧,因为数独的核心代码都是遍历算法判断是否正确,先设定好的答案,再根据显示的数字去不断判断填的数字是否正确而已,主要是理解该实现的思想。

    体会:其实很多游戏的开发都必须要详细的分析和明确目标,因为在制作途中,你会发现,困难不可怕,可怕的是突发奇想的东西,往往你会想实现这些东西的时候,你会发现很难去调整你当初制作的方向和目标,拿数独游戏来做比如吧,制作出来并不难,根据网上的参考还有自己Java的知识,融合在一起就能实现了,但是麻烦的是,你想多点新玩法,你就会牺牲很多东西的,有可能是和自己的目标冲突,所以,在制定好目标时候,应该先去实现了,在去找第二个目标,不然两头都无法到岸,只会活在瓶颈中。

  • 相关阅读:
    一文了解网络编程之走进TCP三次握手和HTTP那些你不知道的事
    并发编程面试必备之ConcurrentHashMap源码解析
    java延迟队列DelayQueue及底层优先队列PriorityQueue实现原理源码详解
    聊一聊面试中常问的延时队列
    面试必备HashMap源码解析
    synchronized解锁源码分析
    synchronized的jvm源码加锁流程分析聊锁的意义
    jvm源码解析java对象头
    从ReentrantLock源码入手看锁的实现
    从synchronized和lock区别入手聊聊java锁机制
  • 原文地址:https://www.cnblogs.com/mac54321/p/4836870.html
Copyright © 2020-2023  润新知