コードを改造したらフリーズした

実現したいこと

入門書にあるゲームを改造したい

前提

入門書にあるゲームを改造しています。57行目以降を改造したところ、戦闘勝利後に「キーを押すまで次に進まない」というのを実現したいのですが、エラーが出てしまいます。

発生している問題・エラーメッセージ

ボタンを押しても次に進まず、フリーズしてしまう。

該当のソースコード

python3

1def battle_command(bg, fnt, key): # コマンドの入力と表示 2 global btl_cmd 3 ent = False 4 if key[K_a]: # Aキー 5 btl_cmd = 0 6 ent = True 7 if key[K_p]: # Pキー 8 btl_cmd = 1 9 ent = True 10 if key[K_b]: # Bキー 11 btl_cmd = 2 12 ent = True 13 if key[K_r]: # Rキー 14 btl_cmd = 3 15 ent = True 16 if key[K_UP] and btl_cmd > 0: #↑キー 17 btl_cmd -= 1 18 if key[K_DOWN] and btl_cmd < 3: #↓キー 19 btl_cmd += 1 20 if key[K_SPACE] or key[K_RETURN]: 21 ent = True 22 for i in range(4): 23 c = WHITE 24 if btl_cmd == i: c = BLINK[tmr%6] 25 draw_text(bg, COMMAND[i], 20, 360+i*60, fnt, c) 26 return ent 27 28#以下、問題となってる部分 29 elif idx == 16: # 勝利 30 draw_battle(screen, fontSS,fontLOG) 31 if tmr == 1: 32 set_message("You win!") 33 pygame.mixer.music.stop() 34 se[5].play() 35 if tmr == 28: 36 if random.randint(0, emy_lifemax) > random.randint(0, pl_lifemax): 37 idx = 17 38 tmr = 0 39 else: 40 while not(battle_command(screen, font, key) == True): 41 None 42 idx = 22 43 44 elif idx == 17: # レベルアップ 45 draw_battle(screen, fontSS,fontLOG) 46 if tmr == 1: 47 set_message("Level up!") 48 se[4].play() 49 lif_p = random.randint(10, 20) 50 str_p = random.randint(5, 10) 51 if tmr == 21: 52 set_message("Max life + "+str(lif_p)) 53 pl_lifemax = pl_lifemax + lif_p 54 if tmr == 26: 55 set_message("Str + "+str(str_p)) 56 pl_str = pl_str + str_p 57 if tmr == 50: 58 while not(battle_command(screen, font, key) == True): 59 None 60 idx = 22 61

補足

コードは一部載せてあります。

試したこと 調査したこと

58行目のwhile not の条件式をkey[K_SPACE]にしてもフリーズした。
while文には入れている模様。

コメントを投稿

0 コメント