# Simon SaysΒΆ

A game of watching and recalling patterns.

```"""Simon Says

Exercises

1. Speed up tile flash rate.
"""

from random import choice
from time import sleep
from turtle import *

from freegames import floor, square, vector

pattern = []
guesses = []
tiles = {
vector(0, 0): ('red', 'dark red'),
vector(0, -200): ('blue', 'dark blue'),
vector(-200, 0): ('green', 'dark green'),
vector(-200, -200): ('yellow', 'khaki'),
}

def grid():
"""Draw grid of tiles."""
square(0, 0, 200, 'dark red')
square(0, -200, 200, 'dark blue')
square(-200, 0, 200, 'dark green')
square(-200, -200, 200, 'khaki')
update()

def flash(tile):
"""Flash tile in grid."""
glow, dark = tiles[tile]
square(tile.x, tile.y, 200, glow)
update()
sleep(0.5)
square(tile.x, tile.y, 200, dark)
update()
sleep(0.5)

def grow():
"""Grow pattern and flash tiles."""
tile = choice(list(tiles))
pattern.append(tile)

for tile in pattern:
flash(tile)

print('Pattern length:', len(pattern))
guesses.clear()

def tap(x, y):
"""Respond to screen tap."""
onscreenclick(None)
x = floor(x, 200)
y = floor(y, 200)
tile = vector(x, y)
index = len(guesses)

if tile != pattern[index]:
exit()

guesses.append(tile)
flash(tile)

if len(guesses) == len(pattern):
grow()

onscreenclick(tap)

def start(x, y):
"""Start game."""
grow()
onscreenclick(tap)

setup(420, 420, 370, 0)
hideturtle()
tracer(False)
grid()
onscreenclick(start)
done()
```