*** ゲームのやり方は以下の通りです。 0. ソースをコンパイル $ make 1. サーバを起動 (ポートは適当に指定、デフォルトは 10000) $ ./rvserver -p 12321 2. 別ターミナルでクライアントを起動 (サーバのホストを指定) $ ./mak -h localhost -p 12321 $ ./mak -h localhost -p 12321 *** rvserver には以下のオプションが指定できます。 ./rvserver -p <ポート = 10000> -c <セット数(4の倍数) = 4> -t1 <前半の試合時間(ms) = 30000> -t2 <後半の試合時間(ms) = 300000> ex) $ ./rvserver -p 12321 -c 8 *** rvclient モジュールを組み込んだ実行ファイルは以下のオプションが指定できます。 ./??? -h <ホスト = localhost> -p <ポート = 10000> -i ex) $ ./mak -h somewhere.somedomain -p 12321 *** サンプルクライアントプログラム open Reversi open Rvclient let rec loop () = (* イベントを待つ *) match get () with (* ゲーム開始 (相手の名前) *) | Game_start id -> loop () (* ゲーム終了 (true:自分の勝ち, false:負け) *) | Game_end win -> () (* セット開始 (自分の石の色 * 持ち時間) *) | Set_start (clr, rst) -> loop () (* セット終了 (自分の石の数 * 敵の石の数) *) | Set_end (slf, opp) -> loop () (* 手番 (盤面などの状態) *) | Next state -> (* state = { board: stone list list; (* 盤面 *) color: color; (* 自分の石の色 *) rest: int; (* 残り時間 (単位 ms) *) history: (Reversi.color * int * int) list; (* 棋譜 (リストの先頭: 最後に打った石の色と位置) *) } *) let brd = transform state.board in (* ... 打つ手を決める ... *) (* 打つ *) put x y; (* 次のイベントを待つ *) loop () let _ = (* 初期化 (自分の ID) *) init "mak"; (* イベントループ *) loop ()