2
我正在編寫井字遊戲服務器的簡單實現(通過telnet)。任務 - 玩家連接到服務器,在發送START之後,服務器查找輸入START的夥伴,遊戲開始。一段代碼:Ocaml Lwt - 多人遊戲的一些實現
let handle_income() =
let con = Lwt_unix.accept sock in
con >>= fun (cli, addr) ->
let player = Lwt.return {state = Sleeping; descriptor = Lwt.return cli} in
send_to_client player "Welcome to the server. To start game type in START and press Enter";
player;;
let rec make_ready player =
player >>= fun {state; descriptor} ->
send_to_client player "Waiting for start command";
let answer = read_from_client player in
answer >>= fun str ->
match str with
|"Start" ->
let ready_client = Lwt.return { state = Ready; descriptor = descriptor} in
ready_client
| _ ->
send_to_client player "Unknown command. try again";
make_ready player;;
我完全新的ocaml的(LWT尤其是)。那麼,你會如此友善,給我一些建議,讓玩家開始尋找其他玩家?我應該使用列表與所有時間迭代檢查球員狀態,等待第二個玩家鍵入開始(我不知道這是可能的),Lwt wakers,Lwt廣播的高級功能,創建另一個'Lwt至極是睡眠,直到有2 Lwt.t球員或什麼?我不知道如何實現這個最聰明的方法。非常感謝。
謝謝。 Lwt_mvar使代碼更加冗長,非常方便。 –