0

こんにちは皆さん、私はPHPが初めてで、助けていただければ幸いです

私は現在、ブラック ジャック ゲームを構築しており、配列の値がブラウザーに表示される方法について助けが必要です。現在、カードの配列は次のように設定されています。

  private $suits = array('Clubs', 'Diamonds', 'Hearts', 'Spades');
private $cards = array(
'Ace'=> 1, 
2 => 2, 
3 => 3, 
4 => 4, 
5 => 5, 
6 => 6, 
7 => 7, 
8 => 8, 
9 => 9, 
10 => 10, 
'Jack' => 10, 
'Queen'=>10, 
'King'=>10);

想定されていることを実行し、必要な方法で計算を実行します。ジャック、クイーン、キングに必要な値を与えるため、キングが 7 とペアになっている場合は 17 が加算されます。これに関する私の問題は、ブラウザでジャック、クイーン、キングが「10」と表示されることです。文字列と一緒に表示されるのではなく、考慮されていないように見えます。数値を失うことなく、代わりに文字列を表示する方法があるかどうかを知りたいです。このように反転してみました

10 => 'King',

そして、これを行うとキングが表示されますが、数値は考慮されないため、7の人はキングの人に勝ちます。

どんな助けでも大歓迎です...ありがとう

編集*

私は完全なコードを追加しています.4つの異なるphpファイルがあります.

Card.php

    class Card
    {
    private $suit;
    private $figure;


    public function __construct($Suit, $Fig) {
            $this->suit   = $Suit;
            $this->figure = $Fig;
    }

    public function __toString() {
            return $this->figure . ' of ' . $this->suit;
    }

    public function getFigure() {
            return $this->figure;
    }

    public function getCard() {
            echo $this->figure . " of " . $this->suit . ".<br />";
    }
    }

Deck.php

     abstract class Deck
    {
protected $arrCards; 
protected $listOfCards;

/* abstract methods force classes that extends this class to implement them */
abstract public function dealCard(); //all classes that will inherit will inherit this method


/* already implemented methods */
public function __construct($Cards) {
    $this->arrCards = $Cards;
}

public function shuffleCards() {
    shuffle($this->arrCards);
}

public function listCards() {
    foreach($this->arrCards as $Card) {
        echo $Card . '<br />';
    }
}

    }

EnglishDeck.php

    include_once "Deck.php"; 
    include_once "Card.php"; 

    class EnglishDeck extends Deck
    {   

private $suits = array('Clubs', 'Diamonds', 'Hearts', 'Spades');
private $cards = array( 
    1=> 'Ace', 
    2=> '2' , 
    3 => '3',
    4 => '4', 
    5=> '5' , 
    6 => '6',
    7 => '7',
    8=> '8' , 
    9 => '9',
    10 => '10',
    10 =>'Jack', 
    10=>'Queen', 
    10=>'King'
    );


public function dealCard() {
    return array_pop($this->arrCards);
}

public function __construct() {
    $Cards = $this->initEnglishDeck();
    parent::__construct($Cards);
}

function initEnglishDeck() {
    $arrCards = array();

    foreach($this->suits as $Suit) {
        foreach ($this->cards as $Card) {
            $arrCards[] = new Card($Suit, $Card);
        }

    }
    return $arrCards;
}

    }

cardgame.php

    include_once "Card.php";
    include_once "EnglishDeck.php";


   $oBaraja = new EnglishDeck(); 
   $oBaraja->shuffleCards();


   //PLAYER 1
  $oP1card1  = $oBaraja->dealCard();
  echo("Player one has " . $oP1card1);

  $oP1card2  = $oBaraja->dealCard();
  echo(" and a " . $oP1card2 );

  echo "<br>";

  //PLAYER 2
 $oP2card1  = $oBaraja->dealCard();
 echo("Player two has " . $oP2card1);

 $oP2card2  = $oBaraja->dealCard();
 echo(" and a " . $oP2card2);

 //Player Variables when cards are added together
$oPlayer1 = (string)$oP1card1 + (string)$oP1card2;
$oPlayer2 = (string)$oP2card1 + (string)$oP2card2;


echo "<br />";

if($oPlayer1 > $oPlayer2){
     echo "Player 1 wins";
} else if ($oPlayer1 < $oPlayer2) {
    echo "Player 2 wins";
} else {
   echo "it's a tie";
}

これはブラウザに次のように表示されます。

プレーヤー 1 は 10 個のハートと 2 個のクラブを持っています プレーヤー 2 は 10 個のハートと 3 個のハートを持っています プレーヤー 2 が勝ちます

問題は、10 代のうちの 1 人がキング/クイーン/ジャックであるべきだったことです。

4

1 に答える 1