Skip to content

Latest commit

 

History

History
79 lines (62 loc) · 2.79 KB

第三个程序——猜数字自动化.md

File metadata and controls

79 lines (62 loc) · 2.79 KB

#第三个程序(猜数字自动化) ##题目要求

  • 唯一作业:
    • 猜数游戏AI版
  • 期待:
    • 抽象你的自然思维
    • 在尽可能短的代码行数中完成:无人介入的猜数游戏
    • 最好能动画式演示游戏过程
  • 要求:
    • 基础: 用程序模拟出自己猜数的策略, 并进行检验
    • 可用: 用自制的猜数AI, 和自己的游戏对战
    • 合格: 猜数AI的游戏过程,可记录,可回放
    • 天才: 猜数AI的游戏过程,可记录,可回放,可分享,加载...进一步的:
      • 通过大量的游戏对战,统计自个儿AI 的能力?!
      • 发布他人的AI 也可以接入的服务?
      • 并行多组游戏?
      • 怎么证明自个儿的 AI 策略是最优的?能用最少次数猜中?
  • 教程期待:
    • 向 6个月 前看过以往自己教程的自己认真描述
    • 怎么设计代码来减少行数完成这个任务?
    • 有哪些理解上的坑,如何能理解之?
  • 一个非常有价值的隐藏任务:
    • 如何能自动化测试这种边界问题?
    • 以免反复出现?

解题思路

  • 猜数字游戏教程见第一节 第一个程序——猜数字

  • 猜数字策略——二分法

  • 自动化——将二分法生成的数字代替人机互动的输入的数字与随机数比较

    • 思考过程

      这里是否要设置timer?
      今天进行了尝试,有一个已经可用该如何同时添加多个timer?
      
  • 可记录、可回放——创建列表,timer。

基本框架

  • 创建模版(inport)
  • 创建框架等(frame/timer)
  • 注册事件(frame.set/frame.add)
  • 定义全局变量(global)
  • 调用事件(def)
  • 创建辅助函数
  • 开始(start Frame&Timer)

具体步骤

略(参见基本框架和前两节的教程内容)

遇到并解决的问题

折腾过程:

详见代码库

[问题1]回放不是逐步的。
[问题2]该如何同时添加多个timer?
  • 思路是 ai 猜数字回放、手动猜数字过程回放、ai 自动猜数字各一个timer。
[问题3]上下限的数字被填入时的 bug。
  • Bug 已经解决,
  • 思考:如何能自动化测试这种边界问题? 以免反复出现?

问题解决:

[问题1]回放不是逐步的。

将 timer 中的 for 语句用 if 代替得已解决。

[问题2]该如何同时添加多个timer?
[问题3]边界的自动化测试。

Tips

  • 如何在代码中添加中文,有两种方法: ( 注意引号的位置。)
    • u"中文字符"——用于句中。
    • "中文字符\n"——用于句末,打印时自动添加一段空行。