блэкджек карточная игра переполнение стека

Мне нужно поработать над примером карточной игры в блэкджек на PHP … Я нашел несколько примеров и попытался построить свой код на их основе, но пока не успешно … На данный момент я создал класс и две функции для соберите колоду из 52 карт, а затем с помощью ‘shuffle’ выберите случайную карту из нее. Я все еще экспериментирую, но я не мог повторить (или напечатать) эту одну случайную карту. Ваши советы будут очень благодарны! Вот мой код …

<?php
/*This class contains a function that sets an array of
* 4 suits, 13 faces and return a deck of 52 cards with var_dump
*/
Class Deck {
public $suits = array ('Spades', 'Hearts', 'Clubs', 'Diamonds');
public $faces = array("A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K");
public $deck = array();
public $card;
public $value=0;


public function __construct() {

//This function will build a simple 52 card deck for me
foreach($this->suits as $suit) {
foreach($this->faces as $face) {
//I introduce a local variable $value to hold a score Number of a card

$value = $face;

if(!is_numeric($face))  {
$value = 10;
}

if($face == 'A') {
$value = 11;
}

$this->deck[] = array("suit" => $suit, "face" => $face, "value" => $value);
}
}// end of a loop in loop

return $this->randomCard();
}

public function randomCard() {
shuffle($this->deck);
$card = array_shift($this->deck);
//var_dump $this->card;
return $this->card['face'];
echo ($this->card['face']);
}

}//end of the class

$obj = new Deck;
var_dump ($obj->suits);
echo '<br>';
print_r ($obj->faces);
echo '<br>';
echo '<br>';
print_r ($obj->deck);
echo '<br>';
echo '<br>';
echo 'Test test';
print_r ($obj->card);
?>

-1

Решение

я не понимаю почему $card является членом var вашего класса, так как он будет меняться при каждом вызове randomCard() и вы используете его только как возвращаемое значение. Так что удалите $card из вашего класса

попробуй это:

public function randomCard(){
if(count($this->deck)==0){
reloadDeck() // you need a funtction which 'reloads' the deck because array_shift will remove the first element
}

shuffle($this->deck);
return array_shift($this->deck);
}

вернуть массив закрытой карты, потому что вам понадобится вся информация о карте, а не только ['face'] значение

0

Другие решения

Других решений пока нет …