Heim  >  Artikel  >  Backend-Entwicklung  >  Zhajinhua Game PHP-Implementierungscode-Größenwettbewerb

Zhajinhua Game PHP-Implementierungscode-Größenwettbewerb

WBOY
WBOYOriginal
2016-08-08 09:28:451067Durchsuche

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?

  1. array(
  2. >
  3. ('Spade','K'),    array
  4. ('Club','6'),   array
  5. ('Spade','J'), )
  6. 2“ Berechnen Sie die Punktzahl jedes Kartenspiels: Jedes Kartenspiel hat ein Original Größe (d. h. ausgenommen Paare, Straights, Golden Flowers, Straight Golds und Buben) und dann

Die Punktzahl jeder Karte ist eine zweistellige Zahl, und die Punktzahl beträgt weniger als 2 Ziffern die führende 0, zum Beispiel 'A': 14, '10': 10, '2': '02', 'k': 13, '7': 07
array(
    array(&#39;Spade&#39;,&#39;K&#39;),
    array(&#39;Club&#39;,&#39;6&#39;),
    array(&#39;Spade&#39;,&#39;J&#39;),
)

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': 6111111

3" 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?

  1. Klasse PlayCards  
  2. {  
  3.     öffentlich $suits = array('Spade''Heart''Diamond' 'Club');  
  4.     public $figures = array ('2''3''4''5''6''7', '8''9''10''J''Q''K''A');  
  5.     öffentlich $cards = Array ();  
  6.     öffentlich Funktion __construct()  
  7.     {  
  8.         $cards = array();  
  9.         foreach($this->suits  as $suit){  

  10.             foreach($this->figures as $figure){  
  11.                 ,$figure);              }          }  
  12.         
  13. $this->cards = 
  14. $cards;  
  15.     }      öffentliche 
  16. Funktion getCard()  
  17.     {          shuffle($this->cards) ;  
  18.         
  19. //生成3张牌  
  20.         
  21. zurück array(
  22. array_pop($this-> Karten), array_pop($this->cards), array_pop ($this->cards));           }  
  23.     öffentlich Funktion compareCards($card1,$card2)  
  24.     {  
  25.         $score1  = $this->ownScore($card1);  
  26.         $score2 = $this->ownScore($card2);  
  27.         if($score1 > $score2 Rückgabe 1;  
  28.         elseif($score1 < $score2 return -1;  
  29.         Zurück 0;         
  30.     }  
  31.       
  32.       
  33.     privat Funktion ownScore($card)  
  34.     {  
  35.         $suit = $figure =  Array();  
  36.         foreach($card as  $v){  
  37.             $suit[] = $v[0];  
  38.             v[1],$this->figuren)+2;          }          //补齐前导0
  39.   
  40.         für($i
  41.  = 0; 
  42. $i < 3;  $i++){              $figure[$i] = 
  43. str_pad
  44. ($figure[ $i],2,'0',STR_PAD_LEFT);          }          rsort($figure);  
  45.         
  46. //对于对子做特殊处理
  47.           
  48. if
  49. ($figure[1] == 
  50. $figure
  51. [2]){              $temp = $figure[0];  
  52.             $figure[0] = $figure[2];  
  53.             $figure[2] = $temp;  
  54.         }  
  55.         $score = $figure[0].$figure [1].$figure[2];  
  56.         //筒子 60*100000  
  57.         if($figure[0] == $figure[1] && $ Zahl[0] == $figure[2]){  
  58.             $ Punktzahl += 60*100000;  
  59.         }  
  60.         //金花 30*100000  
  61.         if($suit[0] == $suit [1] && $suit[0] == $suit[2]){  
  62.             $score += 30*100000;  
  63.         }  
  64.         //顺子 20*100000  
  65.         if($figure[0] == $figure [1]+1 && $figure[1] == $figure[2]+1 || ($figure) =='140302'){  
  66. $score += 20*100000;  
  67.         }  
  68.         //对子 10*100000  
  69.         if($figure[0] == $figure [1] && $figure[1] != $figure[2]){  
  70.   
  71.             $score += 10*100000;  
  72.         }  
  73.         Rückgabe $score;  
  74.     }  
  75. }
  76. //test
  77. $playCard = new PlayCards();
  78. $card1 = $playCard->getCard();  
  79. $card2 = $playCard->getCard();  
  80. $result = $playCard->compareCards($card1,$card2);  
  81.   
  82. echo 'card1 is ',printCard($card1),'
    '
    ;  
  83. echo 'card2 is ',printCard($card2),'
    '
    ;  
  84. $str = 'card1 equit card2';  
  85. if($result == 1) $str =  'card1 is larger than card2';  
  86. elseif($result == -1) $str = 'card1 is smaller than card2';  
  87. echo $str;  
  88.   
  89.   
  90. function printCard($card)  
  91. {  
  92.     $str = '(';  
  93.     foreach($card as $v){  
  94.         $str .= $v[0].$v[1].',';  
  95.     }  
  96.     return trim($str,',').')';  
  97. }  
  98. <?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 '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教程有兴趣的朋友有所帮助。

Stellungnahme:
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