Zhajinhua ゲームの大小のコンテストを実装するための PHP メソッド_PHP チュートリアル
PHPでZhajinhuaゲームの大小の競技を実装する方法
この記事では主にPHPでZhajinhuaゲームの大小の競技を実現する方法を紹介し、その実装原理と関連するアルゴリズム技術を分析します。例付きのZhajinhuaゲームを参照してください。必要な友達はそれを参照してください。
プログラムはアルゴリズムと切り離せないものです。経路探索アルゴリズムについては前述しました。ただし、当時の例の図ではオプションのパスのみでした。アルゴリズムを選択するということは、唯一のパスを選択することを意味します。それを選択するにはどうすればよいでしょうか。
中学生の頃、午後の放課後、道端に隠れて金の花を作ってお金を賭けていたのを今でも覚えています。今では旧正月の時期に、ハマっていたようです。私たちはよく一緒に金の花を作ってお金を賭けますが、毎回みんな負けてしまいます。
今日は太陽が明るく輝いています。清明節の間に遊びに行っただけなので、今日はどこにも行きませんでした。何もすることがないときに、Golden Flower の 2 つのカードの大きさを比較するプログラムを使用する方法を考えました。実際に実装してみると、いくつかの方法が非常に重要なので、書き留めておきます。
さて、これ以上ナンセンスはやめてください。
Zhajinhua の 2 つのカードのデッキ間の比較ルールには触れません: JQK アイデア: 金色の花を結ぶ
1. 2 組のカードをランダムに生成します。各デッキの構成は次のとおりです。
コードは次のとおりです:
配列(
配列('スペード','K')、配列('スペード','J')、
)
コードは次のとおりです:
配列(
配列('スペード','K')、配列('スペード','J')、
)
2. 各デッキのカードのスコアを計算します。各デッキのカードには元のサイズ (つまり、ペア、ストレート、ゴールデン フラワー、ストレート ゴールド、ボビンを除く) があり、
各カードのスコアは 2 桁の数字です。たとえば、「A」: 14、「10」: 10、「2」: 「02」のように、先頭に 0 が追加されます。 「k」:13、「7」:07
3枚のカードをポイント数に応じて(大きいものから小さいものまで)並べて6桁の数字を作ります。例: 'A27': 140702、'829': 090802、'JK8': 131108、'2A10': 141002
例外として、ペアの場合は、最初の 2 桁にペアの数字を入れます (これを行う理由は後で説明します)。例: '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,スペード 6,スペード 8': 5080706
ボビンの場合は、結果に 60*100000 を追加します。例: '666': 6060606、'JJJ': 6111111
3. 2 つのカードのサイズを比較します (計算されたスコアを使用して比較します)。
とても簡単です! !コードは以下の通り(PHP)
コードは次のとおりです:
{
public $suits = array('スペード', 'ハート', 'ダイヤモンド', 'クラブ');
public $figures = array('2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'、'A');
public $cards = array();
パブリック関数 __construct()
{
$cards = 配列();
foreach($this->$suit として適合){
foreach($this->figures as $figure){
$cards[] = 配列($suit,$figure);
}
}
$this->cards = $cards;
}
パブリック関数 getCard()
{
シャッフル($this->カード);
//生成3张牌
return array(array_pop($this->cards), array_pop($this->cards), array_pop($this->cards));
}
パブリック関数 CompareCards($card1,$card2)
{
$score1 = $this->ownScore($card1);
$score2 = $this->ownScore($card2);
if($score1 > $score2) 1 を返します。
elseif($score1 < $score2) return -1;
0を返します。
}
プライベート関数 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]){
$スコア += 60*100000;
}
//金花 30*100000
if($suit[0] == $suit[1] && $suit[0] == $suit[2]){
$スコア += 30*100000;
}
//顺子 20*100000
if($figure[0] == $figure[1]+1 && $figure[1] == $figure[2]+1 || implode($figure) =='140302'){
$スコア += 20*100000;
}
//对子 10*100000
if($figure[0] == $figure[1] && $figure[1] != $figure[2]){
$スコア += 10*100000;
}
$score を返します。
}
}
//テスト
$playCard = 新しい PlayCard();
$card1 = $playCard->getCard();
$card2 = $playCard->getCard();
$result = $playCard->compareCards($card1,$card2);
echo 'card1 は ',printCard($card1),'
';
echo 'card2 は ',printCard($card2),'
';
$str = 'カード1をカード2に追加';
if($result == 1) $str = 'カード1はカード2より大きい';
elseif($result == -1) $str = 'カード1はカード2より小さい';
エコー $str;
関数 printCard($card)
{
$str = '(';
foreach($card as $v){
$str .= $v[0].$v[1].',';
}
戻りトリム($str,',').')';
}
代码如下:
{
public $suits = array('スペード', 'ハート', 'ダイヤモンド', 'クラブ');
public $figures = array('2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'、'A');
public $cards = array();
パブリック関数 __construct()
{
$cards = 配列();
foreach($this->$suit として適合){
foreach($this->figures as $figure){
$cards[] = 配列($suit,$figure);
}
}
$this->cards = $cards;
}
パブリック関数 getCard()
{
シャッフル($this->カード);
//生成3张牌
return array(array_pop($this->cards), array_pop($this->cards), array_pop($this->cards));
}
パブリック関数 CompareCards($card1,$card2)
{
$score1 = $this->ownScore($card1);
$score2 = $this->ownScore($card2);
if($score1 > $score2) 1 を返します。
elseif($score1 < $score2) return -1;
0を返します。
}
プライベート関数 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]){
$スコア += 60*100000;
}
//金花 30*100000
if($suit[0] == $suit[1] && $suit[0] == $suit[2]){
$スコア += 30*100000;
}
//顺子 20*100000
if($figure[0] == $figure[1]+1 && $figure[1] == $figure[2]+1 || implode($figure) =='140302'){
$スコア += 20*100000;
}
//对子 10*100000
if($figure[0] == $figure[1] && $figure[1] != $figure[2]){
$スコア += 10*100000;
}
$score を返します。
}
}
//テスト
$playCard = 新しい PlayCard();
$card1 = $playCard->getCard();
$card2 = $playCard->getCard();
$result = $playCard->compareCards($card1,$card2);
echo 'card1 は ',printCard($card1),'
';
echo 'card2 は ',printCard($card2),'
';
$str = 'カード1をカード2に追加';
if($result == 1) $str = 'カード1はカード2より大きい';
elseif($result == -1) $str = 'カード1はカード2より小さい';
エコー $str;
関数 printCard($card)
{
$str = '(';
foreach($card as $v){
$str .= $v[0].$v[1].',';
}
戻りトリム($str,',').')';
}
ここで説明されている大家向けの php プログラムの設計が役立つことを望みます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
