2016-11-24 6 views
-1

私はゲームを作っていて、それは明らかに異なるタイルを持っています。しかし、私はメインのGame whileループで問題に遭遇しました。私のゲームでのタイルのゲーム中の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

3つの機能をすべて備えたループが1回あり、ルームがループし、ルームが変更されるまでchoose_actionだけループすることを期待していました。多くのことを尋ねると、 'new_room:print(room.intro_text())'なら –

+0

'を知っているので、新しい部屋を認識するメソッドを見つけなければなりません。' player.old_x、player.old_y'を使うことができます。以前の部屋を覚えている 'old_room'。 – furas

答えて

1

あなたは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_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

ありがとうございます! –

関連する問題