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

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

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

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

Q&A

0回答

906閲覧

エラーメッセージがないのに画面が黒くなりゲーム画面になりません。

TakeshiSaito

総合スコア7

Python

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

0グッド

0クリップ

投稿2021/12/28 03:37

編集2021/12/28 09:53

表題の通りゲーム画面にならずpygameの画面が黒くなりEcounterという文字しか表示されません。
ご教示頂ければ幸いです
よろしくお願いいたします。

python

1import pygame 2import sys 3import random 4from pygame.locals import * 5 6WHITE = (255,255,255) 7BLACK = ( 0, 0, 0) 8 9imgBtlBG = pygame.image.load("btlbg.png") 10imgEffect =pygame.image.load("effect_a.png") 11imgEnemy = pygame.image.load("enemy4.png") 12emy_x = 440-imgEnemy.get_width()/2 13emy_y = 560-imgEnemy.get_height() 14emy_step = 0 15emy_blick = 0 16dmg_eff = 0 17COMMAND = ["[A]ttack", "[P]otion", "[B]laze", "[R]un"] 18 19message = [""]*10 20def init_message(): 21 for i in range(10): 22 message[i] == "" 23 24def set_message(msg): 25 for i in range(10): 26 if message[i] == "": 27 message[i] = msg 28 return 29 for i in range(9): 30 message[i] == [i+1] 31 message[9] = msg 32 33def draw_text(bg, txt, x, y, fnt, col): 34 sur = fnt.render(txt, True, BLACK) 35 bg.blit(sur, [x+1, y+2]) 36 sur = fnt.render(txt, True, col) 37 bg.blit(sur, [x, y]) 38 39def draw_battle(bg, fnt): 40 global emy_blick, dmg_eff 41 bx = 0 42 by = 0 43 if dmg_eff > 0: 44 dmg_eff = dmg_eff - 1 45 bx = random.randint(-20, 20) 46 by = random.randint(-10, 10) 47 bg.blit(imgBtlBG, [bx, by]) 48 if emy_blink%2 == 0: 49 bg.blit(imgEnemy, [emy_x, emy_y+emy_step]) 50 if emy_blink > 0: 51 emy_blink = emy_blink - 1 52 for i in range(10): 53 draw_text(bg, message[i], 600, 100+i*50, fnt, WHITE) 54 55def battle_command(bg, fnt): 56 for i in range(4): 57 draw_text(bg, COMMAND[i], 20, 360+60*i, fnt, WHITE) 58 59def main(): 60 global emy_step, emy_blink, dmg_eff 61 idx = 10 62 tmr =0 63 64 pygame.init() 65 pygame.display.set_caption("ターン制の処理") 66 screen = pygame.display.set_mode((880, 720)) 67 clock = pygame.time.Clock() 68 font = pygame.font.Font(None, 30) 69 70 init_message() 71 72 while True: 73 for event in pygame.event.get(): 74 if event.type == pygame.QUIT: 75 pygame.quit() 76 sys.exit() 77 78 draw_battle(screen, font) 79 tmr = tmr + 1 80 key = pygame.key.get_pressed() 81 82 if idx == 10: #戦闘開始 83 if tmr == 1: set_message("Encounter!") 84 if tmr == 6: 85 idx = 11 86 tmr = 0 87 88 elif idx == 11:#プレイヤー入力待ち 89 if tmr == 1: set_message("Your turn.") 90 battle_command(screen, font) 91 if key[K_a] == 1 or key[K_SPACE] == 1: 92 idx = 12 93 tmr = 0 94 95 elif idx ==12: #プレイヤーの攻撃 96 if tmr == 1: set_message("You attack") 97 if 2 <= tmr and tmr <= 4: 98 screen.blit(imgEffect, [700-tmr*120, -100+tmr*120]) 99 if tmr ==5: 100 emy_blick = 5 101 set_message("***pts of damage!") 102 if tmr == 16: 103 idx = 13 104 tmr = 0 105 elif idx == 13: #敵のターン、敵の攻撃 106 if tmr == 1: set_message("Enemy turn.") 107 if tmr == 5: 108 set_message("Enemy attack!") 109 emy_step = 30 110 if tmr == 9: 111 set_message("***pts of damage!") 112 dmg_eff = 5 113 emy_step = 0 114 if tmr == 20: 115 idx = 11 116 tmr = 0 117 118 pygame.display.update() 119 clock.tick(5) 120 121if __name__ == '__main__' : 122 main() 123 124 125

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

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

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

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

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

melian

2021/12/28 04:08

全体の処理の流れがよく分からないのですが、以下の部分の idx の値が更新されていないので、Ecounter がずっと表示されることになってしまっています。 if idx == 10: #戦闘開始 if tmr == 1: set_message("Ecounter!") if tmr == 6: inx = 11 tmr = 0
TakeshiSaito

2021/12/28 05:03

いつも大変お世話になっております。 inx は打ち間違いでidxに訂正致しました。 これでEcounterがずっと表示されることはなくなりましたが、pygameの画面が黒くなるのがまだ修正できていません。 画面が黒くなるのは画面の更新がうまくいっていないと思うのですが、どこを修正して良いのかがわかりません。 もしよろしければご教示頂ければ幸いです。
1T2R3M4

2021/12/28 05:09

>どこを修正して良いのかがわかりません ご自身で書かれたコードではないのでしょうか。
melian

2021/12/28 07:18

こちらで試してみたところ、メニューが表示されて 右側に「Your turn」と表示されるのでスペースキーを押すと、「You attack」「***pts of damage!」「Ememy tune」「Enemy attack!」 と表示されていきます。最後に、 UnboundLocalError: local variable 'emy_blink' referenced before assignment と表示されて異常終了します。
TakeshiSaito

2021/12/28 10:01

お手数をおかけしてすみません。 スペルと行間の訂正を行いましたが、同様のエラーが出続けています。 明日、自分でも見直しをします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問