我在python 3.6中将文本冒险作为学校项目进行开发。该代码应根据您来自何处,使您朝不同的方向“看”。当输入连续3次相同时,程序崩溃,我不知道为什么。同样,我所面对的方向并不会一直变化。在大多数情况下,它都有效,但是在某些情况下,它无效。
我希望我不会混淆任何人,但是我来自德国,所以这里有一些翻译:
raum = room
oben = up
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'
答案 0 :(得分:0)
对于当您面对的方向改变时的错误,请看dleft。您会注意到可以先设置room.up = room.right
,然后再设置room.right = room.up
。这不会切换两个值-只需将room.up
设置为room.right
,然后将room.right
设置为room.up
,就已经是了。
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
Python允许您使用元组来随机播放值,因此您不必说temp = a,a = b,b = temp等。
对于dright:
(room.up,room.down,room.right,room.left) = (room.left,room.right,room,down,room.up)
对于dleft:
(room.up,room.down,room.right,room.left) = (room.right,room.left,room.up,room.down)
注意:这只是对您的代码进行音译。我认为以下内容将所有内容向左移,而您的代码只是将方向翻转:
(room.up,room.left,room.down,room.right) = (room.left,room.down,room.right,room.up)
以下内容右移。我也喜欢顺时针或逆时针方向的方向。
(room.up,room.right,room.down,room.left) = (room.right,room.down,room.left,room.up)