PHP ゲームプログラミング用の 25 のスクリプト コード_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() 乱数生成関数の使用
次に、振るサイコロの種類をパラメータとして関数に渡すことができます。
リスト2. サイコロの型をパラメータとして渡す
コードをコピーする コードは次のとおりです:
; 、必要に応じて複数のサイコロを一度にロールし、結果の配列を返すことができます。また、異なる種類の複数のサイコロを一度に振ることもできます。ただし、ほとんどのタスクはこの単純なスクリプトを使用して実行できます。
ランダムネームジェネレーター
ゲームを実行したり、ストーリーを書いたり、一度に多数のキャラクターを作成したりしている場合、絶え間なく流れてくる新しい名前に対処するのが大変な場合があります。この問題を解決するために使用できる単純なランダム名ジェネレーターを見てみましょう。まず、2 つの単純な配列を作成しましょう。1 つは名用、もう 1 つは姓用です。 " ジョン",
"パット",
);
"スミス",
"ジョーンズ",
"ウィンクラー",
"クーパー", "クライン" );各配列からランダムな要素を選択できます: echo $male[array_rand($male)] ' ' 。複数の名前を一度に抽出するには、配列を混合し、必要に応じて抽出するだけです。
コードは次のとおりです。 ;= 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] . ' ' '
. "
";
新しいテキスト ファイルを追加することでシーンに要素を追加できますが、複数の複雑さを追加したい場合もあります。基本的なテキスト ファイルに追加するコンテンツが増えるほど、時間の経過とともにシーンがより多く変化します。
デッキ ビルダーとギア (シャッフル)
リスト 7. 標準的なトランプ デッキの作成
コードをコピーします
$faces = array (
「Two」、「Three」、「Four」、「Five」、「Six」、「Seven」、「Eight」、
「Nine」、「Ten」、" Jack」、「Queen」、「King」、「Ace」
);
次に、カード配列のデッキを構築して、すべてのカードの値を保存します。これは、1 対の foreach ループを使用するだけで簡単に実行できます。
コードをコピーします
$deck[] = array ("face"=>$face, "suit"=>$suit)
}
}
トランプ配列のデッキを構築した後、簡単にデッキをシャッフルして、ランダムにカードを引くことができます。
コードをコピーします
コードは次のとおりです。 $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));
}
リスト 11. 特定のカードを引く確率を計算します
$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. 指定されたカードを検索します
コードをコピーします コードは次のとおりです:
コードをコピーする
コードは次のとおりです:
。
リスト 14. チェックボックスを使用して、置き換えるカードを指定します
コードをコピーします
コードは次のとおりです:
" ; ; }
リスト 15. 入力を計算する
コードをコピーする
コードは次のとおりです。
;
このスクリプトを使用すると、特定のカードのセットに対処する最適な方法を見つけることができます。
ハングマン ゲーム
ハングマンは基本的に推測ゲームです。単語の長さを考慮すると、限られた数の機会を利用して単語を推測します。単語に現れる文字を推測する場合は、その文字が現れる位置をすべて埋めてください。何度か (通常は 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. 単語リストのトラバース
コードをコピー コードは次のとおりです:
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_."; 次に、いくつかの基本的な単語リストを作成します。 。この例では、あまり複雑にしません。
$verbs = array('pump', 'jump', 'walk', 'swallow', 'crawl', 'wail', 'roll'); = array('公園', '病院', '北極', '海', '食料品', '地下室', '屋根裏部屋', '下水道') $名詞 = array('水', '湖'); 、'唾'、'足'、'ワーム'、
'土'、'川'、'ワンケルロータリーエンジン');
テキストを繰り返し評価して、必要に応じてトークンを置き換えることができるようになりました。
リスト 22. テキストを評価する
コードをコピー
$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')
コードをコピー
コードは次のとおりです:
foreach ($picks as $pick) {
foreach ($pick as $number) {
$numbers[$number ]++ ; } }
コードをコピーする
コードは次のとおりです。
echo implode (',', array_keys($pick));
実際のロトの当選番号を当選番号のリストを含むテキスト ファイルに定期的に追加することで、数字選びの長期的な傾向を見つけることができます。特定の数字がどのくらいの頻度で現れるかを確認するのは興味深いことです。

ホット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 にアップグレードする方法について説明します。

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

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

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

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

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

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

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