2013-11-20 2 views
0

Мне нужно создать класс для автомобиля, который перемещается по горизонтальной линии. У конструктора должен быть только один аргумент, и именно здесь он меня отбрасывает. У меня может быть только один аргумент, чтобы инициализировать начальную позицию ошибки. Он должен иметь значение 0, а начальное направление должно быть единым. Но я не уверен, что могу сделать это без 2 аргументов в конструкторе. Мне также нужны два метода мутатора для перемещения и поворота автомобиля, а также метод доступа, который отображает местоположение автомобиля.Переместить автомобиль горизонтально - классы Python

Пример: position 5 direction right: .....>; position 2 direction left: ..<

class Bug: 

    def __init__(self, iPosition=0): 
     self.position = iPosition 

    def move(self): 
     pos = self.postion 

    def turn(self): 
     direction = self.position 

    def display(self): 
     if direction < 0: 
      x = '<' 
     elif direction > 0: 
      x = '>' 
     for i in range(pos): 
      y = '.' + y 
     return (y,x) 

ответ

1

Ваш код в функции дисплея() должен дать вам ответ. Движение движется влево для отрицательного направления. Следовательно, отрицательное значение в параметре конструктора может представлять движение влево.

+0

Да, но когда я проверить функцию с помощью 'Bug (10)' он говорит мне «<_main_.Bug экземпляр в 0X00000079E67C8>' – user3014014

+0

.. . да? Он сделал экземпляр, который вы запросили, в чем проблема? – kindall

+0

На самом деле это не отображение .s и>>, когда я тестирую функцию с помощью тестера = ошибка (10) – user3014014

0

Это может быть больше, как то, что вам нужно:

class Bug: 

    def __init__(self, iPosition=0): 
     self.position = iPosition 
     self.direction = 1 

    def move(self, distance=1): 
     self.position += self.direction * distance 

    def turn(self): 
     self.direction = -self.direction 

    def display(self): 
     if self.direction < 0: 
      x = '<' 
     elif self.direction > 0: 
      x = '>' 
     y = '' 
     for i in range(self.position): # this is not right if position is negative; maybe abs()? 
      y = '.' + y 
     return (y,x) 
+0

Только один вопрос: где определяется y в функции display()? – RobH

+0

@ RobH Хорошая точка ... это было почти копия-макароны, и я пропустил, что 'y' не было определено. Добавлена ​​явная инициализация ... – twalberg

+0

Как создать объект ошибки в позиции 10 с помощью другой функции? Это просто «Ошибка (10)»? – user3014014

Смежные вопросы