Python Simon Game: I Got Stuck Finishing the Sequence
Question: I'm finally finishing my Simon Game, but I have some doubts about how to
complete the sequence.

Edit: As you asked I have edited my post. Here I will post my code as it was
before this post. So here are my actual problems.

1) I don't know how to add one number to the sequence after each turn.

2) The first turn works fine, but I don't know how to start the next turn,
I've tried to call again the function after checking the sequence but it
doesn't worked.

The necessary code for the two things:

    
    
    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()
    

The checkSequence function is activated by time because I could not find
another way to do it.


Answer: I've answered this question already but you still had some problems, here is
the full and complete code. I've made it more efficient and fixed the problems
:)

This is working I've tested it. Just comment if there is anything you need to
know

    
    
    import Tkinter # you don't need to import Tkinter again, from ... import * moves all the functions from ... into your program
    import random
    
    base = Tkinter.Tk()
    
    fr = Tkinter.Frame(base, bg='black', width='238', height='250')
    fr.pack()
    
    score = Tkinter.Label(base, bg='black', fg='white', text='Score:')
    score.place(x = 30, y = 15)
    
    scoreNum = Tkinter.Label(base, bg='black', fg='white', text = 0)
    scoreNum.place(x = 70, y = 15)
    
    global sequence
    global clicks
    global s
    sequence = []
    clicks = []
    s = 0
    
    yellow = Tkinter.Button(base, bd='0', highlightthickness='0',
                           width='7', height='5', activebackground='yellow',  
                           bg='yellow3', command = lambda *args: Click(yellow, "yellow", "yellow3", 1))
    
    
    blue = Tkinter.Button(base, bd='0', highlightthickness='0',
                         width='7', height='5', activebackground='blue',
                         bg='medium blue', command = lambda *args: Click(blue, "blue", "medium blue", 2))
    
    red = Tkinter.Button(base, bd='0', highlightthickness='0',
                        width='7', height='5', activebackground='red',
                        bg = 'red3', command = lambda *args: Click(red, "red", "red3", 3))    
    
    green = Tkinter.Button(base, bd='0', highlightthickness='0',
                          width='7', height='5', activebackground='green4',
                          bg='dark green', command = lambda *args: Click(green, "green", "dark green", 4))
    
    yellow.place(x = 30, y = 50)
    blue.place(x = 125, y = 50)
    red.place(x = 30, y = 145)
    green.place(x = 125, y = 145)   
    
    
    def Click(button, colour1, colour2, number): # these arguments change so that you don't have to copy the function 10 times
        global clicks
    
        yellow.configure(activebackground=colour2)
        yellow.after(500, lambda: yellow.configure(activebackground=colour1))
    
        clicks.append(number)
        checkSequence() # why not do this straight away?
    
    def checkSequence():
        global clicks
        global sequence
        global s
    
        print("clicks:    "+str(clicks)) # debug
        print("sequence:  "+str(sequence))
    
        if clicks != sequence[:len(clicks)]: # if all their clicks so far e.g. [1, 2, 4, 3] DONT fit with the sequence e.g. [3, 2, 4, 3, 2, 1]
            print("           ...Incorrect!")
            s = 0
            scoreNum.configure(text = 0)
            sequence = []
            clicks = []
            base.after(1000, showSequence) # now move to the next value in the sequence
    
        elif clicks == sequence: # they have completed a sequence
            print("           ...Match!")
            s = s + 1
            scoreNum.configure(text = s)
            clicks = []
            base.after(1000, showSequence) # now move to the next value in the sequence
    
    def showSequence():
        global sequence
        global clicks
    
        r = random.randint(1, 4)
    
        if r == 1:
            yellow.configure(bg='yellow')
            yellow.after(1000, lambda: yellow.configure(bg='yellow3'))
    
        elif r == 2:
            blue.configure(bg='blue')
            blue.after(1000, lambda: blue.configure(bg='medium blue'))  
    
        elif r == 3:
            red.configure(bg='red')
            red.after(1000, lambda: red.configure(bg='red3'))   
    
        elif r == 4:
            green.configure(bg='green')
            green.after(1000, lambda: green.configure(bg='dark green')) 
    
        sequence.append(r) # you don't need this in all the if statements, it always happens
    
    base.after(100, showSequence)
    base.resizable(False, False)
    base.mainloop()
    

NOTE: I'm using python 3.4.1 so I changed all the tkinters to Tkinter

