Я, наконец, заканчиваю игру с Саймоном, но у меня есть некоторые сомнения относительно того, как закончить последовательность.Python Simon Игра: Я застрял, завершая последовательность
Редактировать: Как вы просили, я редактировал свое сообщение. Здесь я выложу свой код так, как это было до этого сообщения. Итак, вот мои актуальные проблемы.
1) Я не знаю, как добавить одно число в последовательность после каждого поворота.
2) Первый ход работает нормально, но я не знаю, как начать следующий поворот. Я попытался снова вызвать функцию после проверки последовательности, но она не сработала.
Необходимый код для двух вещей:
from Tkinter import *
import Tkinter
import random
base = Tkinter.Tk()
fr = Tkinter.Frame(base, bg='black', width='238', height='250')
score = Tkinter.Label(base, bg='black', fg='white', text='Score:')
score.place(x = 30, y = 15)
s = 0
scoreNum = Tkinter.Label(base, bg='black', fg='white', text = s)
scoreNum.place(x = 70, y = 15)
clicks = []
color = 0
def yellowClick():
yellow.configure(activebackground='yellow3')
yellow.after(500, lambda: yellow.configure(activebackground='yellow'))
global clicks
global color
color = 1
clicks.append(color)
yellow = Tkinter.Button(base, bd='0', highlightthickness='0',
width='7', height='5', activebackground='yellow',
bg='yellow3', command = yellowClick)
yellow.place(x = 30, y = 50)
def blueClick():
blue.configure(activebackground='medium blue')
blue.after(500, lambda: blue.configure(activebackground='blue'))
global clicks
global color
color = 2
clicks.append(color)
blue = Tkinter.Button(base, bd='0', highlightthickness='0',
width='7', height='5', activebackground='blue',
bg='medium blue', command = blueClick)
blue.place(x = 125, y = 50)
def redClick():
red.configure(activebackground='red3')
red.after(500, lambda: red.configure(activebackground='red'))
global clicks
global color
color = 3
clicks.append(color)
red = Tkinter.Button(base, bd='0', highlightthickness='0',
width='7', height='5', activebackground='red',
bg = 'red3', command = redClick)
red.place(x = 30, y = 145)
def greenClick():
green.configure(activebackground='dark green')
green.after(500, lambda: green.configure(activebackground='green4'))
global clicks
global color
color = 4
clicks.append(color)
green = Tkinter.Button(base, bd='0', highlightthickness='0',
width='7', height='5', activebackground='green4',
bg='dark green', command = greenClick)
green.place(x = 125, y = 145)
def scoreUp():
global s
s = s + 1
scoreNum.configure(text = s)
sequence = []
def checkSequence():
global clicks
global sequence
if clicks == sequence:
scoreUp()
def showSequence():
global sequence
global clicks
global check
r = random.randint(1, 4)
if r == 1:
yellow.configure(bg='yellow')
yellow.after(1000, lambda: yellow.configure(bg='yellow3'))
sequence.append(r)
base.after(5000, checkSequence)
elif r == 2:
blue.configure(bg='blue')
blue.after(1000, lambda: blue.configure(bg='medium blue'))
sequence.append(r)
base.after(5000, checkSequence)
elif r == 3:
red.configure(bg='red')
red.after(1000, lambda: red.configure(bg='red3'))
sequence.append(r)
base.after(5000, checkSequence)
elif r == 4:
green.configure(bg='green4')
green.after(1000, lambda: green.configure(bg='dark green'))
sequence.append(r)
base.after(5000, checkSequence)
base.after(2000, showSequence)
fr.pack()
base.resizable(False, False)
base.mainloop()
Функция checkSequence активируется по времени, потому что я не мог найти другой способ сделать это.
Что вы имеете в виду остановки? Как остановить и ждать события? –
Да, вот что я имею в виду: – Andrea
'sequence == sequence + 1' равно' 0 == 1', и он всегда False. – furas