Skip to content

Instantly share code, notes, and snippets.

@ZacharyDinerstein
Created December 6, 2013 21:21
Show Gist options
  • Save ZacharyDinerstein/7832292 to your computer and use it in GitHub Desktop.
Save ZacharyDinerstein/7832292 to your computer and use it in GitHub Desktop.
Michael Shfaer's Death Racer Robot Program ... (a good example of filling Classes with modules)
module Wheeled
def wheeled?
true
end
def roll
puts "Yeah, buddy"
end
end
module Wooden
def bendy?
true
end
def bend
puts "Wicked!"
end
end
module Racer
def race(other)
return "NO RACE!!!!!" unless other.respond_to? :speed
if self.speed > other.speed
"I WIN"
else
"I DO NOT WIN"
end
end
end
module PickyTolerances
def ignore_engine_light
@broken_down = "you silly person"
end
def speed
return "1 minute, gotta fix" if @broken_down
return speed_when_maintained
end
end
class AutonomousDeathRobot
include Wheeled
include Racer
include PickyTolerances
def speed_when_maintained
"y you run? i freind!!?!"
end
end
class Car
include Wheeled
include Racer
include PickyTolerances
def speed_when_maintained
if @driver[:impaired]
return "AAAAAH I CRASHED"
else
return driver_speed
end
end
def driver_speed
@driver[:speed]
end
def strap_in(driver)
@driver = driver
end
def peek_in
@driver
end
def to_s
"A car, with a driver whose speed is #{@driver[:speed]}"
end
end
class Sadness
def speed
"relatively fast"
end
end
class Skateboard
include Wheeled
include Wooden
include Racer
def speed
"super fast"
end
end
class Rollerblade
include Wheeled
include Racer
def bendy?
false
end
def speed
"pretty fast"
end
end
class Ski
include Wooden
include Racer
def wheeled?
false
end
def speed
"uber fast"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment