Dieser Artikel stellt hauptsächlich die Methode zur Realisierung des Fried Golden Flower-Spielwettbewerbs in PHP vor. Er analysiert die Implementierungsprinzipien und zugehörigen Algorithmustechniken des Fried Golden Flower-Spiels und hat einen gewissen Referenzwert it
Das Beispiel in diesem Artikel beschreibt die Methode zur Implementierung des Golden Flower-Spielwettbewerbs in PHP. Die spezifische Analyse lautet wie folgt:
Programme sind untrennbar mit Algorithmen verbunden. Der Pfadfindungsalgorithmus wurde bereits besprochen. Im damaligen Beispieldiagramm war jedoch der optionale Pfad der einzige. Wenn wir einen Algorithmus wählen, meinen wir, diesen einzigartigen Weg zu wählen.
Ich werde nicht auf die Regeln für den Vergleich der beiden Decks der Fried Golden Flower-Karten eingehen. Geben Sie einfach an, wann es sich um eine Straße handelt: JQK < A23 < Gebratene goldene Blume
array( array('Spade','K'), array('Club','6'), array('Spade','J'), )
array( array('Spade','K'), array('Club','6'), array('Spade','J'), )
Der Punktestand jeder Karte ist eine zweistellige Zahl, weniger als zwei Ziffern werden durch eine führende Null ergänzt, zum Beispiel „A“: 14, „10“: 10, „2“: „02“, „k“. ': 13, '7': 07 wird 3 sein. Die Karten sind nach Größe sortiert (von groß nach klein), um eine 6-stellige Zahl zu bilden. Zum Beispiel „A27“: 140702, „829“: 090802, „JK8“: 131108, „2A10“: 141002 Ausnahme: Bei Paaren sollten die Ziffern des Paares in den ersten beiden Ziffern platziert werden (wird später besprochen) Sehen Sie, warum dies getan wird). Zum Beispiel „779“: 070709, „7A7“: 070714, „A33“: 030314Der aktuelle Punktestand ist eine 6-stellige Zahl und das Paar wird auf einen Originalwert plus 10*100000 gesetzt. Es ist jetzt eine 7-stellige Nummer. Zum Beispiel „779“: 1070709, „7A7“: 1070714, „A33“: 1030314 Für eine Gerade addieren Sie 20*100000 zum Ergebnis. Zum Beispiel „345“: 2050403, „QKA“: 2141312, „23A“: 2140302Für eine goldene Blume addieren Sie 30*100000 zum Ergebnis. Zum Beispiel „Spade K, Spade 6, Spade J“: 3131106Da das gerade Gold tatsächlich die Summe aus der goldenen Blume und dem geraden Kind ist, sollte das gerade Gold 50*10000 betragen. Zum Beispiel „Spaten 7, Spaten 6, Spaten 8“: 5080706Für eine Spule addieren Sie 60*100000 zum Ergebnis. Zum Beispiel „666“: 6060606, „JJJ“: 61111113. Vergleichen Sie die Größe der beiden Karten (verwenden Sie die berechneten Punkte zum Vergleich)So einfach ist das! ! Der Code lautet wie folgt:
<?php class PlayCards { public $suits = array('Spade', 'Heart', 'Diamond', 'Club'); public $figures = array('2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'); public $cards = array(); public function __construct() { $cards = array(); foreach($this->suits as $suit){ foreach($this->figures as $figure){ $cards[] = array($suit,$figure); } } $this->cards = $cards; } public function getCard() { shuffle($this->cards); //生成3张牌 return array(array_pop($this->cards), array_pop($this->cards), array_pop($this->cards)); } public function compareCards($card1,$card2) { $score1 = $this->ownScore($card1); $score2 = $this->ownScore($card2); if($score1 > $score2) return 1; elseif($score1 < $score2) return -1; return 0; } private function ownScore($card) { $suit = $figure = array(); foreach($card as $v){ $suit[] = $v[0]; $figure[] = array_search($v[1],$this->figures)+2; } //补齐前导0 for($i = 0; $i < 3; $i++){ $figure[$i] = str_pad($figure[$i],2,'0',STR_PAD_LEFT); } rsort($figure); //对于对子做特殊处理 if($figure[1] == $figure[2]){ $temp = $figure[0]; $figure[0] = $figure[2]; $figure[2] = $temp; } $score = $figure[0].$figure[1].$figure[2]; //筒子 60*100000 if($figure[0] == $figure[1] && $figure[0] == $figure[2]){ $score += 60*100000; } //金花 30*100000 if($suit[0] == $suit[1] && $suit[0] == $suit[2]){ $score += 30*100000; } //顺子 20*100000 if($figure[0] == $figure[1]+1 && $figure[1] == $figure[2]+1 || implode($figure) =='140302'){ $score += 20*100000; } //对子 10*100000 if($figure[0] == $figure[1] && $figure[1] != $figure[2]){ $score += 10*100000; } return $score; } } //test $playCard = new PlayCards(); $card1 = $playCard->getCard(); $card2 = $playCard->getCard(); $result = $playCard->compareCards($card1,$card2); echo 'card1 is ',printCard($card1),'<br/>'; echo 'card2 is ',printCard($card2),'<br/>'; $str = 'card1 equit card2'; if($result == 1) $str = 'card1 is larger than card2'; elseif($result == -1) $str = 'card1 is smaller than card2'; echo $str; function printCard($card) { $str = '('; foreach($card as $v){ $str .= $v[0].$v[1].','; } return trim($str,',').')'; }
<?php class PlayCards { public $suits = array('Spade', 'Heart', 'Diamond', 'Club'); public $figures = array('2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'); public $cards = array(); public function __construct() { $cards = array(); foreach($this->suits as $suit){ foreach($this->figures as $figure){ $cards[] = array($suit,$figure); } } $this->cards = $cards; } public function getCard() { shuffle($this->cards); //生成3张牌 return array(array_pop($this->cards), array_pop($this->cards), array_pop($this->cards)); } public function compareCards($card1,$card2) { $score1 = $this->ownScore($card1); $score2 = $this->ownScore($card2); if($score1 > $score2) return 1; elseif($score1 < $score2) return -1; return 0; } private function ownScore($card) { $suit = $figure = array(); foreach($card as $v){ $suit[] = $v[0]; $figure[] = array_search($v[1],$this->figures)+2; } //补齐前导0 for($i = 0; $i < 3; $i++){ $figure[$i] = str_pad($figure[$i],2,'0',STR_PAD_LEFT); } rsort($figure); //对于对子做特殊处理 if($figure[1] == $figure[2]){ $temp = $figure[0]; $figure[0] = $figure[2]; $figure[2] = $temp; } $score = $figure[0].$figure[1].$figure[2]; //筒子 60*100000 if($figure[0] == $figure[1] && $figure[0] == $figure[2]){ $score += 60*100000; } //金花 30*100000 if($suit[0] == $suit[1] && $suit[0] == $suit[2]){ $score += 30*100000; } //顺子 20*100000 if($figure[0] == $figure[1]+1 && $figure[1] == $figure[2]+1 || implode($figure) =='140302'){ $score += 20*100000; } //对子 10*100000 if($figure[0] == $figure[1] && $figure[1] != $figure[2]){ $score += 10*100000; } return $score; } } //test $playCard = new PlayCards(); $card1 = $playCard->getCard(); $card2 = $playCard->getCard(); $result = $playCard->compareCards($card1,$card2); echo 'card1 is ',printCard($card1),'<br/>'; echo 'card2 is ',printCard($card2),'<br/>'; $str = 'card1 equit card2'; if($result == 1) $str = 'card1 is larger than card2'; elseif($result == -1) $str = 'card1 is smaller than card2'; echo $str; function printCard($card) { $str = '('; foreach($card as $v){ $str .= $v[0].$v[1].','; } return trim($str,',').')'; }
Zusammenfassung
: Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass es zum Lernen aller nützlich sein kann. Verwandte Empfehlungen:PHP implementiert die Erkennungs- und Vervollständigungsfunktion für das End-Tag in HTML-Tags
PHP implementiert die Erkennung und Vervollständigung der angegebenen Suffixdatei Batch-Upload-Funktion
PHP-Analyse und String-Verarbeitung von Vorlagendateien
Das obige ist der detaillierte Inhalt vonPHP implementiert den Golden Flower Game-Wettbewerb. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!