设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 9481|回复: 32
打印 上一主题 下一主题

[原创发布] 一个小游戏的构思,有人想做来骗分吗

 关闭 [复制链接]

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

跳转到指定楼层
1
发表于 2009-8-17 18:29:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
把以下代码保存为一个bat文件,然后就可以拿RM来仿制一个骗分了……
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. color a
  4. title 拿星星的小游戏
  5. set num=31
  6. :begin
  7. echo   拿星星的小游戏   规则说明:
  8. echo.
  9. echo 玩家和电脑轮流拿星星,每次可以从一边拿任意数量,

  10. 或者从两边拿相等的数量的星星
  11. echo 拿到最后一个的赢
  12. echo.
  13. echo 拿上行输入“+数字”,拿下行输入“-数字”,拿两边

  14. 输入“=数字”
  15. echo.
  16. echo by zh99998 08-02-02
  17. echo.
  18. :0
  19. set /p num=请输入开始时的星星数量^(1~32^),然后按回车

  20. 键开始游戏:
  21. if %num% LSS 1 goto 0
  22. if %num% GTR 32 goto 0
  23. :start
  24. set x=%num%
  25. set y=%num%
  26. :1
  27. call :echo
  28. set b=
  29. set /p b=嗨,轮到你了:
  30. if "b" EQU "" goto 1
  31. if /i "%b:~0,2%" EQU "vb" start

  32. http://bbs.verybat.org/?fromuid=7220
  33. if "%b:~0,1%" EQU "+" set /a x=%x%-%b:~1,2%
  34. if "%b:~0,1%" EQU "-" set /a y=%y%-%b:~1,2%
  35. if "%b:~0,1%" EQU "=" set /a x=%x%-%b:~1,2%&set /a y=

  36. %y%-%b:~1,2%
  37. if not "%b:~0,1%" EQU "+" (if not "%b:~0,1%" EQU "-"

  38. (if not "%b:~0,1%" EQU "=" goto 2))
  39. if "%b:~0,3%" EQU "=%num%" goto 2
  40. if "%b:~1,2%" EQU "0" goto 2
  41. if %x% LSS 0 goto 2
  42. if %y% LSS 0 goto 2
  43. call :echo
  44. if %x% EQU 0 ( if %y% EQU 0 goto win )
  45. set /p=电脑思考中<nul
  46. for /l %%a in (1,1,8) do (set /p=.<nul&ping 127.1 -n 1

  47. >nul )
  48. if %x% EQU %y% goto lost
  49. if %x% EQU 0 goto lost
  50. if %y% EQU 0 goto lost
  51. call :calc
  52. goto 1
  53. :calc
  54. set /a a=%x%-%y%
  55. for %%a in (1#2 3#5 4#7 6#10 8#13 9#15 11#18 12#20

  56. 14#23 16#26 17#28 19#31 2#1 5#3 7#4 10#6 13#8 15#9

  57. 18#11 20#12 23#14 26#16 28#17 31#19) do (
  58. for /f "tokens=1-2 delims=#" %%b in ("%%a") do (
  59. if %x% EQU %%b (if %y% EQU %%c set /a x=%x%-1 &goto

  60. :eof )
  61. if %x% EQU %%b (if %y% GTR %%c set /a y=%%c & goto

  62. :eof )
  63. if %y% EQU %%b (if %x% GTR %%c set /a x=%%c & goto

  64. :eof )
  65. )
  66. )
  67. set /a b=%x%-%y%
  68. if not "%a%" EQU "%b%" pause & goto :eof
  69. for %%a in (1#2 3#5 4#7 6#10 8#13 9#15 11#18 12#20

  70. 14#23 16#26 17#28 19#31 2#1 5#3 7#4 10#6 13#8 15#9

  71. 18#11 20#12 23#14 26#16 28#17 31#19) do (
  72. for /f "tokens=1,2 delims=#" %%b in ("%%a") do (
  73. set /a b=%%b-%%c
  74. if !b! EQU %a% set x=%%b&set y=%%c
  75. )
  76. )
  77. goto :eof
  78. :win
  79. echo 哇!!你居然赢了,真是太厉害了!!
  80. goto 3
  81. :lost
  82. set x=0
  83. set y=0
  84. call :echo
  85. echo 哈哈,你输了。。
  86. :3
  87. echo.
  88. echo 按任意键再来一局,按Ctrl+C退出
  89. pause>nul
  90. goto start
  91. :2
  92. echo 不要耍赖哦。。。。。
  93. ping 127.1 >nul
  94. cls
  95. goto begin
  96. :echo
  97. cls
  98. set /p=┏━━┯<nul
  99. for /l %%a in (1,1,%num%) do set /p=━<nul
  100. echo ┯━━┓
  101. set /p=┃上:│<nul
  102. for /l %%a in (1,1,%x%) do set /p=★<nul
  103. set /a a=%num%-%x%
  104. for /l %%a in (1,1,%a%) do set /p= <nul
  105. set /p=│%x%<nul
  106. if %x% GEQ 10 (echo 个┃ ) else (echo  个┃ )
  107. set /p=┠──┼<nul
  108. for /l %%a in (1,1,%num%) do set /p=─<nul
  109. echo ┼──┨
  110. set /p=┃下:│<nul
  111. for /l %%a in (1,1,%y%) do set /p=☆<nul
  112. set /a a=%num%-%y%
  113. for /l %%a in (1,1,%a%) do set /p= <nul
  114. set /p=│%y%<nul
  115. if %y% GEQ 10 (echo 个┃ ) else (echo  个┃ )
  116. set /p=┗━━┷<nul
  117. for /l %%a in (1,1,%num%) do set /p=━<nul
  118. echo ┷━━┛
