Created
December 6, 2013 21:21
-
-
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)
This file contains 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
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