Last active
August 29, 2015 14:02
-
-
Save pry0cc/f657c5b57fa1251d0528 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Dice | |
def initialize(type) | |
@type = type | |
end | |
def roll | |
case @type | |
when 4 | |
return rand(4) + 1 | |
when 6 | |
return rand(6) + 1 | |
when 12 | |
return rand(12) + 1 | |
end | |
end | |
end | |
class Player | |
attr_accessor :skill | |
attr_accessor :strength | |
def initialize(name) | |
@name = name | |
@skill = 10 | |
@strength = 10 | |
end | |
def acc_state(state, player, strength_m, skill_m) | |
if state.downcase == "won" | |
@strength = player.get_strength + strength_m | |
@skill = player.get_skill + skill_m | |
elsif state.downcase == "lost" | |
@strength = player.get_strength - strength_m | |
if player.get_skill > 0 | |
@skill = player.get_skill - skill_m | |
else | |
@skill = player.get_skill | |
end | |
elsif state == 1 | |
end | |
end | |
def strength(roll) | |
@strength = @strength + roll.round | |
end | |
def get_strength | |
return @strength | |
end | |
def skill(roll) | |
@skill = @skill + roll.round | |
end | |
def get_skill | |
return @skill | |
end | |
def get_name | |
return @name | |
end | |
end | |
class Greeting < Player | |
def initialize(player) | |
@player = player | |
end | |
def greeting(player) | |
puts "Hello! Welcome to something awesome." | |
puts "What would you like #{player} to be called? :" | |
@choice = gets.chomp | |
end | |
def get_name | |
return @choice | |
end | |
end | |
def roll_dice(player) | |
temp_dice12 = Dice.new(12) | |
temp_dice12_roll = temp_dice12.roll | |
temp_dice4 = Dice.new(4) | |
temp_dice4_roll = temp_dice4.roll | |
puts "#{player.get_name} rolled a 12 sided dice, and scored #{temp_dice12_roll}" | |
puts "#{player.get_name} rolled a 4 sided dice, and scored #{temp_dice4_roll}" | |
return (temp_dice12_roll / temp_dice4_roll) | |
end | |
def assign_attr(player) | |
player.strength(roll_dice(player)) | |
puts "#{player.get_name} has a strength of #{player.get_strength}" | |
puts "" | |
player.skill(roll_dice(player)) | |
puts "#{player.get_name} has a skill of #{player.get_skill}" | |
puts "" | |
end | |
class Arena | |
def initialize(player1, player2) | |
@player1 = player1 | |
@player2 = player2 | |
end | |
def qualify(player) | |
game_dice = Dice.new(6) | |
@roll = game_dice.roll | |
puts "#{player.get_name} rolled a #{@roll}" | |
return @roll | |
end | |
end | |
# Function to create the attribute modifiers | |
def modifier_create(player1, player2, attr) | |
case attr.downcase | |
when "strength" | |
p1 = player1.get_strength | |
p2 = player2.get_strength | |
if p1 > p2 | |
diff = p1 - p2 | |
elsif p1 < p2 | |
diff = p2 - p1 | |
elsif p1 == p2 | |
diff = 0 | |
end | |
when "skill" | |
p1 = player1.get_skill | |
p2 = player2.get_skill | |
if p1 > p2 | |
diff = p1 - p2 | |
elsif p1 < p2 | |
diff = p2 - p1 | |
elsif p1 == p2 | |
diff = 0 | |
end | |
end | |
return diff / 5.0 | |
end | |
# Function to write data to file | |
def store_data(player1, player2, filename) | |
local_data = File.open(filename, "w") | |
local_data.puts "Overwritten at #{Time.now}" | |
local_data.puts "-------------------------------------" | |
local_data.puts "Player 1 Name : #{player1.get_name}" | |
local_data.puts "Player 1 Strength : #{player1.get_strength}" | |
local_data.puts "Player 1 Skill: #{player1.get_skill}" | |
local_data.puts "-------------------------------------" | |
local_data.puts "Player 2 Name : #{player2.get_name}" | |
local_data.puts "Player 2 Strength : #{player2.get_strength}" | |
local_data.puts "Player 2 Skill: #{player2.get_skill}" | |
end | |
def battle(player1, player2, draw_count, round_counter) | |
local_arena = Arena.new(player1, player2) | |
player1_roll1 = local_arena.qualify(player1) | |
player2_roll1 = local_arena.qualify(player2) | |
if player1_roll1 > player2_roll1 | |
puts "#{player1.get_name} wins round #{round_counter}!" | |
puts "" | |
return player1 | |
elsif player2_roll1 > player1_roll1 | |
puts "#{player2.get_name} wins round #{round_counter}!" | |
puts "" | |
return player2 | |
elsif player1_roll1 == player2_roll1 | |
puts "There was a Draw round #{round_counter}!" | |
puts "" | |
return draw_count | |
end | |
end | |
## Get name for player 1 and assigns it to an object and a variable | |
greeting1 = Greeting.new("Player 1") | |
greeting1.greeting("Player 1") | |
player_1 = Player.new(greeting1.get_name) | |
puts "Player 1 Added as #{player_1.get_name}!" | |
## Gets name for player 2 and assigns it to an object and a variable | |
greeting2 = Greeting.new("Player 2") | |
greeting2.greeting("Player 2") | |
player_2 = Player.new(greeting2.get_name) | |
puts "Player 2 Added as #{player_2.get_name}!" | |
## Determines and Assigns strength and skill atrributes to both players | |
assign_attr(player_1) | |
assign_attr(player_2) | |
draw_count = Player.new("Draw!") | |
# Creates strength modifier for both players | |
strength_modifier = modifier_create(player_1, player_2, "strength") | |
puts "Strength Modifier = #{strength_modifier}" | |
# Creates skill modifier for both players | |
skill_modifier = modifier_create(player_1, player_2, "skill") | |
puts "Skill Modifier = #{skill_modifier}" | |
# Writes data to file named 'savedat.dat' | |
store_data(player_1, player_2, "savedat.dat") | |
# Repeats the battle 10 ten times | |
# 10.times { battle(player_1, player_2) } | |
sleep 2 | |
#ruby_arena = Arena.new(player_1, player_2) | |
#ruby_arena.fight | |
round_no = 1 | |
100000000.times { | |
battle_winner = battle(player_1, player_2, draw_count, round_no) | |
battle_looser = player_2 if battle_winner == player_1 | |
battle_looser = player_1 if battle_winner == player_2 | |
battle_winner.acc_state("won", battle_winner, strength_modifier, skill_modifier) unless battle_winner == draw_count | |
battle_looser.acc_state("lost", battle_looser, strength_modifier, skill_modifier) unless battle_winner == draw_count | |
puts "#{player_1.get_name} is winning!!!" if player_1.get_strength > player_2.get_strength | |
puts "#{player_2.get_name} is winning!!!" if player_2.get_strength > player_1.get_strength | |
puts "" | |
puts "#{player_1.get_name} has a strength of #{player_1.get_strength.round(2)}" | |
puts "#{player_1.get_name} has a skill of #{player_1.get_skill.round(2)}" | |
puts "#{player_2.get_name} has a strength of #{player_2.get_strength.round(2)}" | |
puts "#{player_2.get_name} has a skill of #{player_2.get_skill.round(2)}" | |
puts "" | |
puts "#{player_2.get_name} DIED A MISERABLE DEATH" if player_2.get_strength <= 0 | |
puts "#{player_1.get_name} takes victory!!!!" if player_2.get_strength <= 0 | |
puts "#{player_1.get_name} DIED A MISERABLE DEATH" if player_1.get_strength <= 0 | |
puts "#{player_2.get_name} takes victory on round number #{round_no}!!!" if player_1.get_strength <= 0 | |
exit if player_2.get_strength <= 0 || player_1.get_strength <= 0 | |
round_no += 1 | |
sleep 0.01 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment