2016-11-15 7 views
0

私は後でBlackJackカードゲームを作成する複数のクラスに分割するクラスがあります。私はデッキを作成し、正しく説明しました。私は私のメソッド "deal"でプレーヤー配列の出力に問題があります。出力には1人のプレーヤーしか表示されませんが、出力の配列は2つ戻されます。私のデッキから欠落しているカードの数は、4枚のカードを失っていることを示しています.2名のカードを2枚扱っているので意味があります。誰かが私の両方のプレーヤーに戻って、それぞれのカードの両方を表示するのを手伝ってもらえますか?私の配列の出力に問題があります

for($i = 0; $i < $number; $i++){ 
    for($j = 0; $j < $numberOfPlayers; $j++){ 
    $this->player[$j] = $this->cards[0]; // <--- fix me! 
    array_shift($this->cards); 
    } 
} 

その外側のループが再び周りになると、それだけでまっすぐに上書き:ここ

<?php 
/* creating a deck of cards class to be used in a blackJack game*/ 

class Deck{ 

    public $cards = array(); 
    public $player = []; 

    //creates an instance of a deck of cards (works) 
    public function __construct(){ 
    $values =array('2','3','4','5','6','7','8','9','10','J','Q','K','A'); 
    $suits =array('Diamond','Club','Heart','Spade'); 
     foreach ($suits as $suit) { 
     foreach($values as $value){ 
      $this->cards[] = "$value of $suit's"; 
      //$deck = $this->cards; 
     } 
     } 
    } 



    /*add more decks to increase number of total cards 
    in my array (works)*/ 

    public function numberOfDecks($number){ 

    $cards = $this->cards; 

    $this->number = $number; 
     for($i = 0 ; $i < $number-1; $i++){ 
      $this->cards = array_merge($this->cards, $cards); 
    } 
    return $cards; 
    } 

    /*adding elements to a player as expected need to return multiple players and their cards multiple players (does not currently work)*/ 

    public function deal($numberOfPlayers){ 

    $this->numberOfPlayers = $numberOfPlayers; 
    $player = $this->player; 
    $number = 2; 

    for($i = 0; $i < $number; $i++){ 
     for($j = 0; $j < $numberOfPlayers; $j++){ 
     $this->player[$j] = $this->cards[0]; 
     array_shift($this->cards); 
     } 
    } 
    for($k = 0; $k < $numberOfPlayers; $k++) 
     return $player[$k]; 
    } 
} 



$deck = new Deck();//works as expected 
$deck->numberOfDecks(3);//works as expec 
$shuffled = shuffle($deck->cards);//works as expected 
$deck->deal(2); 
var_dump($deck); 

は、私は現在、問題はここでは、この塊であるバック enter image description here

+0

最後にvar_dumpを 'echo $ deck-> player [0]に置き換えてください。"
"; echo $ deck-> player [1]; ' –

答えて

1

を取得しています出力されます発行されたカード。そこにちょうど1(繰り返し上書き)カードというのではなく、各プレイヤーのための配列に

for($i = 0; $i < $number; $i++){ 
    for($j = 0; $j < $numberOfPlayers; $j++){ 
    $this->player[$j][] = $this->cards[0]; // <- push into an array 
    array_shift($this->cards); 
    } 
} 

この1の作成やカードをプッシュ:このような何かを試してみてください。

関連する問題