第三个程序(猜数字自动化)
题目要求
- 唯一作业:
- 期待:
- 抽象你的自然思维
- 在尽可能短的代码行数中完成:无人介入的猜数游戏
- 最好能动画式演示游戏过程
- 要求:
- 基础: 用程序模拟出自己猜数的策略, 并进行检验
- 可用: 用自制的猜数AI, 和自己的游戏对战
- 合格: 猜数AI的游戏过程,可记录,可回放
- 天才: 猜数AI的游戏过程,可记录,可回放,可分享,加载...进一步的:
- 通过大量的游戏对战,统计自个儿AI 的能力?!
- 发布他人的AI 也可以接入的服务?
- 并行多组游戏?
- 怎么证明自个儿的 AI 策略是最优的?能用最少次数猜中?
- 教程期待:
- 向 6个月 前看过以往自己教程的自己认真描述
- 怎么设计代码来减少行数完成这个任务?
- 有哪些理解上的坑,如何能理解之?
- 一个非常有价值的隐藏任务:
解题思路
基本框架
- 创建模版(inport)
- 创建框架等(frame/timer)
- 注册事件(frame.set/frame.add)
- 定义全局变量(global)
- 调用事件(def)
- 创建辅助函数
- 开始(start Frame&Timer)
具体步骤
在“猜数字”游戏上进行修改
注册新事件(用时30分钟)
- 添加新的 button (逐步自动猜数字,全自动猜数字,回放 ai 战况等),根据需要添加新的 button 和 input。
def 新事件(用时1小时)
timer (用时2小时)
debug (用时3小时+)
详见 遇到并解决的问题
遇到并解决的问题
折腾过程:
详见代码库
[问题1]回放不是逐步的。
[问题2]该如何同时添加多个timer?
- 思路是 ai 猜数字回放、手动猜数字过程回放、ai 自动猜数字各一个timer。
[问题3]上下限的数字被填入时的 bug。
- Bug 已经解决,
- 思考:如何能自动化测试这种边界问题?
以免反复出现?
问题解决:
[问题1]回放不是逐步的。
将 timer 中的 for 语句用 if 代替得已解决。
[问题2]该如何同时添加多个timer?
[问题3]边界的自动化测试。
Tips
- 如何在代码中添加中文,有两种方法: ( 注意引号的位置。)
- u"中文字符"——用于句中。
- "中文字符\n"——用于句末,打印时自动添加一段空行。