中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 17:00
47,811 主题排行 / 349,896 发帖 / 今日 1 篇 / 48,254 会员排行
DOS批处理 & 脚本技术(批处理室) » [分享]数字九宫格游戏[8月29日更新]
可打印版本  7,224 / 13
第1楼 moniuming 发表于 2008-08-11 15:59
银牌会员 发帖 574 积分 1,335 来自 广西
[分享]数字九宫格游戏[8月29日更新]
闲时让大家活跃一下大脑,希望大家喜欢...

2楼已经更新为输入改变字符

9楼已经更新,提高了效率

13楼已经更新,真正的九宫格游戏

14楼已经更新,正式版的九宫格游戏,增加了新功能

[ Last edited by moniuming on 2008-8-29 at 07:14 PM ]
第2楼 moniuming 发表于 2008-08-15 12:11
银牌会员 发帖 574 积分 1,335 来自 广西
已经更新为实现输入更改数字,更直观!!!


[ Last edited by moniuming on 2008-8-15 at 12:17 PM ]
第3楼 wgx1688 发表于 2008-08-15 14:19
初级用户 发帖 34 积分 60
捅一下~玩一下~爽~
第4楼 moniuming 发表于 2008-08-15 14:37
银牌会员 发帖 574 积分 1,335 来自 广西
其实这个游戏的BUG在于:当一行出现2个同样的数字时,无法更改其中的一个,这样就会出错
当一行中已经输入某个数字,而这个数字是错误的(当然不是重复的),可以把已经输入的数字用字母代替,然后再把它替换,比如:
某行中: 5 2 6 7 _ 1 + - 4 第9位的4应该在第8位,如果先把第8位更改为4,再想把第9位的4更改为其它的数字就无法实现了,正确的做法为先把第9位的4用字母代替,再把第8位改为4即可.(5 2 6 7 _ 1 + - 4==>5 2 6 7 _ 1 + - a==>5 2 6 7 _ 1 + 4 a)
第5楼 huahua0919 发表于 2008-08-15 14:39
银牌会员 发帖 780 积分 1,608
佩服你的精神。
第6楼 523066680 发表于 2008-08-16 10:47
银牌会员 发帖 1,133 积分 2,362
哈 我想到一个游戏模式
--确认/返回上一步
能不能用暂时储存,然后让用户有返回的余地
可能做起来会很麻烦吧 只是问问 如果能实现的话 很不错

我没敢面对你的代码。但
我愿意通过写模型的方式,为完善这个游戏尽一份绵薄之力

然后,如果时间允许,我也愿意为游戏结束后的庆祝特效尽一份力
希望大家一起帮忙协助完善这方面。可别只是我一个人做哈 这也是对自己的锻炼

[ Last edited by 523066680 on 2008-8-17 at 06:05 PM ]
第7楼 523066680 发表于 2008-08-17 18:01
银牌会员 发帖 1,133 积分 2,362
写了一个可返回的模型,希望能帮上忙,代码还是比较臃肿的
第8楼 moniuming 发表于 2008-08-17 23:49
银牌会员 发帖 574 积分 1,335 来自 广西
Originally posted by 523066680 at 2008-8-17 18:01:
写了一个可返回的模型,希望能帮上忙,代码还是比较臃肿的
第9楼 moniuming 发表于 2008-08-18 01:37
银牌会员 发帖 574 积分 1,335 来自 广西
借鉴523066680的代码(下面链接的31楼),做如下的更新,只提高了效率,未做功能上的改变
http://www.cn-dos.net/forum/viewthread.php?tid=42108&pid=292901&page=3&sid=F6pbks#pid292901
在此非常感谢523066680精彩的代码


[ Last edited by moniuming on 2008-8-18 at 02:07 AM ]
第10楼 flyinspace 发表于 2008-08-18 01:38
银牌会员 发帖 517 积分 1,206
提示:

Call :数独游戏原始模型生成

call :按表生成随机空格,并生成空格列表。

call :游戏表


假设

set "Table_00=123456789"
set "Table_01=123456789"
……
set "Table_09=123456789"

上面为实际答案。

下面就是 :

set "nTable_00=12_4_6789"
……
set "nTable_09=1_3__6__9"

如此,用户接受输入列表
自动生成。
set "ITable_00_=-"

生成序列:

假设用户修改第三行,第4列数字。
用户输入:34

程序判断:if "%ITable_02_3%"=="" (
echo "该数字所在位置为非空格"
goto :EOF
)
:reInput
set /p "ITable_02_3=请输入您要输入的值:"
call :验证输入是否正确,不正确直接返回:input
goto :EOF

[ Last edited by flyinspace on 2008-8-18 at 01:52 AM ]
第11楼 523066680 发表于 2008-08-18 08:28
银牌会员 发帖 1,133 积分 2,362
学到了一样东西 原来可以多重call啊 学习了!
第12楼 hearo 发表于 2008-08-19 23:39
新手上路 发帖 1 积分 2
楼上都是高手啊!1俺一大菜鸟什么都看不懂啊!!
第13楼 moniuming 发表于 2008-08-21 15:11
银牌会员 发帖 574 积分 1,335 来自 广西
看了这个帖子才知道真正的九宫格游戏原来是这样的,已经更新,谢谢 flyinspace.

http://www.cn-dos.net/forum/viewthread.php?tid=42306&sid=5zTDSe

由于要避免死循环的出现,代码臃肿,效率较低...
第14楼 moniuming 发表于 2008-08-29 19:08
银牌会员 发帖 574 积分 1,335 来自 广西
这个代码的核心部分用的是terse的代码,只作了一些小小的优化,避免了一些重复的返回,提高了一点儿效率
这应该是最后的更新了,增加了以下功能:
1.在一行和一列中不允许重复,如果输入错误请用任一字母过渡
2.对结果进行验证,如果正确会有一个无聊的小动画

欢迎大家测试


[ Last edited by moniuming on 2008-8-30 at 12:28 AM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023