2017-09-14 41 views
-3

目前球員只有一回合,而且從未顯示比賽的勝者。這個主要功能需要做些什麼變化才能讓每個玩家正好三回合?需要對主要功能進行哪些更改才能讓每個玩家恰好有三個回合?

def main(): 
    display_welcome() #1 
    number_of_turns = 3 
    score_player1 = 0 
    score_player2 = 0 
    name_player1 = "Olivia" 
    name_player2 = "Ned" 
    turn_num = 1 
    first_player_num = random.randrange(1, number_of_turns + 1) 

    if first_player_num == 2: 
     temp = name_player1 
     name_player1 = name_player2 
     name_player2 = temp 

    score1 = have_one_turn(turn_num, name_player1) 
    score2 = have_one_turn(turn_num, name_player2) 

    score_player1 = score_player1 + score1 
    score_player2 = score_player2 + score2 

    if turn_num < number_of_turns: 
     display_turn_results(name_player1, score_player1, name_player2, score_player2, False)  #10 
    else: 
     display_turn_results(name_player1, score_player1, name_player2, score_player2, True) 
+0

'對於i:'? – Julien

+0

不能使用for..in循環 – BEMDAS

+0

歡迎使用堆棧溢出。這不是讓某人爲你做作業的地方。你應該首先表現出努力。請描述你到目前爲止所嘗試的內容,以及你對這個問題的理解。例如,你能告訴我們給定的代碼當前的行爲不正確嗎? –

回答

-1

嘗試下面的代碼::

def main(): 
    display_welcome() #1 
    number_of_turns = 3 
    score_player1 = score_player2 = 0 
    name_player1 = "Olivia" 
    name_player2 = "Ned" 
    first_player_num = random.randrange(1, 2) 
    if first_player_num == 2: 
     temp = name_player1 
     name_player1 = name_player2 
     name_player2 = temp 
    for turn_num in xrange(3): 
     score1 = have_one_turn(turn_num, name_player1) 
     score2 = have_one_turn(turn_num, name_player2) 
     score_player1 = score_player1 + score1 
     score_player2 = score_player2 + score2 

     if turn_num+1 < number_of_turns: 
      display_turn_results(name_player1, score_player1, 
           name_player2, score_player2, False)  #10 
     else: 
      display_turn_results(name_player1, score_player1, 
           name_player2, score_player2, True) 

如果主要功能的部分可以被分離爲不同的一種,可以使用遞歸函數調用。

def main(): 
#display function and selecting player to play first. 
    game(score1, score2, name_player1, name_player2) 

遊戲功能可以被稱爲遞歸

def game(score1, score2, name_player1, name_player2, turn_num=1): 
    #calculating score 
    number_of_turns = 3 
    turn_num = turn_num+1 
    if turn_num < number_of_turns: 
     display_turn_results(name_player1, score_player1, 
          name_player2, score_player2, False) 
     game(score_player1, score_player2, name_player1, 
      name_player2, turn_num) 
    else: 
     display_turn_results(name_player1, score_player1, 
          name_player2, score_player2, True) 
在範圍(3)
+0

這個工作,但有沒有另一種方式做到這一點,而不使用for ... in循環,我只想改變一些東西,但不一定添加任何東西,任何想法? – BEMDAS

+0

似乎並沒有工作,但這是具體問題的要求:做一個\t到主()函數 目前只有\t每轉一圈,從來沒有顯示遊戲的勝利者。 \t 變化\t該程序的main()函數,使得每個\t播放器具有恰好三個\t匝(和\t 之交號1,2和3被正確地顯示在輸出)。 所以我不認爲我們可以將主要功能分開 – BEMDAS

相關問題