我是python的新手,并尝试在python中使用simplegui
进行简单的游戏。在此游戏中,在0-100
或0-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()
答案 0 :(得分:0)
(复制粘贴的评论)
我只看了代码,我没有测试它(不想安装simplegui),但我认为当你猜测正确的数字使用完全允许的转弯时,它会丢失。尝试在input_guess的最后一个elif块中删除if块“if(guessLeft == 0):...”。