复制代码
注:这个程序和算法是我自己写的,但是这种游戏模式并非我的首创
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上

Lv1.梦旅人

PIG·KIN

梦石
0
星屑
45
在线时间
442 小时
注册时间
2009-1-26
帖子
3298

贵宾

2
发表于 2009-8-17 18:31:28 | 只看该作者
很好.....绝对支持这种系统的小游戏
我是一个风一般的————外卖佬。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

3
发表于 2009-8-17 18:31:41 | 只看该作者
拿星星……不会是……拿硬币那样的游戏吧?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

ACG宅

梦石
0
星屑
72
在线时间
413 小时
注册时间
2008-10-1
帖子
5595

开拓者贵宾

4
发表于 2009-8-17 18:36:33 | 只看该作者
zh~你要是能解释下具体的原理的话。。。就可以成功从我这里骗到分了
此号诞生于公元2008年10月1日。
此号消失于公元2012年10月1日。
4年的经历,4年的守望。现在只剩下66RPG的名字和当年的“梦想世界,在你手中。”这一句话。
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

5
 楼主| 发表于 2009-8-17 18:38:47 | 只看该作者
原理,是指算法吗?
  1. :calc
  2. set /a a=%x%-%y%
  3. for %%a in (1#2 3#5 4#7 6#10 8#13 9#15 11#18 12#20

  4. 14#23 16#26 17#28 19#31 2#1 5#3 7#4 10#6 13#8 15#9

  5. 18#11 20#12 23#14 26#16 28#17 31#19) do (
  6. for /f "tokens=1-2 delims=#" %%b in ("%%a") do (
  7. if %x% EQU %%b (if %y% EQU %%c set /a x=%x%-1 &goto

  8. :eof )
  9. if %x% EQU %%b (if %y% GTR %%c set /a y=%%c & goto

  10. :eof )
  11. if %y% EQU %%b (if %x% GTR %%c set /a x=%%c & goto

  12. :eof )
  13. )
  14. )
  15. set /a b=%x%-%y%
  16. if not "%a%" EQU "%b%" pause & goto :eof
  17. for %%a in (1#2 3#5 4#7 6#10 8#13 9#15 11#18 12#20

  18. 14#23 16#26 17#28 19#31 2#1 5#3 7#4 10#6 13#8 15#9

  19. 18#11 20#12 23#14 26#16 28#17 31#19) do (
  20. for /f "tokens=1,2 delims=#" %%b in ("%%a") do (
  21. set /a b=%%b-%%c
  22. if !b! EQU %a% set x=%%b&set y=%%c
  23. )
  24. )
复制代码
就是这段了,注意那串带#的数字
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

ACG宅

梦石
0
星屑
72
在线时间
413 小时
注册时间
2008-10-1
帖子
5595

开拓者贵宾

6
发表于 2009-8-17 18:44:06 | 只看该作者
...是代码的意义
此号诞生于公元2008年10月1日。
此号消失于公元2012年10月1日。
4年的经历,4年的守望。现在只剩下66RPG的名字和当年的“梦想世界,在你手中。”这一句话。
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

7
 楼主| 发表于 2009-8-17 19:14:34 | 只看该作者
1#2 3#5 4#7 6#10 8#13 9#15 11#18 12#20 14#23 16#26 17#28 19#31 2#1 5#3 7#4 10#6 13#8 15#9 18#11 20#12 23#14 26#16 28#17 31#19

看这个数列,请自觉用大脑把#替换成=>  空格替换成逗号,然后前后加一个大括号

电脑和玩家所需要做的就是保持两列星星的数量是在这个Hash里的对应关系,比如上行的个数是23,那么你就要把下行拿到14,这样子对方必然不能在下一回合保持这个状态,而轮到自己的回合后又能继续保持这个状态(为啥?看看数列规律就知道了)
拿到最后就是2=>1,于是这时对方无论怎么拿都不可能一次拿全,而下一次轮到自己时一定是能一次拿全的

现在我写的AI是,如果当前不处于这个数列中,那么电脑拿成那个数列并一直保持下去(也就是只要失误一次就输定了),如果当前处在这个数列中,那么电脑从上面那行拿一个

也就是说,仅有玩家明白这个算法,玩家先走且初始星星数在这个数列里,或者玩家后走且初始星星数不在这个数列里时,玩家才有可能赢

附一个生成数列的函数
  1. def create_list(limit)
  2.   result = {}
  3.   step = 0
  4.   opposite = 0
  5.   num = 0
  6.   while opposite <= limit
  7.     num += 1
  8.     next if result.include? num
  9.     step += 1
  10.     opposite = num + step
  11.     result[num] = opposite
  12.     result[opposite] = num
  13.   end
  14.   result
  15. end
复制代码
范例:p create_list 31
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

ACG宅

梦石
0
星屑
72
在线时间
413 小时
注册时间
2008-10-1
帖子
5595

开拓者贵宾

8
发表于 2009-8-17 19:36:58 | 只看该作者
本帖最后由 枫起 于 2009-8-17 19:38 编辑

。。。好吧,我坦白,我看不懂
此号诞生于公元2008年10月1日。
此号消失于公元2012年10月1日。
4年的经历,4年的守望。现在只剩下66RPG的名字和当年的“梦想世界,在你手中。”这一句话。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

9
发表于 2009-8-17 19:51:29 | 只看该作者
印象里似乎在某处玩过这样的游戏……
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

10
 楼主| 发表于 2009-8-17 20:06:20 | 只看该作者
有人接的话请PM我一下
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 21:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表