Как я могу сделать что-то для каждого элемента в списке с задержкой? - PullRequest
5 голосов
/ 15 июня 2019

Я пытаюсь сделать игру памяти, в которой есть четыре цвета, и вы должны соответствовать шаблону, в то время как программа продолжает добавлять +1 к списку.

сейчас я не могу понять, какполучить игру для отображения шаблона.и затем дождитесь ввода данных от игрока, чтобы завершить игру или добавить другой цвет к шаблону.

Это все, что я могу придумать:

def addlist():
    if playerpattern == pattern:
        pattern.append(random.randint(1, 4)) 

def listcheck():
    if playerpattern == pattern:
        for i in pattern:
            if i == 1:
                topleft.color = (255, 0, 0)
            else:
                topleft.color = (100, 0, 0)
            if i == 2:
                topright.color = (0, 0, 255)
            else:
                topright.color = (0, 0, 175)
            if i == 2:
                bottomleft.color = (0, 255, 0)
            else:
                bottomleft.color = (0, 175, 0)
            if i ==4:
                bottomright.color = (255, 255, 0)
            else:
                bottomright.color = (175, 175, 0)

pattern = []
playerpattern = []
playing = True

while playing:
    clock.tick(10)
    print(pattern)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            playing = False
        if event.type == MOUSEBUTTONDOWN:
            mouseclick()

    mousehover()
    addlist()
    listcheck()
    draw()

pygame.quit()

В основном, когда игра начинается, я хочуигра, чтобы зажечь паттерн [0] (один из 4 квадратов).

Затем, когда игрок получит правильное отображение, отобразите паттерн [0], а затем паттерн [1] с задержкой и затем повторяйте, пока не закончится.Спасибо за помощь

1 Ответ

1 голос
/ 15 июня 2019

Pygame имеет функцию таймера pygame.time.set_timer().

Определить идентификатор события (7 - это просто любое число, вы можете определить это число)

myEventID = pygame.USEREVENT+7

Запустить таймер с определенным интервалом времени, например, 1 секунда (1000 миллисекунд)

pygame.time.set_timer(myEventID, 1000) # 1000 milliseconds interval

Получать уведомление о событии каждый раз, когда истекает промежуток времени:

for event in pygame.event.get():

    if event.type == myEventID:
        # [...]

Остановить таймер, передав 0 в аргумент миллисекунды:

pygame.time.set_timer(myEventID, 0)

ДобавитьПеременная состояния игры, которая указывает текущее состояние игры и изменяет эту переменную в таймере.Состояние представляет собой целое число, имеет конкретное значение, например

gameState = 0
while playing: 

    for event in pygame.event.get():

        if event.type == myEventID:
            # change the game state - this is just an example
            if gameState == 0:
                gameState = 1 


    if gameState == 0:

        # do default

    elif gameState == 1:

        # do something else

    elif gameState == 2:

       # do something completely different

    else:

       # another case 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...