2016-11-24 129 views
-1

我正在做一個遊戲,它顯然有不同的瓷磚。但是我在主循環中遇到了一個問題。我在遊戲中的瓷磚遊戲中while循環的問題。

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

例子:

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) 

這個循環不斷,只要我在遊戲瓷磚去。它會產生可用的操作,並讓其他功能知道您的位置。它還會輸出該瓷磚介紹文本,這是我的問題所在。我希望遊戲只輸入介紹文本,一旦出現這種情況,我只希望它顯示可用的操作。建議?

+0

什麼這裏採用的是循環中的問題比較?用你提供的這段代碼,很難提出任何建議。 –

+0

希望有一種方式可以通過一次循環使用所有三種功能,然後只通過房間循環,然後選擇動作,直到房間發生變化。問很多我知道 –

+0

'如果new_room:print(room.intro_text())'現在你必須找到識別新房間的方法 - 你可以使用'player.old_x,player.old_y'。或'old_room'來記住前一個房間。 – furas

回答

1

你可以保持previous_roomroom比較:

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_xprevious_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) 
+0

非常感謝! –