将评分系统添加到数字猜谜游戏中,包括再次播放

时间:2014-11-22 10:15:22

标签: python scoring

我现在的游戏工作正常,但我还是想进一步。我希望有一个得分系统。我希望玩家获得5分,如果他们在获胜时剩下1分,如果他们有2分则获得10分,如果他们拥有全部分数则为15分。但是如果他们再次玩,我不希望重置分数我只是希望它说退出游戏时你得分" "点。我试图以多种不同的方式做到这一点,但我似乎可以让它工作,每次按下y再次播放时重置得分。我已经在下方提供了我的基本游戏代码,请尝试帮助。这个游戏的任何其他推荐都是非常受欢迎的。

**道歉我不知道我之前是否已经说清楚了。我不希望在节目关闭后存储分数,直到玩家再次被要求再次播放时按下n

#imports required modules
import random

#correct number variable created
num = 0

#generates number at random
comp_num = random.randint(1,10)

print('I\'m thinking of a number guess what it is...\n')

#main game code
def main():
    #generates number at random
    comp_num = random.randint(1,10)
    #set num as a global variable
    global num
    #lives created
    lives = 3
    while lives >= 1:
        #player guesses
        guess = int(input('Guess: '))
        if comp_num == guess:
            #if correct says well done
            print('\nWell Done! You guessed Correctly!\n')
            break
        elif comp_num >= guess:
            #if guess is too low tells player
            #one live taken for incorrect guess
            lives = lives -1
            print('\nToo low!\n')
            #player is told how many lives they have left
            print('You guessed incorrectly. You have',lives,'live(s) remaining.\n')
            if lives == 0:
                    #if player guesses incorrectly they get told the correct awnser
                    print('The number I was thinking of was...',comp_num,'!\n')
        elif comp_num <= guess:
            #if guess is too high tells player
            #one live taken for incorrect guess
            lives = lives -1
            print('\nToo high!\n')
            #player is told how many lives they have left
            print('You guessed incorrectly. You have',lives,'live(s) remaining.\n')
            if lives == 0:
                    #if player guesses incorrectly they get told the correct awnser
                    print('The number I was thinking of was...',comp_num,'!\n')

def end():
    #asks player if they want to play again
    play_again = input('Would you like to play again?[Y/N] ')
    while play_again.lower() == 'y':
        #if they do game resets and plays again
        if play_again.lower() == 'y':
            comp_num = random.randint(1,10)
            print('\nI\'m thinking of a number guess what it is...\n')
            main()
            play_again = input('Would you like to play again?[Y/N] ')
            if play_again.lower() == 'n':
                break
    if play_again.lower() == 'n':
        #if they don't game ends
        input('Ok, Press enter to exit')
        exit()

#calls main section of game
main()


#calls end of game to give option of playing again and reseting game
end()

2 个答案:

答案 0 :(得分:2)

使用此模式:

def game():  # Play a single game.
  lives = 3
  ...
  return 5 * lives  # Return the score of the game.

def ask_again():
  print 'Play again?'
  answer = ...
  return answer == 'y'  # Return True iff the user wants to play again.

def main():
  score = game()
  while ask_again():
    score += game()
  print score

main()         

答案 1 :(得分:1)

您应该使用全局变量来存储得分点数。

所以我添加了添加点和打印消息的代码:

#imports required modules
import random

#correct number variable created
num = 0

score = 0

#generates number at random
comp_num = random.randint(1,10)

print('I\'m thinking of a number guess what it is...\n')

#main game code
def main():
    #generates number at random
    comp_num = random.randint(1,10)

    #set num as a global variable
    global num

    global score

    #lives created
    lives = 3
    while lives >= 1:
        #player guesses
        guess = int(input('Guess: '))
        if comp_num == guess:
            #if correct says well done
            print('\nWell Done! You guessed Correctly!\n')

            # add score
            if lives == 3:
                score += 15
            elif lives == 2:
                score += 10
            elif lives == 1:
                score += 5

            break
        elif comp_num >= guess:
            #if guess is too low tells player
            #one live taken for incorrect guess
            lives -= 1
            print('\nToo low!\n')
            #player is told how many lives they have left
            print('You guessed incorrectly. You have',lives,'live(s) remaining.\n')
            if lives == 0:
                    #if player guesses incorrectly they get told the correct awnser
                    print('The number I was thinking of was...',comp_num,'!\n')
        elif comp_num <= guess:
            #if guess is too high tells player
            #one live taken for incorrect guess
            lives -= 1
            print('\nToo high!\n')
            #player is told how many lives they have left
            print('You guessed incorrectly. You have',lives,'live(s) remaining.\n')
            if lives == 0:
                    #if player guesses incorrectly they get told the correct awnser
                    print('The number I was thinking of was...',comp_num,'!\n')

def end():

    global score

    #asks player if they want to play again
    play_again = input('Would you like to play again?[Y/N] ')
    while play_again.lower() == 'y':
        #if they do game resets and plays again
        if play_again.lower() == 'y':
            comp_num = random.randint(1,10)
            print('\nI\'m thinking of a number guess what it is...\n')
            main()
            play_again = input('Would you like to play again?[Y/N] ')
            if play_again.lower() == 'n':
                break
    if play_again.lower() == 'n':
        #if they don't game ends

        print("You scored " + str(score) + " amazing points!")

        input('Ok, Press enter to exit')
        exit()

#calls main section of game
main()


#calls end of game to give option of playing again and reseting game
end()