我爱你的数独怎样文艺的说我爱你制作

您的当前位置: > 正文
我的世界九宫天阵数独制作攻略 附存档
来源:作者:小兔子。。。
我的世界九宫天阵数独制作攻略,相信大家都玩过九宫格了,这次一位MC玩家将这些搬到了minecraft中,电路很复杂,我的世界九宫天阵的存档这里为大家带来了,不明白的可以研究存档。
我的世界九宫天阵存档下载:
介绍下使用方法:
电路无控制台
整个巨型屏幕的最左边的按钮为清屏按钮,按下去后会有提示灯亮起,提示灯灭了之后为清屏完毕。
整个巨型屏幕的最右边的按钮为生成按钮,按下去后会有提示灯亮起,提示灯灭了之后为生成完毕。
每个单元中有3个按钮,从上往下依次为:这位数字+3 +2 +1。
右上角是标记为这位是否为给定的数。
电路强制要求能见度512M,其实似乎,按理来说300多应该就可以了,不过是虚空地图。没什么太大的关系。
如果电脑不支持开那么高的能见度,请点完生成按钮之后,绕到电路后面。
找到这里,我用黑色羊毛进行了标记。
如果生成完毕,这里会是这个样子的。
由于生成算法局限(其实是最简单的生成算法。)有可能导致生成无解数独,请见谅,如有不足之处,请多多包涵。
原文来源:MCBBS
(window.slotbydup=window.slotbydup || []).push({
id: '864236',
container: s,
size: '250,120',
display: 'inlay-fix'Java从基础到进阶学习之路----数独小游戏制作(二) - 推酷
Java从基础到进阶学习之路----数独小游戏制作(二)
游戏数据结构设计
显然,需要存储数据的地方只有九宫格地图部分。
对于地图,很明显我们可以采用二维数组
来存储地图中的数据。但是int的二维数组虽然直接简单,但是还是有一定不便之处,比如没有集合的内置处理方法丰富。所以,显然,在游戏地图的生成过程中,一些辅助数据我们可以采用Java的集合。
地图生成算法
对于数独而言,游戏的成功的最根本的保证就是当前的地图有一个存在的解。这就像是解方程,如果不存在解,那么这个游戏本身就是失败的。
所以,重点在于如何产生一个存在解且解唯一的地图。如果我们仅仅是随机产生数字,显然是不可以的,虽然在我们看来,地图上的这些数字确实像是随机产生的:每次出现的位置不定,大小不一样。
不过,随机产生不能保证游戏的结果一定有解!
那么我们要
如何产生一个可以玩的地图呢?
这就需要我们逆向思考一下,既然前提是要有一个可行解,那么 我们就直接产生一个解,称之为终盘,然后将这些解的数字随机剔除,形成初盘,剩下的显示在地图上不就ok 了么?
那么又有一个新的问题出现了,我们要
如何产生一个可行解?
首先我们要明确对可行解的要求:
解必须要符合游戏规则
每次生成的解都是不一样的
有了这两个要求我们就有了目标。
首先考虑的是如何产生符合游戏规则的解?游戏规则是:
每一行不可以出现重复的数字
每一列不可以出现重复的数字
每个小宫格区(3X3)内不可以出现重复的数字
其实做过ACM题目的应该都可以看出来这就是一个简单的ACM题目了。
即是: 现在给定义一个九宫格,让你在符合九宫格规则的情况下,随机生成一个九宫格的完整的终盘地图。
做题比较有经验的人,显然一眼就可以出来,这道题目,显然用搜索做最适合。
我则采用了dfs,深度优先搜索进行处理。过程如下,首先现在我们将宫格的坐标定义如下:
共有9*9=81格,因此可以定义一个变量index,使其从0开始直至80,将其整除9等到行坐标,对9取余得到列坐标。即是:
X = index / 9
Y = index % 9
dfs的代码如下所示:
* Generates Sudoku game solution.
* @param game
Game to fill, user should pass 'new int[9][9]'.
* @param index
Current index, user should pass 0.
Sudoku game solution.
private int[][] generateSolution(int[][] game, int index) {
if (index & 80)
// 获取坐标
int x = index % 9;
int y = index / 9;
// 产生1-9的数字的ArrayList,并打乱顺序
List&Integer& numbers = new ArrayList&Integer&();
for (int i = 1; i &= 9; i++) numbers.add(i);
Collections.shuffle(numbers); // 打乱list顺序
// 尝试确定该坐标的数字值
while (numbers.size() & 0) {
int number = getNextPossibleNumber(game, x, y, numbers); // 获取该坐标的可能值
if (number == -1)
game[y][x] =
int[][] tmpGame = generateSolution(game, index + 1); // 递归调用,下一个可能值
if (tmpGame != null)
return tmpG
game[y][x] = 0;
即是,从左到右,从上到下,一个坐标一个坐标的数字的确定,之所是尝试获取可能值,是因为,在这种逐步搜索确定的情况下,可能会在某个坐标的值存在无解,即是该坐标不能填入任何数字,否则就违反了规则,这个时候,就会递归出栈,返回到上一个坐标,并将之前无解的坐标的值置为0,重新确定上一个坐标的其他可能的值(即除去上一个已经取了的值),如果也是无解,则继续出栈,再回到更上的一个坐标,重新确定,如果有其他可取值,则从这个坐标开始再次递归搜索。这样直至成功搜索完整张地图结束。
上面的只是终盘的生成算法,那么如何生成初盘呢?
我们上面说了,采取在终盘上剔除数字,这个也可以形象的说是“挖洞”,即是在终盘上随机挖洞,挖洞的规则是:
挖去一个洞,然后判断当前的盘面的解是否存在且唯一,如果不唯一,则终止挖洞。否则可以继续挖洞,直至满足要求。
实现代码如下:
private int[][] generateGame(int[][] game) {
List&Integer& positions = new ArrayList&Integer&();
for (int i = 0; i & 81; i++)
positions.add(i);
Collections.shuffle(positions);
return generateGame(game, positions);
* Generates Sudoku game from solution, user should use the other
* generateGame method. This method simple removes a number at a position.
* If the game isn't anymore valid after this action, the game will be
* brought back to previous state.
* @param game
Game to be generated.
* @param positions
List of remaining positions to clear.
Generated Sudoku game.
private int[][] generateGame(int[][] game, List&Integer& positions) {
while (positions.size() & 0) {
int position = positions.remove(0);
int x = position % 9;
int y = position / 9;
int temp = game[y][x];
game[y][x] = 0;
if (!isValid(game))
game[y][x] =
* Checks whether given game is valid.
* @param game
Game to check.
True if game is valid, false otherwise.
private boolean isValid(int[][] game) {
return isValid(game, 0, new int[] { 0 });
* Checks whether given game is valid, user should use the other isValid
* method. There may only be one solution.
* @param game
Game to check.
* @param index
Current index to check.
* @param numberOfSolutions
Number of found solutions. Int[] instead of
int because of pass by reference.
True if game is valid, false otherwise.
private boolean isValid(int[][] game, int index, int[] numberOfSolutions) {
if (index & 80)
return ++numberOfSolutions[0] == 1;
int x = index % 9;
int y = index / 9;
if (game[y][x] == 0) {
List&Integer& numbers = new ArrayList&Integer&();
for (int i = 1; i &= 9; i++)
numbers.add(i);
while (numbers.size() & 0) {
int number = getNextPossibleNumber(game, x, y, numbers);
if (number == -1)
game[y][x] =
if (!isValid(game, index + 1, numberOfSolutions)) {
game[y][x] = 0;
game[y][x] = 0;
} else if (!isValid(game, index + 1, numberOfSolutions))
暂时先说这个算法吧,不是很好理解的。具体基于“挖洞”的初盘生成算法可以搜索相关的文档加以理解。
Reference:
http://www.shs.edu.tw/works/essay/4.pdf
http://www.sudoku.org.tw/phpBB/viewtopic.php?f=6&t=36
关于挖洞的文献
/view/f9e3f33294e1.html
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致&&《我的世界》数独制游戏怎么制作
《我的世界》数独制游戏怎么制作
日 11:00&&&&&阅读(809)&&&&&来源:牛游戏&&&&&编辑:雷神&&&&&
是一部自由度超高的游戏作品,玩家可以通过这款游戏里面的各种配件制作一些小游戏,最近有玩家研究出了数独的制作方法,下面是详细解析,有兴趣可以参考参考。
数独制游戏作方法
电路展示由于无法传输图片这二张图明天再补上
介绍下使用方法
电路无控制台
整个巨型屏幕的最左边的按钮为清屏按钮,按下去后会有提示灯亮起,提示灯灭了之后为清屏完毕
整个巨型屏幕的最右边的按钮为生成按钮,按下去后会有提示灯亮起,提示灯灭了之后为生成完毕
每个单元中有3个按钮,从上往下依次为:这位数字+3 +2 +1
右上角是标记为这位是否为给定的数
电路强制要求能见度512M,其实似乎,按理来说300多应该就可以了,不过是虚空地图。没什么太大的关系
如果电脑不支持开那么高的能见度,请点完生成按钮之后,绕到电路后面。
找到这里,我用黑色羊毛进行了标记。
如果生成完毕,这里会是这个样子的。
暂时有的不足之处:由于生成算法局限(其实是最简单的生成算法。)有可能导致生成无解数独。
我的世界新手指南
我的世界指令攻略
我的世界合成攻略
我的世界道具攻略
我的世界大神作品
一念天堂一念地狱
小编评价:模拟创造自己的世界
游戏标签:
游戏类型:
游戏平台:WinXP/Win7/Vista
发行时间:
游戏大小:70.0 MB
更新时间:
相关攻略推荐
阅读(245)日
阅读(187)日
阅读(322)日
阅读(283)日
阅读(534)日
阅读(430)日
阅读(574)日
阅读(311)日
阅读(447)日
阅读(256)日
阅读(1269)日
阅读(697)日
阅读(733)日
阅读(986)日
阅读(422)日
单机游戏推荐
《七日杀14.5:我是传奇v2.0.1》是由七日杀mod贴吧大神“木南” ...
《死亡效应2》(DeadEffect2)是BadFlyInteractive,a.s.制作发行的 ...
10.04.8 GB
《上古卷轴5:纳尔之轮》属于玩家自制的一款特色mod,于lore考据 ...
《polybridge》是由DryCactus制作发行的一款模拟建造类游戏,游 ...
10.0356.1 MB
《废品机械师v1.22》(ScrapMechanic)是AxolotGames发行的一款沙 ...
9.2286.2 MB
《霓虹院大亨》(HunieCamStudio)是由HuniePot制作发行的一款模拟 ...
9.083.2 MB
《罪恶装备2:序曲》(GUILTYGEAR2-OVERTURE-)是由ArcSystemWorks ...
《三国志13:英雄的苍穹》是《三国志13》的一款华夏题材的大型MO ...
《人类堕落》(Humanfallflat)是由NoBrakesGames制作发行的一款第 ...
10.0159.5 MB
《过山车之星》(PlanetCoaster)是《过山车大亨》系列原制作工 ...
10.01.4 GB
本站所有内容均来源于互联网,本站不负任何法律责任,如果侵犯您的版权,请及时告知我们 ,我们将在收到通知后72小时内删除
牛游戏网提供游戏(包括单机游戏,电视游戏,手机游戏,网页游戏,网络游戏等)资讯,下载,攻略,补丁,始终站在 的最前沿
CopyRight(C) WWW.NEWYX.NET All Right Reserved 湘ICP备号
牛游戏网温馨提示:适度游戏娱乐 沉迷游戏伤身 合理安排时间 享受单机游戏人人网 - 抱歉
哦,抱歉,好像看不到了
现在你可以:
看看其它好友写了什么
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&我的世界数独游戏制作教程详解_图文攻略_全通关攻略_高分攻略_百度攻略
我的世界数独游戏制作教程详解,详细描述了我的世界数独游戏制作教程,希望这篇我的世界数独游戏制作教程详解,能够帮助到各位正在玩我的世界的玩家朋友们!我的世界数独游戏制作教程详解电路展示由于无法传输图片这二张图明天再补上精彩内容,尽在百度攻略:侧视图顶部控制部分精彩内容,尽在百度攻略:介绍下使用方法电路无控制台精彩内容,尽在百度攻略:整个巨型屏幕的最左边的按钮为清屏按钮,按下去后会有提示灯亮起,提示灯灭了之后为清屏完毕整个巨型屏幕的最右边的按钮为生成按钮,按下去后会有提示灯亮起,提示灯灭了之后为生成完毕精彩内容,尽在百度攻略:每个单元中有3个按钮,从上往下依次为:这位数字+3 +2 +1右上角是标记为这位是否为给定的数精彩内容,尽在百度攻略:电路强制要求能见度512M,其实似乎,按理来说300多应该就可以了,不过是虚空地图。没什么太大的关系如果电脑不支持开那么高的能见度,请点完生成按钮之后,绕到电路后面。找到这里,我用黑色羊毛进行了标记。精彩内容,尽在百度攻略:如果生成完毕,这里会是这个样子的。暂时有的不足之处:由于生成算法局限(其实是最简单的生成算法。)有可能导致生成无解数独。精彩内容,尽在百度攻略:小编推荐:责任编辑【未命名】
我的世界-相关攻略推荐
我的世界-游戏代码类
我的世界-新手攻略
我的世界-建筑获得法
我的世界-物品使用}

我要回帖

更多关于 我爱你制作 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信