次回→https://qiita.com/Red-Jersey/items/cf28a8821a8fab17b7cb
勇者の旅立ち
こんにちは。赤ジャージです。
唐突ですが、僕がプログラミングを始めた時からなんとなーくpygameでRPG作りたいなーと思ってました。そこで、本当に作ってみよう、というのが今回の趣旨です。
この冒険(投稿)の意味
今の時代、このようなスレッドや投稿は、満ち溢れています。私がこれを投稿したとして、社会に対して何の意味もありません。しかし、学業をかなぐり捨てた不毛な学生生活の僅かばかりの成果として、見える形で記録に残しておきたいという自らの願望、これを満たすために書いていきます...
スペック(前提)
・一応pythonに関する知識はある。
・pygameに関する知識が全くない(という設定)
・RPGを作りたいけどどうやったらいいか全くわからない
What do I do ?
RPGは、数々のゲームの中で最も製作難易度の高いジャンルの一つです(他にも格ゲーとか3Dゲームとか...)。そのため、いくつかの手順を踏む必要があります。そのいくつかの手順を考える前にしばらくはpygameの機能の確認をしておきましょう。
ウィンドウの表示
いきなり難関です。初心者の心を折りに来ている。きっとRPGを作ろうとした多くの冒険者が、最初の門の難しさに挫折し、そのウィンドウを閉じたでしょう。序盤のダンジョンが難しすぎて諦めるアレです。しかし、しつこく粘って理解しようとすれば意外と簡単です。この投稿で分からなければ他の数百倍わかりやすい所へどうz(殴
# coding: utf-8
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("ウィンドウの作成")
while True:
screen.fill((0,0,0))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
これが、pygameを使う上での基本的なコードになります。
まず、pygameを初期化し、Surfaceオブジェクトを作成、タイトルをセットする。そしてゲームループの中で様々な処理を行い、Surfaceオブジェクトを表示するという一連の流れになっています。
関数、変数、キーワードの解説
・pygame.init()
: pygameを初期化します。
・screen
: pygame上では、Surfaceオブジェクトのことをscreen
と表記するのが一般的です。
・pygame.display.set_mode((640,480))
: この関数で、Surfaceオブジェクトを作成します。引数の(640,480)
はscreen
の大きさを指します。
・while True:
: ゲームループの処理を行います。pygameでは、ループ処理をすることによって1フレームごとに処理を行います。(パラパラ漫画みたいなイメージ)
・screen.fill((0,0,0))
: 画面を引数の色で塗りつぶします。これはRGBで表記し、この場合(0,0,0)
なので黒色です。
・for event in pygame.event.get():
: イベント(何らかの入力)があるか調べます。これが、pygameの肝です。
・if event type == QUIT:
: quitボタン(windowsでは右上の×ボタン)が押されたかどうか判定します。event.type
とはイベントの種類を指します。
・pygame.quit()
: pygameの機能を中止します。
・sys.exit()
sysライブラリは、pygameのウィンドウ表示に関する制御を行っています。このsys.exit()
の場合、ウィンドウを閉じます。
・pygame.display.update()
: ウィンドウを更新し、表示します。pygameでは、ゲームループで行った処理をscreen
に表示し、それをウィンドウに貼り付け、最後にウィンドウを表示するという処理がなされています。display
というのはウィンドウのことです。
まとめ
処理の流れとしては、
プレイヤーがゲームを起動する。
スクリーンを作る、変数を入手する
A(While True)
イベントがあるか判定する
処理を行う
ウィンドウを更新する
Aに戻る
という流れになっています。
Result
pygameって煩雑で分かりにくく奥が深い。疲れました。おそらく機能の確認は長くなりますが、それまで耐えてください。まずは武器調達です。 武器がなければ、戦えません。覚えましょう。まあ覚えることはそんなにない(当社比)ので安心してください!