while(user_plcr <= GAME_END_POINTS or computer_plcr <= GAME_END_POINTS):
    print_current_player(is_user_turn)
    user_total = take_turn(is_user_turn,COMPUTER_HOLD)
    user_plcr = user_plcr + user_total
    is_user_turn = get_next_player(is_user_turn)
    print_current_player(is_user_turn)
    computer_total = take_turn(is_user_turn,COMPUTER_HOLD)
    computer_plcr = computer_plcr + computer_total
    report_points(user_plcr,computer_plcr)
    print("\n")
    is_user_turn = get_next_player(is_user_turn)

def take_turn(is_user_turn, COMPUTER_HOLD):
human_score = 0
computer_score = 0
if is_user_turn == True:
    begin = raw_input("roll? [yn]")
    if begin == 'y' or begin == 'Y':
        human_rand = roll_die()
    elif begin == 'n' or begin == 'N':
        is_user_turn = False
        return human_score
    while human_rand != 1:
        human_score = human_score + human_rand
        if human_score != 0:
            human_score = str(human_score)
            human_rand = str(human_rand)
            print("roll: " + human_rand)
            print("Current Score: " + human_score)
            human_rand = int(human_rand)
            human_score = int(human_score)
            again = raw_input("roll again? [yn]")
            print("\n")
            if again == 'y' or again == 'Y':
                human_rand = roll_die()
                continue
            elif again == 'n' or again == 'N':
                is_user_turn = False
                break
        else:
            human_score = 1
            human_rand = str(human_rand)
            print("roll: " + human_rand)
            human_rand = int(human_rand)
            print("You rolled a 1. Turn over.")
            human_score = str(human_score)
            print("Current Score: " + human_score)
            human_score = int(human_score)
            return human_score
    if human_rand == 1:
        human_rand = str(human_rand)
        print("roll: " + human_rand)
        human_rand = int(human_rand)
        print("You rolled a 1. Turn over.")
        human_score = 1
        human_score = str(human_score)
        print("Current Score: " + human_score)
        human_score = int(human_score)
        return human_score
    else:
        return human_score
elif is_user_turn == False:
    computer_rand = roll_die()
    while computer_rand != 1:
        computer_score = computer_score + computer_rand
        if computer_score != 0:
            computer_rand = str(computer_rand)
            print("roll: " + computer_rand)
            computer_rand = int(computer_rand)
            if computer_score <= COMPUTER_HOLD:
                computer_rand = roll_die()
                continue
            else:
                computer_score = str(computer_score)
                print("*computer holds on " + computer_score + "*")
                computer_score = int(computer_score)
                is_user_turn = True
                break
        else:
            computer_score = 1
            computer_rand = str(computer_rand)
            print("roll: " + computer_rand)
            computer_rand = int(computer_rand)
            print("The computer rolled a 1. Turn over.")
            return computer_score
    if computer_rand == 1:
        computer_rand = str(computer_rand)
        print("rollclea " + computer_rand)
        computer_rand = int(computer_rand)
        print("The computer rolled a 1. Turn over.")
        computer_score = 1
        return computer_score
    else:
        return computer_score

फ़ंक्शन take_turn () स्कोर का मान संग्रहीत करता है। रिपोर्ट_पॉइंट कुल स्कोर दिखाता है। प्लेसर या टोटल पर्स्यू के GAME_END_POINTS पर पहुंचने के बाद लूप से बाहर निकल जाना चाहिए। इसके बजाय यह कंप्यूटर को एक पासा रोल करने दे रहा है जब उपयोगकर्ता पहले ही गेम जीत चुका हो। मैंने डिबगिंग के लिए एक साफ स्लेट प्रदान करने के लिए कोड ब्लॉक से if-else स्टेटमेंट्स को हटा दिया है

0
Garrett 12 अक्टूबर 2018, 04:42

1 उत्तर

सबसे बढ़िया उत्तर
while(user_plcr <= GAME_END_POINTS or computer_plcr <= GAME_END_POINTS):

यह तब तक जारी रहेगा जब तक कोई भी सत्य है। तो, भले ही user_plcr > GAME_END_POINTS, यह computer_plcr > GAME_END_POINTS तक चलता रहेगा। आप तब छोड़ना चाहते हैं जब कोई एक झूठा हो। दूसरे शब्दों में, जारी रखें जबकि दोनों सत्य हैं।

while (user_plcr <= GAME_END_POINTS and computer_plcr <= GAME_END_POINTS):

साथ ही, while के अंदर, यदि उपयोगकर्ता GAME_END_POINTS से अधिक स्कोर करता है, तो भी कंप्यूटर चला जाता है। इसलिए आपको कंप्यूटर को चालू करने की अनुमति देने से पहले उपयोगकर्ता के स्कोर की जांच करनी होगी।

while(user_plcr <= GAME_END_POINTS and computer_plcr <= GAME_END_POINTS):
    print_current_player(is_user_turn)
    user_total = take_turn(is_user_turn,COMPUTER_HOLD)
    user_plcr = user_plcr + user_total
    if user_plcr <= GAME_END_POINTS:
        is_user_turn = get_next_player(is_user_turn)
        print_current_player(is_user_turn)
        computer_total = take_turn(is_user_turn,COMPUTER_HOLD)
        computer_plcr = computer_plcr + computer_total
    report_points(user_plcr,computer_plcr)
    print("\n")
    is_user_turn = get_next_player(is_user_turn)
0
Johnny Mopp 12 अक्टूबर 2018, 01:58