Skip to content

Commit

Permalink
Harder, better, faster, stronger!!!
Browse files Browse the repository at this point in the history
  • Loading branch information
clowder committed Oct 6, 2011
1 parent ba0ebd1 commit 3d49830
Show file tree
Hide file tree
Showing 4 changed files with 435 additions and 14 deletions.
2 changes: 1 addition & 1 deletion play.rb
Expand Up @@ -10,9 +10,9 @@

game = Battleship::Game.new(10, [2, 3, 3, 4, 5], *players)
renderer = Battleship::ConsoleRenderer.new
renderer.render(game)

until game.winner
sleep 0.5
game.tick
renderer.render(game)
end
Expand Down
41 changes: 28 additions & 13 deletions play_100.rb
Expand Up @@ -6,24 +6,39 @@
load path
end

winners = {}
move_counts = []
@winners = {}
@move_counts = {}
@render = ARGV[2] == 'all' ? :all :
ARGV[2] == 'final' ? :final : false
@renderer = Battleship::ConsoleRenderer.new if !!@render
@players = ARGV[0,2].map{ |s| Module.const_get(s).new }

100.times do |i|
players = ARGV[0,2].map{ |s| Module.const_get(s).new }
game = Battleship::Game.new(10, [2, 3, 3, 4, 5], *@players)

game = Battleship::Game.new(10, [2, 3, 3, 4, 5], *players)
until game.winner
game.tick
@renderer.render(game) if :all == @render

begin
game.tick
rescue SystemStackError
puts "BOOM -- There's a bug"
Battleship::ConsoleRenderer.new.render(game)
debugger; p 'init'
end
end


@renderer.render(game) if :final == @render

puts "\e[H\e[2J" + "#{i + 1}"

winners[game.winner.name] ||= 0
winners[game.winner.name] += 1
move_counts << game.move_count

@winners[game.winner.name] ||= 0
@winners[game.winner.name] += 1
@move_counts[game.winner.name] ||= []
@move_counts[game.winner.name] << game.move_count
end

puts ""
puts "Results after 100 runs: #{winners.inspect}"
puts "Average number of moves: #{move_counts.inject(&:+) / move_counts.count}"
puts "\nResults after 100 runs: #{@winners.inspect}"
@move_counts.each do |key, value|
puts "Average number of moves for #{ key }: #{value.inject(&:+) / value.count}"
end
44 changes: 44 additions & 0 deletions play_500.rb
@@ -0,0 +1,44 @@
$:.unshift(File.expand_path("../lib", __FILE__))
require "battleship/game"
require "battleship/console_renderer"

Dir[File.expand_path("../players/*.rb", __FILE__)].each do |path|
load path
end

@winners = {}
@move_counts = {}
@render = ARGV[2] == 'all' ? :all :
ARGV[2] == 'final' ? :final : false
@renderer = Battleship::ConsoleRenderer.new if !!@render
@players = ARGV[0,2].map{ |s| Module.const_get(s).new }

500.times do |i|
game = Battleship::Game.new(10, [2, 3, 3, 4, 5], *@players)

until game.winner
@renderer.render(game) if :all == @render

begin
game.tick
rescue SystemStackError
puts "BOOM -- There's a bug"
Battleship::ConsoleRenderer.new.render(game)
debugger; p 'init'
end
end

@renderer.render(game) if :final == @render

puts "\e[H\e[2J" + "#{i + 1}"

@winners[game.winner.name] ||= 0
@winners[game.winner.name] += 1
@move_counts[game.winner.name] ||= []
@move_counts[game.winner.name] << game.move_count
end

puts "\nResults after 100 runs: #{@winners.inspect}"
@move_counts.each do |key, value|
puts "Average number of moves for #{ key }: #{value.inject(&:+) / value.count}"
end

0 comments on commit 3d49830

Please sign in to comment.