2013-06-12 38 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

相关问题