ホームページ バックエンド開発 PHPチュートリアル PHP ゲームプログラミング用の 25 のスクリプト コード_PHP チュートリアル

PHP ゲームプログラミング用の 25 のスクリプト コード_PHP チュートリアル

Jul 21, 2016 pm 03:31 PM
php コード そして デバイス 私たち ゲーム 単純 プログラミング 脚本 必要 サイコロ

チェックリスト 1. シンプルなサイコロローラー
多くのゲームやゲームシステムではサイコロが必要です。まずは簡単な部分、つまり 6 面体のサイコロを振ることから始めましょう。基本的に、6 面体のサイコロを振ることは、1 から 6 までの乱数を選択するだけです。 PHP では、これは非常に単純です: echo rand(1,6);。
多くの場合、これは基本的に簡単です。しかし、運次第のゲームを扱う場合は、より良い実装が必要です。 PHP は、より優れた乱数ジェネレーター mt_rand() を提供します。 2 つの違いをあまり深く掘り下げずに、mt_rand はより高速で優れた乱数生成器であると考えることができます: echo mt_rand(1,6);。この乱数ジェネレーターを関数に組み込むとさらに良くなります。
リスト 1. mt_rand() 乱数生成関数の使用

コードをコピーします コードは次のとおりです。 echo roll() ;

次に、振るサイコロの種類をパラメータとして関数に渡すことができます。

リスト2. サイコロの型をパラメータとして渡す



コードをコピーする コードは次のとおりです:
function roll ($sides) { return mt_rand(1,$sides) } echo roll(6 ); // 6面のサイコロを振る
echo roll(10) // 10面のサイコロを振る
echo roll(20); // 20面のサイコロを振る


; 、必要に応じて複数のサイコロを一度にロールし、結果の配列を返すことができます。また、異なる種類の複数のサイコロを一度に振ることもできます。ただし、ほとんどのタスクはこの単純なスクリプトを使用して実行できます。
ランダムネームジェネレーター
ゲームを実行したり、ストーリーを書いたり、一度に多数のキャラクターを作成したりしている場合、絶え間なく流れてくる新しい名前に対処するのが大変な場合があります。この問題を解決するために使用できる単純なランダム名ジェネレーターを見てみましょう。まず、2 つの単純な配列を作成しましょう。1 つは名用、もう 1 つは姓用です。 " ジョン",
"パット",
);
$last = array(
"スミス",
"ジョーンズ",
"ウィンクラー",
"クーパー", "クライン" );各配列からランダムな要素を選択できます: echo $male[array_rand($male)] ' ' 。複数の名前を一度に抽出するには、配列を混合し、必要に応じて抽出するだけです。
リスト 4. 混合名の配列
コードをコピー

コードは次のとおりです。 ;= 3 ; $i++) {
echo $male[$i] . $last[$i]; }


この基本的な概念に基づいて、最初と最後を保存するテキスト ファイルを作成できます。名前。テキスト ファイルの各行に名前を保存すると、ファイルの内容を改行で区切ってソース コードの配列を簡単に構築できます。

リスト 5. 名前のテキスト ファイルを作成します




コードをコピー

コードは次のとおりです。
$last =explode('n', file_get_contents('names.last.txt'));
適切な名前のファイルをいくつかビルドまたは検索すれば (一部はコード アーカイブに含まれています)、名前について心配する必要はもうありません。
シナリオ ジェネレーター
名前ジェネレーターの構築に使用したのと同じ基本原則を使用して、シナリオ ジェネレーターを構築できます。このジェネレーターは、ロール プレイング ゲームだけでなく、擬似ランダム環境のコレクション (ロール プレイング、即興、執筆などに使用できる) を使用する必要がある状況でも役立ちます。私のお気に入りのゲームの 1 つである Paranoia には、GM パックに「ミッション ブレンダー」が含まれています。ミッション ミキサーを使用すると、サイコロをすばやく振りながら、完全なミッションを組み合わせることができます。独自のシーンジェネレーターを組み立ててみましょう。
次のシナリオを考えてみましょう: あなたは目が覚めると、ジャングルで迷っていることに気づきました。ニューヨークに行かなければならないことはわかっていますが、その理由はわかりません。近くで犬の吠え声と敵の探索者の独特の音が聞こえます。あなたは寒くて震えていて、武装していません。シーン内の各文は、シーンの特定の側面を紹介します。
「あなたは目を覚ますと、ジャングルで迷っていることに気づきます。」 — この文は設定を確立します。
「ニューヨークに行かなければならないことはわかっていますね」 — この文は目標を説明します。
「犬の吠え声が聞こえます」 — この文は敵を紹介します。
「あなたは寒くて震えていて、武装していません」 - この文はさらに複雑になります。
名と姓のテキスト ファイルを作成したのと同じように、まず設定、目的、敵、複雑さのテキスト ファイルをそれぞれ作成します。サンプル ファイルはコード アーカイブに含まれています。これらのファイルを取得したら、シーンを生成するコードは基本的に名前を生成するコードと同じになります。
リスト 6. シーンを生成する
コードをコピーする コードは以下のとおりです:

