- 帖子
- 508
- 积分
- 1490
- 技术
- 87
- 捐助
- 0
- 注册时间
- 2008-7-17
|
本帖最后由 qzwqzw 于 2011-3-29 09:38 编辑
程序写的非常不错!
有此功底很不简单。
还有几个问题
积分计算还有些问题
比如在一方还有75分时
系统即判定这一方为负
——————————
应该是下面这句的问题
for %%i in (!%~1:~1,1!) do if !score%%i! lss 0 set over=1
改为下面这样就可以了
for %%i in ("!%~1:~1,1!") do if !score%%~i! lss 0 set over=1
另外从全文中看不出特意指定over变量的意义
应该可以直接在lss 0后显示信息并退出
退出前最后加pause暂停或者是否重开的选择
在玩家(犀利哥)为原告或证人时
不论如何输入
都会继续有罪审判流程
——————————
应该是call :input 原告 的问题
程序在:input中 goto :eof跳转是没有用的
仍然回到了审判主流程
所以应该使用一个全局性的有罪标记来决定流程走向
另外看到:input中goto :eof经常成对使用
这应该是没有意义的
而goto :here却不是每段都有
感觉很奇怪
所以有时候在玩家作为证人或加减输入错误时
不会提示重新输入
程序判断逻辑需要继续完善
根据利益最大化原则
要让自己尽量少受损失多得利益
要让对手尽量多受损失少得利益
有几种情况需要考虑
1
当对手A同为被审判者、法官和加减官时
A会被判有罪但不仅不会处罚反而会奖励
这时本身作为花样官或轻重官
就不能选择最大倍数
而应选择最小倍数
2
当对手A为高分(比如350)
对手B为低分(比如30)
在A为被审判者B为法官或警察
这时本身作为原告、证人、加减、花样或轻重
就应该选择最小惩罚
而非最大惩罚
最后建议将花样官的积分策略改变一下
*1到*5的倍数有些大了
很多情况下通常一个判罚就可能淘汰对手
这就丧失了游戏的平衡性了
可以将花样官的判罚移至最后(即轻重官之后)
改为提取或去除当前惩罚积分的某一位
比如150去掉十位得到10
或者去掉百位得到50
作为最后的惩罚积分
这样不仅增加了游戏平衡性
也使前后玩家可以相互制约
促使玩家根据现实情况选择最有利于自身的策略
而不是仅仅选择最高和最低的分值和倍数
从而也提高了游戏的趣味性 |
|