我正在尝试制作一个游戏,我只想在使用mouseClickHandler
之后更新rungame()
。你知道吗
这就是我在runGame()
中所做的:
def runGame():
global i,update,scoreDraw,questionA
setInitialValues()
drawObjects()
if update == True:
questionAsk()
canvas.update()
i += 1
updateObjects()
checkForCollisions()
canvas.delete(scoreDraw,questionA)
canvas.update()
这就是runGame()
所做的:
def setInitialValues():
global score, time, update, worldGIF
score = 0
time = 0
update = True
worldGIF = PhotoImage(file = "WorldMap.gif")
def drawObjects():
global worldMap,scoreStart,questionAA
worldMap = canvas.create_image(650, 400, image = worldGIF)
scoreStart = canvas.create_text(500,600,text=score, font= 'Times 24', anchor = W, fill = "white")
questionAA = canvas.create_text(400,700, text="Hello!", font= "Times 20", anchor = W,fill = "white")
canvas.update()
def questionAsk():
global x_coord, y_coord, country, question, i
global question
question = "Where is", country[i],"?"
def updateObjects():
global scoreDraw, questionA
roundScore = round(score)
scoreDraw = canvas.create_text(500,600,text=roundScore, font= 'Times 24', anchor = W, fill = "white")
questionA = canvas.create_text(400,700, text=question, font= "Times 20", anchor = W,fill = "white")
canvas.update()
def mouseClickHandler( event ):
global i, xMouse,yMouse,answerx,answery,score,distance,update
canvas.delete(scoreStart,questionAA)
xMouse = event.x
yMouse = event.y
answerx = x_coord[i]
answery = y_coord[i]
delta_x = abs(xMouse - answerx)
delta_y = abs(yMouse - answery)
distance = sqrt((delta_x)**2+(delta_y)**2)
score = score + distance
update = True
但是它从不更新,因为某些原因,它只是没有检测到mouseClickHandler
中的update = True
语句。你知道吗
额外费用:
x_coord, y_coord, country
都是我之前制作的numpy数组,导入到这里。worldGIF
只是一张地图的图片。你知道吗
所以tldr;我找不到只在有点击的地方触发runGame()
中的if update == True
部分的方法。你知道吗
这些在底部绑定:
root.after( 0, runGame )
canvas.bind( "<Button-1>", mouseClickHandler )
canvas.bind( "<Key>", keyDownHandler )
canvas.bind( "<KeyRelease>", keyUpHandler )
canvas.pack()
canvas.focus_set()
如果您想在每次鼠标点击时运行
runGame
,您需要在mouseClickHandler
中调用它(假设该函数绑定到一个点击事件)例如:
然而
我猜您不希望每次单击都运行
runGame
,而只希望if
块中的代码运行。如果这是真的,那么将代码移到一个单独的块中,并从mouseClickHander
调用它,并消除update
变量的使用。你知道吗例如:
相关问题 更多 >
编程相关推荐