자진화 게임 PHP 구현 코드 크기 경쟁
프로그램은 알고리즘과 떼려야 뗄 수 없는 존재입니다. 지난 블로그에서 실제로 길 찾기 알고리즘에 대해 논의한 적이 있습니다. 그러나 당시 예제 다이어그램에서는 선택적 경로가 유일한 경로였습니다. 알고리즘을 선택한다는 것은 이 고유한 경로를 선택한다는 의미입니다. 어떻게 선택합니까?
중학교 때 오후에 길가에 숨어 금꽃을 만들어 돈을 도박으로 벌던 일이 아직도 기억나네요. 설날이면 우리는 종종 금화를 만들고 도박을 해서 돈을 벌곤 하는데, 운이 없네. 매번 지는구나.
오늘은 해가 쨍쨍하네요. 청명절에 놀러 나갔기 때문에 오늘은 아무데도 안 갔어요. 할 일이 없을 때 골든플라워에서 두 카드의 크기를 비교하는 프로그램을 어떻게 하면 좋을지 고민하다가 구현해 봤는데 몇 가지 방법이 꽤 중요해서 적어봤습니다.
알겠습니다. 더 이상 말도 안되는 소리는 하지 마세요.
자진화의 두 덱의 비교 규칙은 다루지 않겠습니다. 스트레이트인 경우 표시해 주세요. JQK < A23 < QKA
아이디어: 자진화 (http: //www.a8u.net/)
1" 두 개의 카드 덱을 무작위로 생성합니다. 각 덱의 구조는
[php ] 일반 사본 인쇄를 보시겠습니까?
array( array('Spade','K'), array('Club','6'), array('Spade','J'), )
각 카드의 점수는 2자리 숫자이며, 점수는 2자리 미만입니다. 앞의 0을 보완합니다. 예를 들어 'A': 14, '10': 10, '2': '02', 'k': 13, '7': 07
3개의 카드를 다음과 같이 정렬합니다. 포인트 수(큰 것부터 작은 것까지)까지 6자리 숫자를 구성하세요. 예를 들어 'A27': 140702, '829': 090802, 'JK8': 131108, '2A10': 141002
쌍의 경우에는 예외입니다. (왜 이렇게 하는지 나중에 알 수 있습니다. 예를 들어 '779': 070709, '7A7': 070714, 'A33': 030314
현재 점수는 6자리 숫자입니다. 쌍을 원래 값에 10*100000을 더한 값으로 설정하면 이제 7자리 숫자가 됩니다. 예: '779': 1070709, '7A7': 1070714 , 'A33': 1030314
<. 🎜> 결과에 20*100000을 추가합니다. 예를 들어 '345': 2050403, 'QKA': 2141312, '23A': 2140302 황금색 꽃의 경우 결과에 30*100000을 추가합니다. 예를 들어 '스페이드 K, 스페이드 6, 스페이드 J': 3131106 실제로는 황금색 꽃과 금색의 합이기 때문입니다. 스트레이트 자식이므로 스트레이트 골드는 50*10000이어야 합니다. 예를 들어 '스페이드 7, 스페이드 8': 5080706 예를 들어 튜브의 경우 결과에 60*100000을 추가합니다. , '666': 6060606, 'JJJ': 61111113" 두 카드의 크기를 비교해 보세요. (계산된 포인트를 이용해 비교해보세요) 너무 간단해요! ! 코드는 다음과 같습니다(PHP)[php] 일반 사본을 보시겠습니까?<?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教程有兴趣的朋友有所帮助。