2013-06-12 33 views
0

這是我到目前爲止。這個遊戲可以有多個玩家達到len(玩家)。如何創建一個循環回上一位玩家的第一個玩家的函數?

我希望它每次都會提示不同的玩家進行移動。所以,例如,如果有3名球員ABC,如果是玩家的A轉,我希望下一個玩家成爲玩家B,然後下一個玩家成爲C,然後返回到玩家A.

只使用while循環,if語句和可能的布爾值。

球員=「ABCD」

def next_gamer(gamer): 
    count = 0 
    while count < len(GAMERS): 
    if gamer == GAMERS[0]: 
      return GAMERS[count + 1] 
    if gamer == GAMERS[-1] 
      return GAMER[0] 
    count = count + 1 
+0

時候,你才能在你想達到什麼樣的更精確? – Josay

+0

您的代碼似乎有一個小的格式錯誤,可能只是粘貼它而已。爲了清晰起見,您可能需要編輯它並縮進if和「count = count + 1」,以便它們落入while循環中。 – LISTERINE

回答

2

如果您不能使用的.index()方法,我認爲你正在嘗試做的是這樣的:

def next_gamer(gamer): 
     count = 0 
     while count < len(GAMERS): 
      if gamer == GAMERS[count]: 
       return GAMERS[count + 1] 
      count = count + 1 
     return GAMERS[0] 
+0

謝謝junkaholik :) – muros

0

我解決你剛纔的問題,涉及到發電機:

turn=0 
def gameIsFinished(): 
    global turn 
    turn = turn+1 
    return turn >10 

def cycle(iterable): 
    while True: 
     for item in iterable: 
      if gameIsFinished(): 
       return 
      yield item 

for player in cycle([1,2,3]): 
    print player 
+0

感謝您的幫助!然而,對於我的遊戲,我不允許使用除循環,if語句和布爾值之外的任何內容。你可以使用while循環複製結果嗎? – muros

0

你可以只是你的函數使用一個簡單的返回下一個玩家在列表中的玩家這樣的聲明無論您目前在遊戲中使用哪個玩家:

返回GAMERS [GAMERS.index(遊戲者)+1]

除非本遊戲者在列表中的最後一個,其可以測試使用以下if語句:

如果GAMERS.index(遊戲者)= = LEN(遊戲玩家) - 1:

返回玩家[0]

在這種情況下返回的網絡連接第一個玩家。

+0

注意:我想你會希望你的while循環在你的函數「next_gamer()」之外。一旦你的函數返回一些東西,它就會退出函數並退出while循環。 – junkaholik

+0

感謝您的幫助。不過,我僅限於使用while循環,布爾值和if語句來表示我的遊戲。如果沒有方法,你會怎麼做? – muros

+0

啊..謝謝你讓我知道! – muros

相關問題