1

矢印キーに従って画面上でボックスが移動するゲームを作成しようとしています。「スペース」ボタンを押すと一時停止します。

何らかの理由で、スペース ボタンを押すと、何も起こらなかったかのように 'NewGame()' ループに戻ります。なぜこうなった?

from Tkinter import *

HEIGHT = 400
WIDTH = 300
cHEIGHT=HEIGHT-100
cWIDTH=WIDTH
TOPLEFT=3
BUTTOMRIGHT=13
RECTANGLE_SIDE=BUTTOMRIGHT-TOPLEFT

def NewGame():

    def Key(event):
        while True:
            (x1,y1,x2,y2)=canvas.coords(head)
            if event.keysym =='Right':
                canvas.move(head,1,0)
                root.update()
                if x1>=cWIDTH:
                    canvas.move(head, -cWIDTH,0)
            elif event.keysym=='Left':
                canvas.move(head,-1,0)
                root.update()
                if x2<=0:
                    canvas.move(head, cWIDTH,0)
            elif event.keysym=='Up':
                canvas.move(head,0,-1)
                root.update()
                if y2<=0:
                    canvas.move(head, 0,cHEIGHT)
            elif event.keysym=='Down':
                canvas.move(head,0,1)
                root.update()
                if y1>=cHEIGHT:
                    canvas.move(head, 0,-cHEIGHT)
            elif event.keysym=='space':
                break

    canvas.delete("all")
    head=canvas.create_rectangle(TOPLEFT,TOPLEFT,BUTTOMRIGHT,BUTTOMRIGHT)
    root.bind('<Key>', Key)

root = Tk()
root.geometry(('%dx%d')%(HEIGHT,WIDTH))

b1 = Button(root, text = 'New Game', command=NewGame)
b1.pack()

canvas=Canvas(root, height = cHEIGHT, width = cWIDTH)
canvas.pack()

root.mainloop()
4

2 に答える 2