Here is the complete CircuitPython version of the Quick Draw code.
# Circuit Playground Express Quick Draw
#
# Who's faster?
#
# Author: Carter Nelson
# MIT License (https://opensource.org/licenses/MIT)
import time
import random
from analogio import AnalogIn
import board
from adafruit_circuitplayground.express import cpx
SHORTEST_DELAY = 1 # seconds
LONGEST_DELAY = 10 # "
PLAYER_PIXELS = {
1 : (0,1,2,3,4),
2 : (5,6,7,8,9)
}
def show_outcome(player, winner):
# Turn them all off
cpx.pixels.fill(0)
# Set pixel color
if winner:
color = 0x00FF00
else:
color = 0xFF0000
# Show which player won/lost
for p in PLAYER_PIXELS[player]:
cpx.pixels[p] = color
# Play a little tune
if winner:
cpx.play_tone(800, 0.2)
cpx.play_tone(900, 0.2)
cpx.play_tone(1400, 0.2)
cpx.play_tone(1100, 0.2)
else:
cpx.play_tone(200, 1)
# Sit here forever
while True:
pass
# Seed the random function with noise
a4 = AnalogIn(board.A4)
a5 = AnalogIn(board.A5)
a6 = AnalogIn(board.A6)
a7 = AnalogIn(board.A7)
seed = a4.value
seed += a5.value
seed += a6.value
seed += a7.value
random.seed(seed)
# Wait a random amount of time
count_time = random.randrange(SHORTEST_DELAY, LONGEST_DELAY+1)
start_time = time.monotonic()
while time.monotonic() - start_time < count_time:
# Check if player draws too soon
if cpx.button_a:
show_outcome(1, False)
if cpx.button_b:
show_outcome(2, False)
# Turn on all the NeoPixels
cpx.pixels.fill(0xFFFFFF)
# Check for player draws
while True:
if cpx.button_a:
show_outcome(1, True)
if cpx.button_b:
show_outcome(2, True)
Page last edited March 08, 2024
Text editor powered by tinymce.