バドミントンバトル ソースコード
#! ruby -E Windows-31J:utf-8
# coding: utf-8
#バドミントン戦闘を実行するクラス
require "./TextFileTools"
class BadmintonBattle
def initialize(chara, enemy)
@chara = chara
@enemy = enemy
@tlt = TextListTool::new
#味方がサーブするか否か
@chara_serveken = false
#玉の難易度
@difficulty = 1.0
@chara_point = 0
@enemy_point = 0
end
#メインバトルルーチン
#自分が勝ったらtrue、負けたらfalse
def battle
loop do
if rally == true
print_chara_point
@chara_point += 1
@chara_serveken = true
else
print_enemy_point
@enemy_point += 1
@chara_serveken = false
end
print_point
if @chara_point >= 21
print_chara_win
return true
elsif @enemy_point >= 21
print_enemy_win
return false
end
end
end
#敵のサーブ
def enemy_serve
puts @enemy.name+"はサーブを打った!"
if @enemy.badm_ctrl < rand()*100
puts "しかし、シャトルはおかしな方向に飛んでいってしまった。"
return false
else
return true
end
end
#味方のサーブ
def chara_serve
puts @chara.name+"はサーブを打った!"
if @chara.badm_ctrl < rand()*100
puts "しかし、シャトルはおかしな方向に飛んでいってしまった。"
return false
else
return true
end
end
#ラリー
#味方が勝てばtrue,負ければfalse
def rally
if @chara_serveken
r = chara_serve
if r == false
return false
end
loop do
r = enemy_hitback
if r == false
return true
end
r = chara_hitback
if r == false
return false
end
end
else
r = enemy_serve
if r == false
return true
end
loop do
r = chara_hitback
if r == false
return false
end
r = enemy_hitback
if r == false
return true
end
end
end
end
#味方の打ち返し
def chara_hitback
if @chara.badm_mikiri < rand()*100 * @difficulty
puts @chara.name+"はシャトルを拾いそこねた!"
return false
end
if @chara.badm_ctrl < rand()*100 * @difficulty
puts @chara.name+"はシャトルを打ち返したが、明後日の方向に飛んでいった!"
return false
end
puts @chara.name+"はシャトルを打ち返した!"
return true
end
#敵の打ち返し
def enemy_hitback
if @enemy.badm_mikiri < rand()*100 * @difficulty
puts @enemy.name+"はシャトルを拾いそこねた!"
return false
end
if @enemy.badm_ctrl < rand()*100 * @difficulty
puts @enemy.name+"はシャトルを打ち返したが、明後日の方向に飛んでいった!"
return false
end
puts @enemy.name+"はシャトルを打ち返した!"
return true
end
#ポイント表示
def print_point
puts "【"+@chara.name+"】"+" "+@chara_point.to_s+"pt "+
"VS 【"+@enemy.name+"】"+" "+@enemy_point.to_s+"pt"
puts
end
#味方のポイントゲットセリフ表示
def print_chara_point
t = @tlt.getRandomText(@chara.badm_voice_file)
puts
puts @chara.name+"「"+t+"」"
puts
end
#敵のポイントゲットセリフ表示
def print_enemy_point
t = @tlt.getRandomText(@enemy.badm_voice_file)
puts
puts @enemy.name+"「"+t+"」"
puts
end
#味方が勝利したとき
def print_chara_win
puts @chara.name+"は勝利した!"
puts
puts @chara.name+"「"+@tlt.getRandomText(@chara.badm_win_file)+"」"
puts
puts @enemy.name+"「"+@tlt.getRandomText(@enemy.badm_lose_file)+"」"
puts
end
#敵が勝利したとき
def print_enemy_win
puts @chara.name+"は敗北した!"
puts
puts @enemy.name+"「"+@tlt.getRandomText(@enemy.badm_win_file)+"」"
puts
puts @chara.name+"「"+@tlt.getRandomText(@chara.badm_lose_file)+"」"
puts
end
end
require "./chara.rb"
a = AoiAgent::new
b = ClubBoyAgent::new
c = BadmintonBattle::new(a,b)
c.battle
#####################################################################################
#####################################################################################
cahara.rb
#! ruby -E Windows-31J:utf-8
# coding: utf-8
#葵エージェント
class AoiAgent
attr_accessor :money
attr_accessor :name
attr_accessor :badm_ctrl, :badm_mikiri
attr_accessor :badm_voice_file, :badm_win_file, :badm_lose_file
def initialize
@money=100
@name="葵"
@badm_ctrl = 10
@badm_mikiri = 99
@badm_voice_file = "aoi-badm"
@badm_win_file = "aoi-win"
@badm_lose_file = "aoi-lose"
end
end
#部員
class ClubBoyAgent
attr_accessor :money
attr_accessor :name
attr_accessor :badm_ctrl, :badm_mikiri
attr_accessor :badm_voice_file, :badm_win_file, :badm_lose_file
def initialize
@money=100
@name="小林"
@badm_ctrl = 10
@badm_mikiri = 99
@badm_voice_file = "kobayashi-badm"
@badm_win_file = "kobayashi-win"
@badm_lose_file = "kobayashi-lose"
end
end