obejct превращается в строку после 3 одинаковых вводов - PullRequest
0 голосов
/ 25 мая 2019

Я работаю над текстовым приключением как школьным проектом на python 3.6.Код должен позволить вам «смотреть» в разных направлениях, в зависимости от того, откуда вы пришли.Программа аварийно завершает работу, когда вход является одним и тем же 3 раза подряд, и я понятия не имею, почему.Кроме того, направление, с которым я сталкиваюсь, не меняется последовательно.В большинстве случаев это работает, но в некоторых случаях это не так.

Надеюсь, я никого не смутил, но я из Германии, поэтому вот несколько переводов:

raum =room

oben = вверх

unten = down

Я пытался вставить строку ввода между ними, чтобы разорвать цепь.

class Place(object):
def __init__(self):
    self.infor = ''
    self.infol = ''
    self.infou = ''
    self.infod = ''
    self.ninfor = ''
    self.ninfol = ''
    self.ninfou = ''
    self.ninfod = ''   #n(ew)infod(own)
    self.up=''
    self.down=''
    self.right=''
    self.left=''
    self.nup=''
    self.ndown=''
    self.nright=''
    self.nleft=''
def newDirection(self, room):
    room.nup = room.up          #n(ew)up
    room.ndown = room.down
    room.nright = room.right
    room.nleft = room.left
def setDirection(self, room):
    room.up = room.nup          #n(ew)up
    room.down = room.ndown
    room.right = room.nright
    room.left = room.nleft
def dup(self, room):
    room.nup = room.up
    room.ndown = room.down
    room.nright = room.right
    room.nleft = room.left
    room.ninfou = room.infou
    room.ninfod = room.infod
    room.ninfor = room.infor
    room.ninfol = room.infol
def ddown(self, room):
    room.nup = room.down
    room.ndown = room.up
    room.nright = room.left
    room.nleft = room.right
    room.ninfou = room.infod
    room.ninfod = room.infou
    room.ninfor = room.infol
    room.ninfol = room.infor
def dright(self):
    room.up = room.left
    room.down = room.right
    room.right = room.down
    room.left = room.up
def dleft(self):
    room.up = room.right
    room.down = room.left
    room.right = room.up
    room.left = room.down

raum_1=Place()
raum_2=Place()
raum_3=Place()

raum_1.up = raum_2
raum_1.down = raum_1

raum_2.down = raum_1
raum_2.up = raum_3

raum_3.down = raum_2

raum_1.infou = "R1 Oben"

raum_2.infou = "R2 Oben"
raum_2.infod = "R2 Unten"

raum_3.infod = "R3 Unten"

position = raum_1
death = False
win = False

position.newDirection(position)

while(death != True)and(win != True):
command=input()
if command == 'up':
    position = position.nup
    position.dup(position)
if command == 'down':
    position = position.ndown
    position.ddown(position)
if command == 'right':
    position = position.nright
    position.dright
if command == 'left':
    position = position.nleft
    position.dleft
position.setDirection(position)
print(position.ninfou, position.ninfod, position.ninfor, position.ninfol)

Выдолжен иметь возможность менять комнаты столько раз, сколько вы хотите.

Traceback (most recent call last):
  File "G:\Informatik\Textadventure_game_2.py", line 90, in <module>
    position.ddown(position)
AttributeError: 'str' object has no attribute 'ddown'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...