python开智书

作业总结

  • 作业分析

    • 作业可以理解成一个客户端服务器游戏的demo 当然可以用同不同的对象在一个进程中模拟,但那样没挑战。
    • ai是客户端(可以理解成外挂之类)
    • 服务器可以对各种ai同时服务
  • 难点分析

    • python的进程间通信的方法,找一个简单的实现方案
    • 发现有一个multiprocessing比较适用这个场景 http://stackoverflow.com/questions/6920858/interprocess-communication-in-python 选取了Client和Listener通信这个例子。Client完成建立连接,UI动画。服务器端主进程监听连接,每接到一个客户端请求,建立一个子进程来处理这个Cient的游戏任务。
    • 用class的方式模块化代码
  • 客户端服务器交互约定

    • 游戏过程类似自然语言的游戏过程,a给出一个数字,b回复大,小,或者猜中。 游戏中交互
      client request: number
      server response: result(big,small,hit)

    • 后面发现,一个客户端需要同时重玩多局,需要一个类似重新开局的过程,增加 游戏开局
      client request: begin
      client response: ok

  • 目标

    • Server和Client连接框架
    • ai多策略实现和切换
    • 将client记录转化动画,回放支持
    • 研究分享和加载,待完成
  • 心得

    • 对python基础知识的缺乏,使用的时候去查,有时容易打断编码思路,常用知识点还是要过一遍,形成使用经验
    • 完成一个小节点提交代码到github,回顾的时候确实能发现自己的轨迹,挺有趣
    • 多进程调试的时候有卡顿,但仔细弄懂用法以后,打印日志来定位,还是比其它的语言简单优雅

附作业题目

  • 自学课程:https://class.coursera.org/interactivepython2-002/lecture
    • Week 6a Classes
    • Week 6b Tiled images
  • 唯一作业:
    • 猜数游戏AI版
  • 期待:
    • 抽象你的自然思维
    • 在尽可能短的代码行数中完成:无人介入的猜数游戏
    • 最好能动画式演示游戏过程
  • 要求:
    • 基础: 用程序模拟出自己猜数的策略, 并进行检验
    • 可用: 用自制的猜数AI, 和自己的游戏对战
    • 合格: 猜数AI的游戏过程,可记录,可回放
    • 天才: 猜数AI的游戏过程,可记录,可回放,可分享,加载...进一步的:
      • 通过大量的游戏对战,统计自个儿AI 的能力?!
      • 发布他人的AI 也可以接入的服务?
      • 并行多组游戏?
      • 怎么证明自个儿的 AI 策略是最优的?能用最少次数猜中?
  • 教程期待:
    • 向 6个月 前看过以往自己教程的自己认真描述
    • 怎么设计代码来减少行数完成这个任务?
    • 有哪些理解上的坑,如何能理解之?