-
作业分析
- 作业可以理解成一个客户端服务器游戏的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个月 前看过以往自己教程的自己认真描述
- 怎么设计代码来减少行数完成这个任务?
- 有哪些理解上的坑,如何能理解之?