我正在写一个游戏,“猜数字”。最初,计算机选择0-99范围内的随机数,玩家猜测它是什么数字。一旦玩家猜到了这个号码,游戏就会重新开始。
玩家可以使用两个按钮随时重启游戏: “新游戏。范围是0-100” 和 “新游戏。范围是0-1000”
以下是在线编辑器的链接,您可以在其中查看和编辑文件:
http://www.codeskulptor.org/#user41_1sYMUy5rDi_0.py
目前,计算机选择的号码始终打印,但一旦游戏正常运行,它将被删除。
无论如何,问题在于,当用户输入计算机选择的号码时,游戏会重新启动,但计算机会选择相同的号码作为上次。但是,如果用户点击新游戏按钮,计算机会选择不同的数字,这是正确的。
逻辑错误发生在这里:
num_range = random.randrange(0,100)
# helper function to start and restart the game
def new_game():
print "Guess the number!"
global secret_number
global num_range
secret_number = num_range
print secret_number
如果我删除
secret_number = num_range
来自new_game()函数的行并将其替换为
num_range = random.randrange(0,100)
每次用户正确猜测数字时,新游戏都会以相同范围内的不同数字开始,这是正确的,但我需要变量,以便两个按钮起作用。你知道如何使用变量num_range,以便每次用户猜到数字后自动开始游戏,秘密数字与上次不同吗?
以下是整个计划:
import simplegui
import random
import math
num_range = random.randrange(0,100)
# helper function to start and restart the game
def new_game():
print "Guess the number!"
global secret_number
global num_range
secret_number = num_range
print secret_number
#event handlers for control panel
def range100():
# button that changes the range to [0,100) and starts a new game
global num_range
num_range = random.randrange(0,100)
global secret_number
secret_number = num_range
print "The range is 0-100"
new_game()
def range1000():
# button that changes the range to [0,1000) and starts a new game
global secret_number
global num_range
num_range = random.randrange(0, 1000)
secret_number = num_range
print "The range is 0-1000"
new_game()
def input_guess(guess):
# main game logic
g = int(guess)
# remove this when you add your code
print "Guess was", g
if g <secret_number :
print "Higer"
elif g > secret_number:
print "Lower"
else:
print "Correct"
print "Starting a new game..."
print ""
new_game()
# create frame
frame = simplegui.create_frame("Guess the number",200, 200)
frame.add_input("Enter your guess", input_guess, 200)
frame.add_button("New game. Range is 0-100", range100, 200)
frame.add_button("New game. Range is 0-1000", range1000, 200)
# register event handlers for control elements and start frame
# call new_game
new_game()
答案 0 :(得分:2)
让我们快速但不那么难看。
首先,让我们创建一个新的全局变量max_number = 100
然后,您必须对new_game()
def new_game():
print "Guess the number!"
global secret_number
global max_number
secret_number = random.randrange(0,max_number)
print secret_number
最后,将range100()
和range1000()
的定义替换为:
def range100():
global max_number
max_number = 100
print "The range is 0-"+str(max_number)
new_game()
def range1000():
global max_number
max_number = 1000
print "The range is 0-"+str(max_number)
new_game()