Heim > Artikel > Backend-Entwicklung > Zhajinhua Game PHP-Implementierungscode-Größenwettbewerb
Zha Jinhua Game PHP Implementation Code Size Competition
Programme sind untrennbar mit Algorithmen verbunden. Im vorherigen Blog haben wir tatsächlich den Pfadfindungsalgorithmus 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 erinnere mich noch daran, dass ich mich nach der Schule oft am Straßenrand versteckte und Goldblumen machte, um Geld zu spielen*. Jetzt schien es, als wäre ich süchtig danach Am chinesischen Neujahr machen wir oft gemeinsam Goldblumen und spielen*, aber ich habe kein Glück, man verliert jedes Mal.
Heute scheint die Sonne hell. Ich bin gerade während des Qingming-Festivals zum Spielen gegangen, also bin ich heute nirgendwo hingegangen. Als ich nichts zu tun hatte, dachte ich darüber nach, wie ich mit einem Programm die Größen zweier Karten in Golden Flower vergleichen könnte. Nachdem ich es nun implementiert habe, sind einige Methoden ziemlich wichtig, also habe ich sie aufgeschrieben.
Okay, kein Unsinn mehr.
Ich werde nicht auf die Regeln für den Vergleich der beiden Kartenspiele mit Golden Flower eingehen. Geben Sie einfach an, wann es eine Straße ist: JQK < A23 < http: //www.a8u.net/)
1" Erzeuge zufällig zwei Kartendecks, die Struktur jedes Decks ist
[php] view plaincopyprint?
array( array('Spade','K'), array('Club','6'), array('Spade','J'), )
Sortieren Sie die 3 Karten entsprechend Die Größe der Punkte (von groß nach klein) ergibt eine 6-stellige Zahl, zum Beispiel „A27“: 140702, „829“: 090802, „JK8“: 131108, „2A10“: 141002
Ausnahme: Geben Sie die Anzahl der Paare in die ersten beiden Ziffern ein (Sie werden später sehen, warum wir dies tun, zum Beispiel „779“: 070709, „7A7“: 070714, „A33“: 030314). >
Der aktuelle Wert ist eine 6-stellige Zahl. Setzen Sie das Paar auf einen ursprünglichen Wert plus 10*100000, was jetzt eine 7-stellige Zahl ist. Beispiel: „779“: 1070709, „7A7“: 1070714 , „A33“: 1030314 Für eine Gerade addieren Sie 20*100000 zum Ergebnis. Zum Beispiel „345“: 2050403, „QKA“: 2141312, „23A“: 2140302 Für eine goldene Blume addieren Sie 30*100000 zum Ergebnis. Zum Beispiel „Spade K, Spade 6, Spade J“: 3131106 Denn das gerade Gold ist eigentlich die Summe aus der goldenen Blume und dem gerades Kind, also sollte das gerade Gold 50*10000 sein, zum Beispiel „Spade 7, Spade 8“: 5080706 Für die Tube addieren Sie zum Beispiel 60*100000 , '666': 6060606, 'JJJ': 61111113" Vergleichen Sie die Größen der beiden Karten (Verwenden Sie berechnete Punkte zum Vergleich) So einfach ist das! ! Der Code lautet wie folgt (PHP)[php] Nur Kopie anzeigen?<?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 实现代码之大小比赛,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。