$settings =explode("n", file_get_contents('scenario.settings.txt')); explode(" n", file_get_contents('scenario.objectives.txt'));
$antagonists =explode("n", file_get_contents('scenario.antagonists.txt'));
$complicati**** =explode( "n" , file_get_contents('scenario.complicati****.txt');
shuffle($settings)
shuffle($antagonists); );
echo $settings[0] . ' ' '
. "
";


新しいテキスト ファイルを追加することでシーンに要素を追加できますが、複数の複雑さを追加したい場合もあります。基本的なテキスト ファイルに追加するコンテンツが増えるほど、時間の経過とともにシーンがより多く変化します。
デッキ ビルダーとギア (シャッフル)
ポーカーをプレイしてカード関連のスクリプトを扱う場合は、デッキ ビルダーとギアのツールを統合する必要があります。まず、標準的なトランプのデッキを構築しましょう。 2 つの配列を構築する必要があります。1 つは同じスーツのカードのグループを保持するため、もう 1 つはカードの表を保持するためです。これにより、後で新しいデッキやカード タイプを追加する必要がある場合に大きな柔軟性が得られます。

リスト 7. 標準的なトランプ デッキの作成


コードをコピーします
コードは次のとおりです: $suits = array (
"Spades", "Hearts", "Clubs", "ダイヤモンド"
);
$faces = array (
「Two」、「Three」、「Four」、「Five」、「Six」、「Seven」、「Eight」、
「Nine」、「Ten」、" Jack」、「Queen」、「King」、「Ace」
);


次に、カード配列のデッキを構築して、すべてのカードの値を保存します。これは、1 対の foreach ループを使用するだけで簡単に実行できます。
リスト 8. トランプ配列の構築


コードをコピーします
コードは次のとおりです: $deck = array()
foreach ($suits as $suit) {
foreach ( $faces as $face ) {
$deck[] = array ("face"=>$face, "suit"=>$suit)
}
}


トランプ配列のデッキを構築した後、簡単にデッキをシャッフルして、ランダムにカードを引くことができます。
リスト 9. デッキをシャッフルしてカードをランダムに引きます

コードをコピーします
コードは次のとおりです。 $card['face'] ' の $card['suit'];
これで、複数のカードデッキを引いたり、マルチデッキシューを構築したりするためのショートカットができました。
勝ちオッズ計算機: カードの配り
カードのデッキを構築するときに各カードの表とスーツが個別に追跡されるため、デッキをプログラムで使用して特定のカードを取得するオッズを計算できます。まず、各手札からカードを 5 枚ずつ引きます。
リスト10. 各手からカードを5枚ずつ引く
コードをコピー コードは以下の通りです:

$hands = array(1 => array(), 2=>array() );
for ($i = 0; $i $hands[1][] = implode(" of ", array_shift($deck)); = implode( " of ", array_shift($deck));
}

その後、デッキを見て、カードが何枚残っているか、特定のカードを引く確率を確認できます。カードが何枚残っているかが簡単にわかります。 $deck 配列に含まれる要素の数を数えるだけです。特定のカードを引くチャンスを得るには、デッキ全体を調べて残りのカードを推定し、それらが一致するかどうかを確認する関数が必要です。

リスト 11. 特定のカードを引く確率を計算します
コードをコピーします コードは次のとおりです:
function Calculate_odds($draw, $deck) {
$remaining = count($deck );
$odds = 0;
foreach ($deck as $card) {
if ( ($draw['face'] == $card['face'] && $draw['suit'] ==
$カード['スーツ' ] ) ||
($draw['顔'] == '' && $draw['スーツ'] == $card['スーツ'] ) || ] == $card ['face'] && $draw['suit'] == '' ) ) {
$odds++;
}
}
return $odds ' in ' $remaining;カードを引くことを選択できるようになりました。シンプルにするために、カードのような配列を渡します。特定のカードを探すことができます。

リスト 12. 指定されたカードを検索します



コードをコピーします コードは次のとおりです:
$draw = array('face' => 'Ace', 'suit' => ' Spades' ); echo implode(" of ", $draw) . ' : ' . Calculate_odds($draw, $deck); または、指定したフェイスまたはスートを持つカードを検索することもできます。
リスト 13. 指定した面またはスーツを持つカードを検索する



コードをコピーする

コードは次のとおりです:

