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()

'Map'クラスがない場合、これは問題なく機能しますが、mapクラスを機能させることができません。マップクラスの作成についてサポートを受けましたが、ロボットクラスで機能させることができません。

4

1 に答える 1

0

あなたは;Robotのサブクラスとして持っています。Mapこれは、継承の使用方法ではありません。「子クラス」ではなく「サブクラス」と考えてください。

このことを考慮:

class Animal:

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


class Human(Animal):

    def speak(self, words):
        print words

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

ロボットは明らかに地図ではありません。あなたはロボットを持った地図を考えていると思います、そしてあなたがRobotサブクラスを作らなければそれはうまくいくはずです。ああ、そしてに変更self.robotself.robotsます。

于 2012-05-13T16:53:06.327 に答える