Python で独自のアドベンチャー ゲームをコーディングする方法
Raspberry Pi (新しいタブで開きます)は素晴らしいテクノロジーですが、多くの人がその可能性を最大限に活用していません。Raspberry Pi を使用すると、環境を感知するロボット、映画を見るためのメディア センター、または単純なコード行と自分自身の豊富な想像力から作成されるファンタジーと冒険の世界など、望むものは何でも作成できます。
1980 年代、コンピューター グラフィックスはまだ初期段階にあり、ブロック状のゲーム キャラクターや使用できる色のパレットが限られていました。アドベンチャー ゲームやロールプレイング ゲームは完全にテキスト駆動であり、プレイヤーが想像力を駆使してゲーム世界のビジョンを作成するのが非常に一般的でした。
Zork などのゲームは、魅力的なストーリーとキャラクターを備えた豊かな世界を作成しましたが、環境を説明するグラフィックスはほとんどありませんでした。これは 1980 年代後半から 90 年代初頭まで当てはまりましたが、Loom、Monkey Island、Full Throttle などの古典的なグラフィック アドベンチャー ゲームのコレクションを作成した LucasArts による素晴らしい作品によってのみ変化しました。
- 素晴らしい Raspberry Pi プロジェクトのコレクションをチェックしてください(新しいタブで開きます)
このチュートリアルでは、Raspberry Pi と Python と呼ばれるプログラミング言語を使用して、独自のゲーム世界とその世界に住むいくつかのキャラクターを備えた独自のテキスト アドベンチャーを作成します。これらはすべて、Python コードといくつかのプログラミング概念を使用して作成されます。
Python は学びやすいプログラミング言語であり、英国中の Raspberry Pi ユーザーや学校で根強い人気を誇っています。
では、Python とは何でしょうか?
Python はテキスト形式のプログラミング言語であり、エディターに入力することを意味します。Python は非常に寛容な構文を使用しており、非常に読みやすいため、コードの学習が非常に楽しいものになります。
Raspberry Pi には、標準として優れたコード エディターがすでにインストールされています。これは IDLE と呼ばれ、ゲームの構築に使用します。IDLE へのリンクは Raspberry Pi デスクトップにあります。
Python は、Raspbian オペレーティング システムを実行しているすべての Raspberry Pi にプリインストールされています。Raspbian が Pi にインストールされていない場合は、Raspberry Pi Web サイト(新しいタブで開きます)からコピーを入手できます。
これは使いやすい NOOBS (New Out Of the Box Software) アーカイブの一部であり、ダウンロードして空の 4GB (またはそれ以上) SD カードに抽出できます。
現在、Python にはバージョン 2.7 と 3 の 2 つのバージョンが利用可能です。このチュートリアルでは、サポートとドキュメントが最も充実している 2.7 を使用します。Python 3 は学習するのに優れた言語であり、間違いなくこの言語の未来ですが、現在は流動的な状態にあるため、経験豊富な Python プログラマーのみが使用する必要があります。
物語を作る
私たちのゲームには 2 つのものが必要です。プレイヤーを楽しませ続けるストーリーと、ストーリーの展開を制御するロジックです。私たちの物語では、魔法と冒険が隅々まで広がるナルレの世界を作成しています。そして私たちは、この土地とそこに落ちている暗い影についてもっと知るために、土地を旅し、新しい村や集落を訪れ、人々と話す必要があるヒーロー、つまりあなたを作成しています。
プロジェクトを開始するために、皆さんが拡張できるようにいくつかの物語を作成しました。自由にストーリーを自分のものにしてください – それがこのチュートリアルのすべてのポイントです。これはあなたのゲームです。開始できるように、スターター テンプレートとして機能するコードをいくつか作成しました。ここ(新しいタブで開きます) から無料のコピーをダウンロードできます。
コードをダウンロードし、IDLE を使用して開きます (「ファイル > 開く」を選択し、コードをダウンロードした場所に移動します)。コードを見て、# で始まる行に特に注意してください。これらはコード内のコメントであり、その時点でコードが何を行っているかを理解するために追加されています。
現在、コードには拡張するための基本的なストーリーがあり、このチュートリアルの過程でそれを実行します。私たちのストーリーは、物語を形成するテキストのブロックによって展開されます。各ブロックは次のように見えることがわかります。
Chapter1 = 「寒い夜でした、そして雨が吹き込みました
神のみぞ知る凶暴な西方」
これらは変数と呼ばれ、多くのテキストや数値を保存できるようになります。ストーリーを含めるためにそれらを使用し、それらを使用したい場合は、次のように print 関数を使用します。
第 1 章を印刷する
print 関数は変数の内部を調べ、その内容を画面に出力します。これは非常に便利で、ストーリーを一度書くだけで済み、何度でも再利用できます。
プログラミングの概念
Python は非常に理解しやすいため、学習するのに非常に優れた言語です。Python でプログラミング ロジックの概念をマスターすれば、より大規模なアプリケーションの開発に進むことができます。
使用する言語に関係なく、コーディングの基礎となる概念は、多くの言語で使用できる強固な基盤を提供します。主な概念は次のとおりです。
シーケンス
特定の順序で完了する必要がある一連のタスク。たとえば、迷路を解くために必要な手順などです。
ループ
シーケンスを繰り返す方法。永久に実行することも (True の間)、for ステートメントを使用して制御することもできます (for x in range(0,3))。
平行度
複数のコードシーケンスを同時に実行する。
イベント
イベントは、一連のコードを開始するトリガーであり、作成しているゲームで最も目立つイベントは、ゲームを開始するためにヒーローの名前を入力することです。
データ
変数を使用してヒーローの名前の値を保存し、後でその変数を取得して操作して、ゲーム全体でプレイヤーの名前を表示し、ゲーム体験をパーソナライズできます。
条件文
条件はロジックの基礎を形成し、データをプレーヤーによって与えられた入力と比較する方法を提供します。ゲームでは条件文を使用して、与えられた答えと予想される答えを比較しました。それらが一致した場合、ブール論理では、これは TRUE として分類されます。
オペレーター
これらは私たちが学校で学んだ基本的な数学的規則です。演算子をテキストや数値に適用できるため、コード内で計算を実行し、必要に応じてデータを反復することができます。
1. ゲームをプレイする
IDLE には、コードを含むエディターと、ゲームがプレイされるシェルという 2 つのウィンドウがあります。ゲームを起動するには、エディタで「実行」をクリックし、次に「モジュールの実行」をクリックします。
シェル ウィンドウが 1 つおきのウィンドウの前に表示され、ゲームのプレイが開始されます。
2. モジュールをインポートする
他のコーダーが作成したモジュールを自分のコードにインポートできます。2 つのモジュールをインポートしています。 Random には、キャラクターにランダムな選択を使用できるようにするコードが含まれています。もう 1 つは「時間」です。これにより、時間を操作したり、ゲームを一時停止したりできます。
3. 関数の作成
多くのコードを 1 つの関数にグループ化できます。これを作成するには、def name() を使用します。 – これにより、name という関数が作成され、その関数を自由に呼び出すことができます。
[Enter] を押すと、Python はコードを 4 つのスペースでインデントし、この関数でコードが実行されるのを待ちます。
4. 変数を使用する
変数を使用して、後で使用できる情報を保存します。たとえば、私たちはナラティブを保存し、何度も再利用します。変数を空のボックスと考えてください。変数には何でも入れて、側面に名前を書くことができます。
いくつかの変数名で「グローバル」という用語が使用されていることがわかります。これにより、関数の内部と外部でそれらを使用できるようになります。
5. 入力を取得する
Raw 入力は、プレーヤーからの入力を求める Python の方法です。これを使用して、プレイヤーの名前を取得し、ゲーム内での決定を取得します。
生の入力はキーボード入力をテキスト文字列としてキャプチャするため、キャプチャされた数値は整数または浮動小数点に変換する必要があります。これは int() および float() ヘルパー関数を使用して行うことができます。
6. 選択をする
条件文は論理的な選択です。私たちはそれらを使ってゲームの流れをコントロールします。たとえば、どの方向に進みますか?
プレイヤーが進みたい方向を move という変数として保存し、変数に保存されている値とユーザーに押すように要求したキーを比較します。2 つが一致する場合、関連するコードが実行されます。
7. Else と else if
If..elif..else はさらなる条件ステートメントであり、次のように機能します。最初の条件が調べられ、それが正しい場合 (または Python では true)、この条件の下にあるコードが実行されます。それ以外の場合 (elif) この条件が true の場合、このステートメントのコードが実行されます。
それ以外の場合、上記の条件がすべて false の場合、これは true でなければならないため、このコードが実行されます。
8. リストを使用する
リストは、大量のデータを保持できる大きなコンテナです。書類が詰まったファイルキャビネットのようなものだと考えてください。私たちのゲームでは、アイテム (剣と盾) の在庫を保存するためにリストを使用しました。
まず、以下を使用して空のリストを作成します。
「武器 = []」
変数と同じように、リストに任意の名前を付けることができます。リストに追加するには、以下を使用します。
Weapons.append("剣")
9. 番号を選択します
乱数は、ヒーローを完全にユニークにするのに役立ちます。これらの数値をランダムに選択するには、random モジュール、特に randint (random integer) と呼ばれる関数を使用します。
randint を使用するには、数値の範囲を指定する必要があります。これは次のように行われます。
ランディント(5,20)
これにより、5 から 20 までの範囲が作成され、randint にその範囲内の乱数を選択するように要求されます。
10. 人を紹介する
私たちのゲームには話し相手になる興味深い人が必要なので、ゲームを作成しましょう。コードの 57 行目に、ランダムな村人を処理する新しい関数があることがわかります。
それらの名前はランダムでリストから選択されますが、最初にリストをシャッフルしてから、リストから最初の項目を選択します。Python では、これは常に 0 (ゼロ) または npcnamechoice[0] です。
11. ストーリーを展開する
ゲームに新しいコンテンツを追加するのは簡単です。新しいキャラクターや村人を追加したい場合は、新しい機能を作成するのが最善の方法です。そうすることで、各新しいエントリのコードは独自の関数に含まれますが、ゲーム内で簡単に使用できます。
ナラティブでは、これらの機能を組み合わせて、プレイヤーが従うべき直線的なストーリーを提供する必要があります。
12. 喧嘩を売る
戦闘についてはどうですか?敵は村人と同じ方法で作成できますが、ヒーローに与えたのと同じように、ランダムに割り当てられた健康ポイントと魔法のポイント (冒険では HP と MP が話します) を与えたいと思うかもしれません。
敵を含む新しい関数を作成し、それをコードの設定ポイントに配置して、コードをテストします。
13. 文字列と数値を結合する
テキスト、または Python で言えば文字列を操作するとき、文字列と数値を結合したい場合があります。次のようにしてみると:
「こんにちは」+ 1 を印刷します
Python は、2 つを結合できないことを示すエラーを生成します。しかし、整数を str() というヘルパー関数でラップすると、次のように両方を結合できます。
print "こんにちは" + str(1)
- この記事は気に入りましたか? Linux の知識を広げ、コードからさらに多くのことを引き出し、Linux Format 内の最新のオープンソース開発を発見してください。今すぐサンプラーを読んで、その中の特典を活用してください。(新しいタブで開きます)