$draw = array('face' => '', 'suit' => 'Spades ') ; $draw = array('face' => 'Ace', 'suit' => ''); シンプルなポーカーディーラー
確率の計算に役立ついくつかのツールを入手しました。特定のカードを引く場合、カードを配るための非常に単純なカード ディーラーを統合できます。この例では、5 枚のカードを引くカード ディーラーを構築します。カードディーラーはデッキ全体から 5 枚のカードを提供します。数字はどのカードを捨てる必要があるかを指定するために使用され、ディーラーはこれらのカードをデッキの他のカードと置き換えます。ライセンス制限や特別なルールを指定する必要はありませんが、これらは個人的に非常に有益な経験になるかもしれません。
前のセクションで示したように、デッキを生成してシャッフルし、各手に 5 枚のカードを持ちます。配列インデックスによってカードを表示するので、どのカードが返されるかを指定できます。これは、どのカードを置き換えたいかを示すチェックボックスを使用して行うことができます


リスト 14. チェックボックスを使用して、置き換えるカードを指定します




コードをコピーします
コードは次のとおりです:
foreach ($hand as $index =>$card) { echo " " . $card['face'] . ' of ' . $card['suit'] . "
" ; ;
}
次に、入力配列 $_POST['card'] を計算して、どのカードが置換対象として選択されたかを確認します。

リスト 15. 入力を計算する



コードをコピーする
コードは次のとおりです。
$i = 0; while ($i < 5) { if (isset($_POST['card '][ $i])) { $hand[$i] = array_shift($deck) }
}

;
このスクリプトを使用すると、特定のカードのセットに対処する最適な方法を見つけることができます。
ハングマン ゲーム
ハングマンは基本的に推測ゲームです。単語の長さを考慮すると、限られた数の機会を利用して単語を推測します。単語に現れる文字を推測する場合は、その文字が現れる位置をすべて埋めてください。何度か (通常は 6 回) 間違った推測をすると、ゲームに負けます。大まかな絞首刑執行人ゲームを構築するには、単語のリストから始める必要があります。では、単語リストを単純な配列にしてみましょう。
リスト 16. 単語リストを作成します
コードをコピーします コードは次のとおりです:

$words = array (
"giants",
"triangle",
"particle",
"birdhouse" "、
"minimum"、
"flood"
);

前に説明した手法を使用して、これらの単語を外部の単語リスト テキスト ファイルに移動し、必要に応じてインポートできます。
単語リストを取得したら、ランダムに単語を選択し、各文字を空として表示し、推測を開始する必要があります。推測するたびに、正しい推測と不正解の推測を追跡する必要があります。推測配列をシリアル化し、追跡目的で各推測に渡すだけです。ページのソースを見て人々が推測するのを防ぐ必要がある場合は、より安全な措置を講じる必要があります。
文字と正しい/間違った推測を保持する配列を構築します。正確に推測するには、キーとして文字を、値としてピリオドを配列に入力します。 リスト 17. 文字を保存して結果を推測するための配列の構築
コードをコピー コードは次のとおりです:

$letters = array('a','b','c','d ','e','f','g','h','i','j','k','l','m','n','o',
'p' ,'q' ,'r','s','t','u','v','w','x','y','z')
$right = array_fill_keys($letters); , '.' );
$wrong = array();

単語推測ゲームを完了するには、推測を評価して単語を表示するコードが必要です。
リスト 18. 推測を評価し、進行状況を表示する
コードをコピーする コードは次のとおりです。

