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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1045閲覧

Rubyの文字出力について

Spell1628

総合スコア11

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/09/20 11:58

編集2018/09/21 07:35

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

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

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

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

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

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

otn

2018/09/20 12:00

何の仕様がわからないのでしょうか?
Spell1628

2018/09/20 12:06

実行した際に文字の出力を戦闘ごとに時間のラグを一秒ほどあけたいのですが、そこの部分が分かりません。
guest

回答1

0

ベストアンサー

f.rb

ruby

1def show_str(str) 2 str.each_char do |c| 3 putc(c) 4 STDOUT.flush 5 sleep(1) 6 end 7end 8 9show_str("ABC\n") 10show_str("あいうえお\n")

実行例
イメージ説明

投稿2018/09/20 22:12

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問