dポイントプレゼントキャンペーン実施中!

下記のソースのようにマルバツゲームを作っています。
setMaruBatuの$xに横位置、$yに縦位置を入れて、$kに入れる記号の種類を指定します。0が何もない状態で、1がマルで、2がバツです。
この際、プレーヤーを交互に入れ替えて、順番じゃない人は打てないようにしたいのですが、どういったプログラムを書けば、そういったことができますでしょうか。
よろしくお願いします。

<?php
class MaruBatu{
private $board = array();
function __construct(){
for ($i=0; $i < 3; $i++) {
for($j =0; $j < 3; $j++){
$this->board[$j][$i] = 0;
}
}
}
function setMaruBatu($x, $y, $k){
if($this->board[$x][$y] == 0){
$this->board[$x][$y] = $k;
}
}
function showMaruBatu(){
for ($i=0; $i < 3; $i++) {
for($j =0; $j < 3; $j++){
print $this->board[$j][$i];
}
print '<br>';
}
}
}
?>

A 回答 (3件)

setMaruBatuの中でどっちがsetしたか持っておいて


function setMaruBatu($x,$y,$k){
if($this->turn === $k)
return 'dame';
$this->turn = $k;
if($this->board[$x][$y] == 0){
$this->board[$x][$y] = $k;
}
}


// マルのひと
$mb->setMaruBatu(0,0,1);
// この時点でturnは1

// 本来はバツのひとだけどマルのひとがまた呼んでみる
// turn(1)===1が真になりreturn 'dame'でそれ以降は実行されない
$mb->setMaruBatu(0,1,1);
// バツの人が呼ぶと
// turn(1) ===0で偽となり配列へのセットが実装される
$mb->setMaruBatu(0,1,2);

で、turnには2が入る

このくりかえし~
    • good
    • 0
この回答へのお礼

どっちがsetしたか投げて、それを受け取り次はもう一方のプレーヤーに交代するようにできました。
ありがとうございました。

お礼日時:2014/10/06 22:27

自分が打った後相手の入力フェーズが終わるまでajaxなどで定期的に


状態をとりにいく必要があるでしょう
    • good
    • 0
この回答へのお礼

ありがとうございます。
ajaxも今後使ってみます。

お礼日時:2014/10/06 22:23

んー?


ごれ画面から打てるの?

プレイヤーを交互に入れ替えるってプレイヤーの定義は?

この回答への補足

画面からは今のところ打てないです。
プレイヤーはマルとバツそれぞれいて、交互に打つという感じです。

補足日時:2014/09/29 23:01
    • good
    • 0
この回答へのお礼

説明不足にもかかわらず、ありがとうございました。

お礼日時:2014/10/06 22:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!