Simon Says - Bastelworkshop

Pi and More 7

20.06.2015


Simon says



Ralph H. Baer: 1922 - 2014

Aufbau der Schaltung I

Benötigte Teile:

Zu beachten:

Aufbau der Schaltung II





Python script I


#!/usr/bin/python
import time
import RPi.GPIO as GPIO
import random
import os
import sys

btnExit = 21 # optional
buttons = [7, 15, 13, 11, btnExit]
leds = [12, 16, 18, 26]

Python script II


def init():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setwarnings(False)
    random.seed()
    for pin in buttons:
        GPIO.setup(pin, GPIO.IN, GPIO.PUD_DOWN)
    for pin in leds:
        GPIO.setup(pin, GPIO.OUT)

def flashLED (cycles):
    for x in range(1, 2*cycles):
        for pin in leds:
            GPIO.output(pin, x%2)
        time.sleep(0.2)
    for pin in leds:
        GPIO.output(pin, 0)
    time.sleep(1.5)

#init()
#flashLED(1)

Python script III


def beep (num):
    GPIO.output(leds[num], 1)
    #os.system("ogg123 --quiet -K1 beep"..num+1..".ogg")
    time.sleep(1)
    GPIO.output(leds[num], 0)
    time.sleep(0.5)

Python script IV


def run_game():
    flashLED(3)
    count=0
    playlist = []
    runLoop=True
    while runLoop:
        playlist.append(random.randint(0, len(leds)-1))
        for num in playlist:
            beep(num)
        for num in playlist:
            waitForUser=True
            while waitForUser:
                time.sleep(0.05)
                for button in buttons:
                    if GPIO.input(button):
                        if (button!=buttons[num]):
                            #if button!=btnExit: os.system("ogg123 --quiet gameover.ogg")
                            waitForUser=runLoop=False
                            break
                        else:
                            beep(num)
                            waitForUser=False
                            break

        if (runLoop): flashLED(1)
    print ("GAME OVER")
    GPIO.cleanup()

Python script V


init()
run_game()

sys.exit()