from gpiozero import Button, LED from time import sleep from signal import pause import random #LED GPIO Ports grn = LED(4) red = LED(14) ylw = LED(18) blu = LED(27) #Button GPIO Ports butylw = Button(17) butgrn = Button(2) butred = Button(15) butblu = Button(22) #CPU turn def game(time): sleep(.5) pattern = '' while True: play_pattern = '' #Add one colour to the pattern x = random.randrange(4) if x == 0: pattern = pattern + 'g' elif x == 1: pattern = pattern + 'r' elif x == 2: pattern = pattern + 'y' elif x == 3: pattern = pattern + 'b' #Light up the correct lights for letter in pattern: if letter == 'g': lightup('g',time) elif letter == 'r': lightup('r',time) elif letter == 'y': lightup('y',time) elif letter == 'b': lightup('b',time) #Player's Turn count = 0 for letter in pattern: checker = 2 while True: if butgrn.is_pressed: lightup('g',time) play_pattern = play_pattern + 'g' checker = check(pattern,play_pattern,count) elif butred.is_pressed: lightup('r',time) play_pattern = play_pattern + 'r' checker = check(pattern,play_pattern,count) elif butylw.is_pressed: lightup('y',time) play_pattern = play_pattern + 'y' checker = check(pattern,play_pattern,count) elif butblu.is_pressed: lightup('b',time) play_pattern = play_pattern + 'b' checker = check(pattern,play_pattern,count) #Continues or fails depending on player input if checker == 1: x += 1 break elif checker == 0: flash(len(pattern),.1) return len(pattern) count += 1 flash(1, .5) #Code to lightup depending on colour in pattern/button press def lightup (clr,time): if clr == 'g': light = grn elif clr == 'r': light = red elif clr == 'y': light = ylw elif clr == 'b': light = blu light.on() sleep(time) light.off() sleep(time) #Checks for correct input def check(play_pattern, pattern, x): if play_pattern[x] == pattern[x]: return 1 elif play_pattern[x] != pattern[x]: return 0 else: print ('ERROR! memplay_turn') def timeset(time): print 'Choose a difficulty:\nBlue: Hard \nYellow: Normal \nRed: Easy \nGreen: Select' flash(3,time) while True: grn.on() if butblu.is_pressed: time = .1 flash(3,time) elif butylw.is_pressed: time = .3 flash(3,time) elif butred.is_pressed: time = .5 flash(3,time) elif butgrn.is_pressed: grn.off() flash(1, .3) return time #Runs the game def memgame(): time = timeset(.3) length = game(time) print 'You Lose! You made it ', length, ' turns!' print 'Do you want to play again? Green for yes, Red for no.' red.on() grn.on() while True: if butgrn.is_pressed: red.off() grn.off() time = timeset(time) length = game(time) red.on() grn.on() print 'You Lose! You made it ', length, ' turns!' print 'Do you want to play again? Green for yes, Red for no.' elif butred.is_pressed: red.off() grn.off() break #Flashes lights if player loses (flash) or inputs correctly (pl_ok) def flash(x,time): for i in range(x): red.toggle() ylw.toggle() blu.toggle() grn.toggle() sleep(time) red.toggle() ylw.toggle() blu.toggle() grn.toggle() sleep(time) #Runs game memgame()