1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env ruby
require 'singleton'
module Terminator

 class Head
  include Singleton
  @bonked = false

  class << self
   def injured?
    @bonked
   end

   def bonk
    @bonked = !@bonked
    return "Ouch!"
   end
  end
 end

 class Mission
  def initialize
   @missions = { :usual => "Kill John Connor", 
    :opposite => "Protect John Connor" }
   @accomplished = false
  end

  def perform
   x = (Terminator::Head.injured? ? :opposite : :usual)
   puts "Executing mission: #{@missions[x]}"; 
   while !@accomplished
    # do what it takes
   end
   puts "Mission accomplished."
   return true
  end
 end
end