if (stristr($word, $guess)) {
$show = ''; [$guess

$wrong[$guess] = $guess;
if (count($wrong) == 6) {
$show = $word
} else {
foreach ($wordletters as $letter) {
$show .= $right[$letter];
}
}
}


ソースコードアーカイブでは、推測配列をシリアル化し、ある推測から別の推測に配列を渡す方法を確認できます。
クロスワード ヘルパー
これが不適切であることは承知していますが、クロスワード パズルをプレイしているときに、C で始まり T で終わる 5 文字の単語を見つけるのに苦労することがあります。 Hangman ゲーム用に構築されたのと同じ単語リストを使用して、パターンに一致する単語を簡単に検索できます。まず、言葉を伝える方法を見つけます。簡単にするために、欠落している文字をピリオドに置き換えます: $guess = "c...t";。正規表現ではピリオドが 1 文字として扱われるため、単語のリストを簡単に反復処理して一致するものを見つけることができます。

リスト 19. 単語リストのトラバース




コードをコピー コードは次のとおりです:
foreach ($words as $word) { if (preg_match("/^" . $_POST['推測'] . "$/",$word)) { echo $word . "
n"
}
}


単語リストの品質と推測の精度に応じて、一致する可能性のある適切な単語リストを取得できるはずです。 「ルール外の遊び」を表す 5 文字の単語の答えが「チェスト」なのか「チート」なのかは、自分で決める必要があります。
Midlibis
Midlibis は、プレイヤーに短い物語が与えられ、主要な種類の単語を同じ種類の別の単語に置き換えて、同じ物語の新しい、より退屈なバージョンを作成する単語ゲームです。次のテキストを読みます。「公園を歩いているときに湖を見つけました。飛び込み、水を飲みすぎました。病院に行かなければなりませんでした。」 単語の種類を他の単語マーカーに置き換え始めます。予期しない文字列の一致を防ぐために、開始タグと終了タグには下線が付いています。

リスト 20. 単語の種類を単語タグに置き換えます




コードをコピーします コードは次のとおりです:

$text = "I was _VERB_ing in the _PLACE_ when I found a _NOUN_.
I _VERB_ed in、そして _VERB_ed too much _NOUN_. I had to go to the _PLACE_."; 次に、いくつかの基本的な単語リストを作成します。 。この例では、あまり複雑にしません。
リスト 21. 基本的な単語リストをいくつか作成します

$verbs = array('pump', 'jump', 'walk', 'swallow', 'crawl', 'wail', 'roll'); = array('公園', '病院', '北極', '海', '食料品', '地下室', '屋根裏部屋', '下水道') $名詞 = array('水', '湖'); 、'唾'、'足'、'ワーム'、
'土'、'川'、'ワンケルロータリーエンジン');

テキストを繰り返し評価して、必要に応じてトークンを置き換えることができるようになりました。

リスト 22. テキストを評価する



コードをコピー
コードは次のとおりです: while (preg_match("/(_VERB_)|(_PLACE_)|(_NOUN_)/", $text, $matches )) { switch ($matches[0]) {
case '_VERB_' :
shuffle($verbs)
$text = preg_replace($matches[0], current($verbs), $text, 1);
break;
case '_PLACE_' :
shuffle($places);
case '_NOUN_' :
shuffle($
大まかな例。単語リストが正確であればあるほど、そしてベーステキストに費やす時間が長くなるほど、より良い結果が得られます。テキスト ファイルを使用して、名前のリストと基本的な単語のリストを作成しました。同じ原理を使用して、ジャンルごとに分割された単語リストを作成し、これらの単語リストを使用してより多様な Midlibis ゲームを作成できます。ロトマシン
6 つの正しいロト番号すべてを選ぶことは、控えめに言っても統計的に不可能です。それでも、多くの人がお金を払ってプレイしているので、数字が気に入ったら、傾向グラフを眺めるのも楽しいでしょう。当選番号を追跡し、リスト内の選択数が最も少ない 6 つの番号を提供できるスクリプトを作成してみましょう。
(免責事項: これは宝くじの賞品を獲得するのに役立つものではないため、チケットにお金を費やさないでください。これは単なる楽しみです)。
当選したロトの選択内容をテキスト ファイルに保存します。数値をカンマで区切って、数値の各グループを別の行に配置します。改行とカンマを使用してファイルの内容を区切って行を区切ると、リスト 23 のような結果が得られます。

リスト 23. 選択した当選ロトをテキスト ファイルに保存します




コードをコピーします
コードは次のとおりです:


$picks = array(
array('6', '10', ' 18 ', '21', '34', '40')、
array('2', '8', '13', '22', '30', '39'), array('3' , '9', '14', '25', '31', '35'), array('11', '12', '16', '24', '36', '37'),
array('4', '7', '17', '26', '32', '33')
); 明らかに、これは統計をプロットするための基本ファイルとしては十分ではありません。しかし、これは始まりであり、基本原則を説明するには十分です。 選択範囲を保持する基本配列を設定します。たとえば、1 ~ 40 の数値を選択した場合 ($numbers = array_fill(1,40,0); など)、選択内容を繰り返し、対応する一致値を増加させます。
リスト 24. トラバース選択




コードをコピー

コードは次のとおりです:

foreach ($picks as $pick) {
foreach ($pick as $number) {
$numbers[$number ]++ ; } }
最後に、数値を値に従って並べ替えます。この操作では、選択された最小の数値が配列の先頭に配置されます。 リスト 25. 値に従って数値を並べ替える


コードをコピーする

コードは次のとおりです。
echo implode (',', array_keys($pick));
実際のロトの当選番号を当選番号のリストを含むテキスト ファイルに定期的に追加することで、数字選びの長期的な傾向を見つけることができます。特定の数字がどのくらいの頻度で現れるかを確認するのは興味深いことです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/322955.html技術記事リスト 1. シンプルなサイコロ ローラー 多くのゲームやゲーム システムではサイコロが必要です。まずは簡単な部分、つまり 6 面体のサイコロを振ることから始めましょう。実際、6 面体のサイコロを振ることは...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

See all articles