多人連線貪吃蛇(Python WebSocket 伺服器 + pygame 客戶端)。
- 安裝套件(Python 3.9+)
pip install pygame pygame-menu websockets torch numpy - 啟動伺服器
python3 snake_server.py - 啟動客戶端
python3 snake_gui.py
- 選擇名稱、房間(
room-1~room-20)與伺服器 IP 後加入。 - 操作:
WASD或方向鍵。 - 主機可按
SPACE或START開始。 - 等待中畫面會提示開始資訊。
- 地圖:
50 x 50 - 房間數:
20 - 每房上限:
10 - 伺服器 Tick:
15Hz - 食物最多同時
3個 - 遊戲開始時:只要有人類玩家,固定會有
1隻 AI 一起玩(AI) - 當所有人類都死亡後:若仍有 AI 存活,才會補上
AI2進行 AI 對戰 - 若當下沒有 AI 存活:不會補新 AI,直接結算
- 勝者顯示為玩家名稱(含
AI/AI2),以最高分決定 - 每局結束後,所有玩家分數會重設為
0
stress_test.py 會建立多個無視窗客戶端,隨機進房並持續送出隨機方向輸入。
範例:
python3 stress_test.py --count 50 --uri ws://127.0.0.1:8765
可選參數:
--room-count:隨機房間範圍(預設20)--input-hz:每個壓測客戶端送輸入頻率(預設10)
可在尚未 join 房間前直接查詢所有房間目前人數。
- 請求:
{"t":"room_stats_req"} - 回應:
{"t":"room_stats","rooms":[...]}
rooms 內每個物件欄位:
room_id:房間 ID(例如room-1)status:IDLE / WAITING / RUNNING / FINISHEDconnected_players:目前連線中的玩家數(真人 + AI 全部分開計)display_players:顯示用玩家數(若無真人,AI/AI2 合併顯示為1;否則與connected_players相同)used_slots:目前占用名額(與 serverROOM_FULL判斷一致)capacity:房間上限available_slots:剩餘可加入名額