質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1527閲覧

pygameで作成したゲームがタイトルから動かない

AoiTakahashi

総合スコア0

RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/08 14:18

編集2022/01/12 10:55

pygameで作ったRPGゲームをタイトル画面から動かしたいです。初心者です。

"pythonでつくるゲーム開発入門講座"という著書にかいてあったコードを真似てRPGゲームを作成したのですが、スペースキーを押しても音楽は切り替わったまま画面はタイトル画面からずっと進まないままです。
原因がわかる方、どうかよろしくお願いします。

python

1 2if idx==0: 3 if tmr==1: 4 pygame.mixer.music.load("ohd_bgm_title.ogg") 5 pygame.mixer.music.play(-1) 6 screen.fill(BLACK) 7 screen.blit(imgTitle,[40,60]) 8 if fl_max>=2: 9 draw_text(screen,"You reached floor {}.".format(fl_max),300,460,font,CYAN) 10 draw_text(screen,"Press space key",320,560,font,BLINK[tmr%6]) 11 if key[K_SPACE]==1: 12 make_dungeon() 13 put_event() 14 floor=1 15 welcome=15 16 pl_lifemax=300 17 pl_life=pl_lifemax 18 pl_str=100 19 food=300 20 potion=0 21 blazegem=0 22 idx=1 23 pygame.mixer.music.load("ohd_bgm_field.ogg") 24 pygame.mixer.music.play(-1) 25 26 27

以上がタイトル画面のコードです。
分かりにくかったらおっしゃってくださると助かります!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/05/08 14:22

コードは「コードの挿入」で記入してください。
guest

回答1

0

質問には「問題の再現できる」コードの掲載をお願いします。
部分抜粋の場合、元コードのミスなのか、サイト上での編集ミスなのか判断が付きません。

  • コピー&ペーストして実行できるものが望ましいです。
  • 画像や音声ファイルも、問題の再現に不要なら省きます。

 第三者視点では、コードを実行するためにファイルを準備する必要が出てきます。

書籍のサイトからソースコードをダウンロードできるようなので、
そちらを確認すると良いかもしれません。

但し、まるごと転載は非推奨ですし、
パスワードが掛けられていることから規約的に問題がありそうなので、
デバッグの方針のみ回答します。


コードの全容がわからないので、見た感じで気になる点ですが

  • タブ文字とスペースが混在してないかを確認してみてください。
  • もしくは、elif idx==1: という箇所があればその部分のインデント幅。

タブが混在している場合、エディタでの表示は問題なさそうに見えても
意図通りの構造になっていないということもあります。

python

1# 気になる点: 1段階目のインデント幅は12 だが 2段階目のインデント幅は4 2 3if idx==0: 4 if tmr==1: 5 pygame.mixer.music.load("ohd_bgm_title.ogg") 6 7 # (略) 8 9elif idx==1: # という箇所があるはずなので 10 # print文等をいれて、まずはここのコードが実行されているかどうかを確認。 11 print("idx == 1")

正しいコードでは、idx == 0: はループ内なので、少なくとも行頭には来ないはずです。

python

1def main(): 2 ... 3 4 while True: 5 ... 6 7 if idx==0: 8 ... 9 if key[K_SPACE]: 10 # スペースが押された時 11 idx = 1 12 print("set idx=1") 13 ... 14 elif idx==1: 15 ... # ここが呼ばれることを確認する 16 print("idx==1")
  • まずは、idx = 1 が呼ばれることを確認して、
  • idx==1 の時のコードが実行されていないのか、

 コードは実行されてるが画面が切り替わらないのか、問題点を切り分けましょう。
後者の場合は、idx==1 の時のコードを提示しないと問題点は解りません。

print文のところは、コードの実行を確認するための手段なので何でも良いです。
慣れてきたら、loggingモジュールの利用等が推奨。

投稿2021/05/09 15:56

teamikl

総合スコア8664

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問