第二场比赛在python简单的gui程序中以错误的条件开始

时间:2014-04-12 16:23:06

标签: python

我是python的新手,并尝试在python中使用simplegui进行简单的游戏。在此游戏中,在0-1000-1000之间猜测一个数字(取决于用户的选择),然后用户猜出该数字。用户最多获得7次尝试。用户输掉或猜出正确的号码后,新游戏开始。游戏应该不断运行。

问题:当第一个游戏结束时......第二个游戏正常,然后第三个游戏开始,打印消息 You lose!

我的代码如下:

import simplegui
import random
import math


# initialize global variables used in your code
numOfTurns = 0 
numberThought = 2000
maxAllowedTurns = 0
flag = 0 # 1: range is (0, 100] and 2: range is (0,1000]

# define event handlers for control panel
def range100():
    # button that changes range to range [0,100) and restarts
    global flag
    flag = 1
    new_game()

def range1000():
    # button that changes range to range [0,1000) and restarts
    global flag
    flag = 2
    new_game()

def input_guess(string_guess):
    guess = int(string_guess)
    global numberThought , numOfTurns, maxAllowedTurns, flag
    numOfTurns = numOfTurns + 1

    if ( numberThought > 1000 ):
        print "Please Select the Range First"
        print 
        return 
    # main game logic goes here 
    guessLeft = maxAllowedTurns - numOfTurns
    if(numberThought < guess):
        print "Your guess was = ", guess
        print "Number of Guesses remaining = ", (maxAllowedTurns - numOfTurns)
        print "Lower !"
        print 
        if (guessLeft == 0):
            print "You Lose!!"
            print "The Number was = ", numberThought
            print "<<<<<<<<<<<<<<<<<<<<<<<<",">>>>>>>>>>>>>>>>>>>>"
            print
            print
            new_game()

    elif (guess < numberThought):
        print "Your guess was = ", guess
        print "Number of Guesses remaining = ", (maxAllowedTurns - numOfTurns)
        print "Higher !"
        print 
        if (guessLeft == 0):
            print "You Lose!!"
            print "The Number was = ", numberThought
            print "<<<<<<<<<<<<<<<<<<<<<<<<",">>>>>>>>>>>>>>>>>>>>"
            print
            print
            new_game()

    elif (guess == numberThought):
        print "Your guess was = ", guess
        print "Correct !"
        print 
        new_game()
        if (guessLeft == 0):
            print "You Lose!!"
            print "The Number was = ", numberThought
            print "<<<<<<<<<<<<<<<<<<<<<<<<",">>>>>>>>>>>>>>>>>>>>"
            print
            print
            new_game()                         

# create frame
frame = simplegui.create_frame("Guess The Number", 300, 300)
# register event handlers for control elements
frame.add_button("range (0,100]", range100)
frame.add_button("range (0,1000]", range1000)
frame.add_input("Enter",input_guess, 100)

# call new_game and start frame
# helper function to start and restart the game
def new_game():
    global numberThought , numOfTurns , flag, maxAllowedTurns
    numOfTurns = 0
    print "<<<<<<<<<<<<<<<<<<<<<<<<",">>>>>>>>>>>>>>>>>>>>"
    print "NEW GAME !!!!"
    # Defining the number of turns allowed based upon the range type
    if(flag == 1):
        maxAllowedTurns = 7
        numberThought = random.randrange(0,100)
        print "Range is from 0 - 100"
        print "Max allowed turns = " , maxAllowedTurns
        print "Number of Guesses remaining = " , maxAllowedTurns-numOfTurns
        print
    elif(flag == 2):
        maxAllowedTurns = 10
        numberThought = random.randrange(0,1000)
        print "Range is from 0 - 1000"
        print "Max allowed turns = " , maxAllowedTurns
        print

frame.start()

1 个答案:

答案 0 :(得分:0)

(复制粘贴的评论)

我只看了代码,我没有测试它(不想安装simplegui),但我认为当你猜测正确的数字使用完全允许的转弯时,它会丢失。尝试在input_guess的最后一个elif块中删除if块“if(guessLeft == 0):...”。