※ この募集は締め切られました。
PHPについての質問をしたいです。
現在PHPの学習中です。
PHPで、役判定を出力するプログラムを完成させたいです、この問題です。
<?php
// <アルゴリズムの注意点>
// アルゴリズムではこれまでのように調べる力ではなく物事を論理的に考える力が必要です。
// 検索して答えを探して解いても考える力には繋がりません。
// まずは検索に頼らずに自分で処理手順を考えてみましょう。
// 以下はポーカーの役を判定するプログラムです。
// cards配列に格納したカードの役を判定し、結果表示してください。
// cards配列には計5枚、それぞれ絵柄(suit)、数字(numeber)を格納する
// 絵柄はheart, spade, diamond, clubのみ
// 数字は1-13のみ
// 上記以外の絵柄や数字が存在した場合、または同一の絵柄、数字がcards配列に存在した場合、
// 役の判定前に「手札が不正です」と表示してください。
// 役判定は関数に記述し、関数を呼び出して結果表示すること
// プログラムが完成したらcards配列を差し替えてすべての役で検証を行い、提出時にテストケースを示すこと
// <役>
// ワンペア・・・同じ数字2枚(ペア)が1組
// ツーペア・・・同じ数字2枚(ペア)が2組
// スリーカード・・・同じ数字3枚
// ストレート・・・数字の連番5枚(13と1は繋がらない)
// フラッシュ・・・同じマークが5枚
// フルハウス・・・同じ数字3枚が1組+同じ数字2枚(ペア)が1組
// フォーカード・・・同じ数字4枚
// ストレートフラッシュ・・・数字の連番5枚+同じマークが5枚
// ロイヤルストレートフラッシュ・・・1, 10, 11, 12, 13で同じマーク
// ※下の方が強い
// 表示例1)
// 手札は
// heart2 heart5 heart3 heart4 culb1
// 役はストレートです
// 表示例2)
// 手札は
// heart1 spade2 diamond11 club13 heart9
// 役はなしです
// 表示例3)
// 手札は
// heart1 heart1 heart3 heart4 heart5
// 手札は不正です
// 手札
$cards = [
['suit'=>'heart', 'number'=>12],
['suit'=>'heart', 'number'=>1],
['suit'=>'heart', 'number'=>13],
['suit'=>'heart', 'number'=>11],
['suit'=>'spade', 'number'=>12],
];
function judge($cards)
{
// この関数内に処理を記述
// カードの不正チェック
for ($i = 0; $i <= 4; $i++) {
if ($cards[$i]['suit'] == "heart" || $cards[$i]['suit'] == "spade" || $cards[$i]['suit'] == "diamond" || $cards[$i]['suit'] == "club") {
} else {
echo "手札が不正";
}
//$cards['number'] = range(1, 13);
$cards['number'] = array(1,2,3,4,5,6,7,8,9,10,11,12,13);
if ($cards[$i]['number'] <= 0 || $cards[$i]['number'] >= 14) {
echo "手札が不正";
}
}
// カードの並び替え
// 役判定
// 結果を返す
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ポーカー役判定</title>
</head>
<body>
<section>
<p>手札は</p>
<p><?php foreach ($cards as $card) :?>
<?= $card['suit'].$card['number']." "?>
<?php endforeach; ?></p>
<p>役は<?=judge($cards) ?>です。</p>
</section>
</body>
</html>
手札の不正判定までは完成できたのですが、
その後の役判定の出力が上手くいかず詰んでおります、条件分岐や配列を用いて幾つか試していますが解決できません。解決方法を教えていただけないでしょうか?
よろしくお願い致します。