March 22, 2010
Life Expressed in Language
All code in Python.
class Death(exception):
pass
# Simple function that sums it all up
def work(life):
if life == 0:
raise Death()
else:
work(life-1)
work(100)
# Let's try a more Object oriented approach
class Person:
def __init__(self, name):
self.name = name
self.life = 100
self.debt = 0
self.goals = []
self.accomplished_goals = []
self.spouse = None
self.children = []
self.assets = []
self.location = None
def get_life(self):
return self._life
def set_life(self, life):
if life == 0:
raise Death()
else:
self._life = life
life = property(get_life, set_life)
def marry(self, person):
if self.spouse:
self.divorce()
self.spouse = person
self.life -= 1
def divorce(self):
if not self.spouse:
return
self.spouse = None
self.life -= 1
def purchase(self, item, with_cash=False):
self.assets.append(item)
if not with_cash:
self.debt += 1
self.life -= 1
def sell(self, item):
if item in self.assets:
self.assets.remove(item)
def set_goal(self, goal):
self.goals.append(goal)
def accomplish_goal(self, goal):
self.goal.remove(goal)
self.accomplished_goals.append(goal)
def watch_tv(self, is_educational=False):
self.life -= 1
if not is_educational:
self.goals.pop()
def play_video_games(self):
self.life -= 1
self.goals.pop()
def make_a_baby(self, name):
baby = Person(name)
self.children.append(baby)
self.life -= 1
def work(self):
self.life -= 1
def retire(self):
import time
while 1:
self.life -= 1
time.sleep()
me = Person('Joshua')
me.set_goal('Find a wife')
me.marry(Person('Jodi'))
me.accomplish_goal('Find a wife')
me.watch_tv(is_educational=True)
me.play_video_games()
me.play_video_games()
me.make_a_baby(Person('Judah'))
me.set_goal('Get a better paying job')
me.accomplish_goal('Get a better paying job')
me.watch_tv()
me.buy('Scion xB')
me.buy('MacBook Pro')
me.make_a_baby(new Person('Jacob'))
me.work()