import random
class Sprite:
step = [-2,+2,-3,+3]
def __init__(self,gm,point=None):
self.gm = gm
if point is None:
self.point = random.randint(0,20)
else:
self.point = point
def jump(self):
astep = random.choice(Sprite.step)
if 0 <= self.point + astep <= 20:
self.point += astep
class Ant(Sprite):
def __init__(self,gm,point=None):
super().__init__(gm,point)
self.gm.set_point('ant',self.point)
def jump(self):
super().jump()
self.gm.set_point('ant',self.point)
class Worm(Sprite):
def __init__(self,gm,point=None):
super().__init__(gm,point)
self.gm.set_point('worm',self.point)
def jump(self):
super().jump()
self.gm.set_point('worm',self.point)
class GameMap:
def __init__(self):
self.ant_point = None
self.worm_point = None
def catched(self):
print('ant:',self.ant_point,'worm:',self.worm_point)
if self.ant_point is not None and self.worm_point is not None and self.ant_point == self.worm_point:
return True
def set_point(self,src,point):
if src == 'ant':
self.ant_point = point
if src == 'worm':
self.worm_point = point
if __name__ == '__main__':
gm = GameMap()
worm = Worm(gm)
ant = Ant(gm)
while not gm.catched():
worm.jump()
ant.jump()