Проблема с созданием "Typeracer" в Python - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в программировании и начал с изучения некоторых Python. Я подумал, что было бы забавно создать игру, похожую на Typeracer, но только набирая алфавит как можно быстрее. Я использовал Tkinter, чтобы построить для него GUI. Я начал с простой проверки, равен ли ввод пользователя строке, а затем отобразил, что они выиграли, используя этот код:

from tkinter import *
import time

key = "abcdefghijklmnopqrstuvwxyz"
start_time = time.time()


root = Tk()
root.title("ABC Game")

answer = Entry(root, width=50)
answer.grid(row=0, column=0)


def check_answer():
    if answer.get() == key:
        end_time = time.time()
        result_time = round(end_time - start_time, 3)
        label_won = Label(root, text="Correct! Your time was: " + str(result_time))
        label_won.grid(row=2, column=0)
    else:
        label_lost = Label(root, text="Incorrect")
        label_lost.grid(row=2, column=0)


answer_button = Button(root, text="Submit", command=check_answer)
answer_button.grid(row=1, column=0)


root.mainloop()

Но затем я захотел принять вызов и потребовать, чтобы ввод пользователя был точно равен следующая буква в алфавите, опечатки не допускались.

Я как бы застрял на этом этапе, и моя проблема в том, что я не знаю, как написать код, который проверяет только следующий ввод от пользователя . И если это ожидаемый ввод, сделайте это, иначе сделайте то.

from tkinter import *
import time

alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
            "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

root = Tk()
root.title = "ABC Game"

game_running = False

#This is the part where I'm stuck, might be faults in the code at other places as well
def key_pressed(event):
    global pressed_key
    pressed_key = repr(event.char)
    n_keys_pressed = 0
    for letters in alphabet:
        while n_keys_pressed <= 28:
            if str(pressed_key) == alphabet[n_keys_pressed]:
                n_keys_pressed += 1
                print("You hit: " + repr(event.char))


def start_game():
    global game_running
    game_running = True
    start_time = time.time
    type_frame = Frame(root)


start_button = Button(root, text="Click me to start the timer", width=50, height=10, command=start_game)
start_button.grid(row=0, column=0)

entry = Entry(root, width=50)
entry.grid(row=1, column=0)

root.mainloop()

Любая помощь или советы приветствуются! Спасибо!

1 Ответ

0 голосов
/ 15 мая 2020

Вам необходимо использовать функцию import time и ввести time.timer ( сколько секунд до времени для )

...