Heim > Backend-Entwicklung > PHP-Tutorial > PHP implementiert den Golden Flower Game-Wettbewerb

PHP implementiert den Golden Flower Game-Wettbewerb

墨辰丷
Freigeben: 2023-03-31 20:32:02
Original
3345 Leute haben es durchsucht

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

1. Erzeuge zufällig zwei Kartendecks. Die Struktur jedes Decks ist wie folgt:

array(  
    array(&#39;Spade&#39;,&#39;K&#39;),  
    array(&#39;Club&#39;,&#39;6&#39;),  
    array(&#39;Spade&#39;,&#39;J&#39;),  
)
Nach dem Login kopieren
Nach dem Login kopieren

Der Code ist wie folgt:

array(  
    array(&#39;Spade&#39;,&#39;K&#39;),  
    array(&#39;Club&#39;,&#39;6&#39;),  
    array(&#39;Spade&#39;,&#39;J&#39;),  
)
Nach dem Login kopieren
Nach dem Login kopieren

2. Berechnen Sie für jedes Kartenspiel die Punktzahl der Karte: Jedes Kartenspiel hat eine Originalgröße (d. h. ohne Paare, Straights, goldene Blumen, Straight Golds und Röhrengrößen) und dann

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“: 030314

Der 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“: 2140302

Für eine goldene Blume addieren Sie 30*100000 zum Ergebnis. Zum Beispiel „Spade K, Spade 6, Spade J“: 3131106

Da 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“: 5080706

Für eine Spule addieren Sie 60*100000 zum Ergebnis. Zum Beispiel „666“: 6060606, „JJJ“: 6111111

3. 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(&#39;Spade&#39;, &#39;Heart&#39;, &#39;Diamond&#39;, &#39;Club&#39;);  
    public $figures = array(&#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;10&#39;, &#39;J&#39;, &#39;Q&#39;, &#39;K&#39;, &#39;A&#39;);  
    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,&#39;0&#39;,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) ==&#39;140302&#39;){  
            $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 &#39;card1 is &#39;,printCard($card1),&#39;<br/>&#39;;  
echo &#39;card2 is &#39;,printCard($card2),&#39;<br/>&#39;;  
$str = &#39;card1 equit card2&#39;;  
if($result == 1) $str =  &#39;card1 is larger than card2&#39;;  
elseif($result == -1) $str = &#39;card1 is smaller than card2&#39;;  
echo $str;  
function printCard($card)  
{  
    $str = &#39;(&#39;;  
    foreach($card as $v){  
        $str .= $v[0].$v[1].&#39;,&#39;;  
    }  
    return trim($str,&#39;,&#39;).&#39;)&#39;;  
}
Nach dem Login kopieren

Der Code lautet wie folgt:

<?php  
class PlayCards  
{  
    public $suits = array(&#39;Spade&#39;, &#39;Heart&#39;, &#39;Diamond&#39;, &#39;Club&#39;);  
    public $figures = array(&#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;10&#39;, &#39;J&#39;, &#39;Q&#39;, &#39;K&#39;, &#39;A&#39;);  
    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,&#39;0&#39;,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) ==&#39;140302&#39;){  
            $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 &#39;card1 is &#39;,printCard($card1),&#39;<br/>&#39;;  
echo &#39;card2 is &#39;,printCard($card2),&#39;<br/>&#39;;  
$str = &#39;card1 equit card2&#39;;  
if($result == 1) $str =  &#39;card1 is larger than card2&#39;;  
elseif($result == -1) $str = &#39;card1 is smaller than card2&#39;;  
echo $str; 
function printCard($card)  
{  
    $str = &#39;(&#39;;  
    foreach($card as $v){  
        $str .= $v[0].$v[1].&#39;,&#39;;  
    }  
    return trim($str,&#39;,&#39;).&#39;)&#39;;  
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage