2012-05-13 7 views
0

私はプログラミングが初めてで、私はちょうどPythonの本を読んでいます。マップ内で複数のロボットを走らせたいマップには複数のロボットが存在します。このように動作させるにはマップクラスに何をする必要がありますか?私はこれが漠然としていることを知っていますが、私は14歳であり、これを説明しようとしています親クラスの制約で複数の子クラスを実行する方法

class Map: 

    def __init__(self): 
     self.robot = [] 

    def add_robot(self, robot): 
     self.robot.add(Robot) 

    def is_occupied(self, x, y): 
     for r in self.robot: 
      if r.xpos == x and r.ypos == y: 
       return True 
     return False 


class Robot(Map): 

    def __init__(self): 
     self.xpos = 0 
     self.ypos = 0 

    def step(self, axis): 
     if axis in "xX": 
      if self.is_occupied(self.xpos+1, self.ypos): 
       self.xpos += 1 
       print "step X axis" 
     elif axis in "yY": 
      self.ypos += 1 

    def walk(self, axis, steps=2): 
     for i in range(steps): 
      self.step(axis) 

    def get_pos(self): 
     print "X:%i Y:%i" % (self.xpos, self.ypos) 


robot1 = Robot() 
robot1.walk("x", 5) 
robot1.get_pos() 

「マップ」クラスがない場合、これはうまくいきますが、マップクラスを動作させることができません。私はマップクラスを作る助けを得たが、私はそれを私のロボットクラスで動作させることができません。

+0

マップをロボットでサブクラス化することは意味がありません。あなたはRobotをマップの一種と考えますか? –

+0

また、 'list'に項目を追加する方法は' add() 'ではなく' append() 'です。 'add'はあなたにAttributeErrorを与えます。 –

答えて

0

RobotのサブクラスはMapです。これは継承をどのように使うべきかではありません。 「子クラス」ではなく「サブクラス」と考えてください。

はこの考えてみましょう:

class Animal: 

    def eat(self, food): 
     print "mmm" 


class Human(Animal): 

    def speak(self, words): 
     print words 

人間は動物です。それは話すことができますが、それは食べることができます。

ロボットは明らかに地図ではありません。私はあなたがロボットを持っている地図を考えていると信じています。Robotをサブクラスにしないとうまくいくはずです。ああ、self.robotからself.robotsに変更してください。

+0

私はちょうど彼らがお互いに話をし、お互いを継承する必要はありませんか? –

+0

@RexDouglas正確に! – personak

関連する問題