プレイヤーにターンを表示する
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によるマルチプレイヤーゲームを作ってみてください!
