プレイヤーにターンを表示する
public function onPlayerTurn():void { // show the turn indicator m_showingTurn = true; addChild(m_turnSprite); }
このメソッドはPulseGame
オブジェクトから呼び出されます。サーバから次はどのプレイヤーのターン(番)か指示されたとき、そのプレイヤーに「Your Turn」スプライトを表示します。
プレイヤーが手を指せるようにする
private function playAction(event:MouseEvent):void { var gc:GameClient = PulseGame.getInstance().getGameClient(); if (gc.isMyTurn() == true) { var selectedSprite:TictactoeHotspot; selectedSprite = event.target as TictactoeHotspot; if ( selectedSprite == null ) return; var xPos:int = selectedSprite.col; var yPos:int = selectedSprite.row; if(m_hotspotArray[xPos][yPos].value == 0) { m_tictactoeGame.sendGameState(xPos, yPos, m_putValue); m_showingTurn = false; removeChild(m_turnSprite); } } }
マウスクリックに対して、いくつかのチェックを行います。最初に、本当にそのプレイヤーの番か確認し、そうでなければ無視します。次に、クリックされた場所が空の(有効な)スポットか確認し、すべてのチェックにパスすれば、プレイヤーのアクションをサーバに送り、サーバからゲーム状態がそのプレイヤーと対戦相手に送られてきます。
プレイヤーのアクションをクライアントが受け取ると、TictactoeGame
(上のコードを参照)オブジェクトが次のメソッドを呼び出します。今回の実装では、画面を更新し、ゲームに勝ったか、負けたか、または引き分けたかだけをチェックしています。
public function onPlayerMoved(gameState:GameStateClient):void { var putMsg:PutClient = gameState as PutClient; showSprite(putMsg.getPutRow(), putMsg.getPutColumn(), putMsg.getPutValue()); checkGameEnd(); }
基本的な仕組みは以上です。ぜひ皆さんも、Flashによるマルチプレイヤーゲームを作ってみてください!