何の仕様がわからないのでしょうか?
Rubyでゲームを作成しているのですが、戦闘の間の表示をこのように表示したいです。
Ruby
1class PokemonBattle 2 def initialize(pokemon_a, pokemon_b) 3 @turn_count = 0 4 @players = [pokemon_a, pokemon_b] 5 end 6 7 def game_start! 8 loop do 9 turn_phaze! 10 battle! 11 print_battle_situation 12 break if game_over? 13 end 14 end 15 16 private 17 18 def turn_phaze! 19 @turn_count += 1 20 puts [ 21 "*******", 22 "第#{@turn_count}線", 23 "*******" 24 ] 25 end 26 27 def late 28 sleep(1) 29 end 30 31 32 def battle! 33 pokemon_a, pokemon_b = @players 34 if pokemon_a.attack_power > pokemon_b.attack_power 35 pokemon_b.taken_damage!(pokemon_a.attack_power) 36 else 37 pokemon_a.taken_damage!(pokemon_b.attack_power) 38 end 39 end 40 41 42 43 44 def print_battle_situation 45 pokemon_a, pokemon_b = @players 46 if pokemon_a.attack_power > pokemon_b.attack_power 47 puts [ 48 "#{pokemon_a.name}の残りHP:#{pokemon_a.vitality}", 49 "#{pokemon_b.name}の残りHP:#{pokemon_b.vitality}", 50 ("#{pokemon_b.name}はやられてしまった!" if pokemon_b.defeated?) 51 ] 52 else 53 puts [ 54 "#{pokemon_b.name}の残りHP:#{pokemon_b.vitality}", 55 "#{pokemon_a.name}の残りHP:#{pokemon_a.vitality}", 56 ("#{pokemon_a.name}はやられてしまった!" if pokemon_a.defeated?) 57 ] 58 end 59 end 60 61 def game_over? 62 @players.find(&:defeated?) 63 end 64end 65 66class Pokemon 67 attr_reader :name, :vitality, :attack_power 68 69 def initialize(**opts) 70 @name = opts[:name] 71 @vitality = opts[:vitality] 72 @attack_power = opts[:attack_power] 73 end 74 75 def own_status 76 "なまえ:#{@name}, たいりょく: #{@vitality} , こうげき:#{@attack_power}" 77 end 78 79 def defeated? 80 @vitality <= 0 81 end 82 83 def taken_damage!(attack_power) 84 @vitality -= attack_power 85 end 86end 87pidgey = Pokemon.new(name: "ピカチュウ",vitality: 30, attack_power:13) 88clefairy = Pokemon.new(name: "ゼニガメ", vitality: 50,attack_power: 6) 89battle = PokemonBattle.new(pidgey.clone, clefairy.clone) 90battle.game_start! 91
回答1件
あなたの回答
tips
プレビュー