游戏中的 while 循环问题。

Issue with while loop in game.

我正在制作一个游戏,它显然有不同的方块。但是我在我的主游戏 while 循环中遇到了一个问题。

def play():
    player  = player1()
    while True:
        room = ClubWorld.tile_at(player.x, player.y)
        print(room.intro_text())
        choose_action(room, player)

我的游戏中的 Tile 示例:

class GirlTile(MapTile):
    def __init__(self,x,y):
        self.meet_girl = Girls()
        super().__init__(x, y)

    def intro_text(self):
        return "Hey whats up, my name is {}".format(self.meet_girl.name)

只要我在游戏板块上,这个循环就会一直持续下去。它会生成您拥有的可用操作,并让其他功能知道您的位置。它还会输出我的问题所在的平铺介绍文本。我希望游戏仅在进入图块时输出介绍文本,一旦发生这种情况,我只希望它显示可用的操作。建议?

你可以保留previous_room并与room比较:

def play():
    player  = player1()
    previous_room = None
    while True:
        room = ClubWorld.tile_at(player.x, player.y)
        if room != previous_room:
            print(room.intro_text())
            previous_room = room
        choose_action(room, player)

或者保持玩家之前的位置 previous_x, previous_y 并与新位置进行比较

def play():
    player = player1()
    previous_x = None
    previous_y = None
    while True:
        if player.x != previous_x or player.y != previous_y :
            room = ClubWorld.tile_at(player.x, player.y)
            print(room.intro_text())
            previous_x = player.x
            previous_y = player.y
        choose_action(room, player)