Я пытаюсь сделать точную копию Доджера, используя python. В моем коде я сделал окно, используя tkinter
. Я попытался использовать getch()
как способ ввода значений клавиш со стрелками, чтобы заставить главного персонажа двигаться. Вот мой код:
from tkinter import *
from msvcrt import getch
import time
class Window(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.master = master
self.initWindow()
def initWindow(self):
self.master.title('Dodger')
self.pack(fill=BOTH, expand=1)
self.master.geometry('600x800')
self.master.config(bg='black')
menu = Menu(self.master)
self.master.config(menu=menu)
def clientExit():
exit()
file = Menu(menu)
file.add_command(label='Exit', command=clientExit)
file.add_command(label='Start', command=self.game)
menu.add_cascade(label='File', menu=file)
def game(self):
canvas = Canvas(self.master, width='600', height='800')
canvas.pack()
canvas.create_rectangle(0, 0, 600, 800, fill='black', outline='black')
character = canvas.create_rectangle(270, 730, 330, 760, fill='blue', outline='red')
left = 75
right = 77
time.sleep(10)
while True:
if ord(getch()) == left:
canvas.move(character, -5, 0)
canvas.update()
elif ord(getch()) == right:
canvas.move(character, 5, 0)
canvas.update()
root = Tk()
app = Window(root)
app.mainloop()
Как видите, в функции def game(self)
я создал прямоугольник в качестве символа. Затем я использовал getch()
для сравнения ввода с клавиатуры; нажатие клавиши со стрелкой вправо / влево переместит символ соответственно. Тем не менее, это не работает в окне: мое окно зависает и говорит «не отвечает». Я вынужден закрыть окно, поэтому я не знаю, работает ли мой код или мой компьютер не работает. Скопируйте и вставьте это в свой редактор и, пожалуйста, дайте мне знать, как я могу это исправить, если это возможно.
Кстати, когда вы загружаете окно, щелкните файл, затем запустите.