# 請教 game 本身與 ai程式的互動
從影片說明的一張圖表看來
game 每一 frame 更新都會和 ai程式的 update() 互動
可是我照著新版說明把程式 key 進去
發現打磚塊的板子都沒有移動
最簡單的在每個 method 上加了log
結果是這樣
```
===========Game is started at 2023-01-05 08:59:30.033772===========
1P
axl-init
axl-update
AI Client ends
Warning: The object queue for the process '1P' is full. Drop the oldest object.
Warning: The object queue for the process '1P' is full. Drop the oldest object.
Warning: The object queue for the process '1P' is full. Drop the oldest object.
Warning: The object queue for the process '1P' is full. Drop the oldest object.
...
以下略(相同的warning應該有一兩百行)
```
update只有進去一次
reset都沒有
而且好像 ai程式就結束了
請問這是哪兒出了問題
版本問題 ? 還是少了什麻設定 ?
麻煩提點了, 謝謝 ~~
我的環境是 mac, python版本如下
```
> python --version
Python 3.9.6
> python -m mlgame -v
10.0.1
```
ai程式碼 :
```python
"""
The template of the main script of the machine learning process
"""
import os
import pickle
from datetime import datetime
class MLPlay:
def __init__(self, ai_name, *args, **kwargs):
"""
Constructor
"""
print(ai_name)
print("axl-init")
self.scene_info = []
self.commands = []
self.data = {"scene_info":[], "command": []}
self.ball_served = False
self.previous_ball = (0, 0)
self.pred = 100 #預設板子位置為100
self.platform_y = 400 #板子y位置
self.ball_speedy = 7 #frme球在y軸向移速度為+-7
self.platform_width = 200 #板寛
def update(self, scene_info, *args, **kwargs):
"""
Generate the command according to the received `scene_info`.
"""
# Make the caller to invoke `reset()` for the next round.
print("axl-update")
if (scene_info["status"] == "GAME_OVER" or
scene_info["status"] == "GAME_PASS"):
return "RESET"
if not self.ball_served:
self.ball_served = True
self.previous_ball = scene_info["ball"]
command = "SERVE_TO_RIGHT"
else: # rule code
print("axl-move-left")
command = "MOVE_LEFT"
self.scene_info.append(scene_info)
self.commands.append(command)
self.previous_ball = scene_info["ball"]
return command
def reset(self):
"""
Reset the status
"""
print("axl-reset")
self.ball_served = False
self.data["scene_info"] = self.scene_info
self.data["command"] = self.commands
filepath = "log/"
if not os.path.exists(filepath):
os.makedirs(filepath)
with open(os.path.join(os.path.dirname(__file__), \
'log/scene_info_{:%Y_%m_%d_%H_%S}.pickle'.format(datetime.now())), \
'wb') as f:
pickle.dump(self.data, f)
print("axl-dump")
```