Jeu de Pierre Feuille Ciseaux
Dans ce mini projet réalisable au niveau SNT, on met en oeuvre un jeu de Pierre Feuille Ciseaux sur deux cartes : chaque joueur doit secouer sa carte 3 fois avant que la carte fasse un choix et l'affiche.
Méthode : Première version
Cette première version est assez simple et met en avant les capacités graphiques de la matrice de LEDs.
# Olivier Lecluse
# 8 mars 2019
from microbit import *
from random import randint
pierre = Image("00900:"
"09990:"
"99599:"
"09990:"
"00900")
feuille = Image("99900:"
"90090:"
"90009:"
"90009:"
"99999")
ciseaux = Image("96009:"
"69090:"
"00900:"
"69090:"
"96009")
nbSecousses = 0
while True:
if accelerometer.was_gesture("shake"):
nbSecousses +=1
display.show(str(nbSecousses))
if nbSecousses == 3:
choix = randint(1,3)
if choix == 1:
display.show(pierre)
elif choix == 2:
display.show(feuille)
elif choix == 3:
display.show(ciseaux)
nbSecousses = 0
Méthode : Seconde version
Dans cette seconde version, nous allons tricher ! la carte de la victime enverra silencieusement par radio son choix à la carte tricheur qui sera donc assuré de gagner si celui-ci appuie sur les deux boutons A et B à partir de la seconde secousse. La pauvre victime n'y verra que du feu.
La morale de l'histoire est qu'il est toujours intéressant d'avoir accès au code source et qu'il ne faut pas croire aveuglément les boites noires !
Voici la version victime
# Olivier Lecluse
# 8 mars 2019
# Shifumi version victime
from microbit import *
from random import randint
import radio
radio.on()
radio.config(group=2)
pierre = Image("00900:"
"09990:"
"99599:"
"09990:"
"00900")
feuille = Image("99900:"
"90090:"
"90009:"
"90009:"
"99999")
ciseaux = Image("96009:"
"69090:"
"00900:"
"69090:"
"96009")
nbSecousses = 0
triche = 1
while True:
if accelerometer.was_gesture("shake"):
nbSecousses +=1
if nbSecousses == 1:
choix = randint(1,3)
radio.send(str(choix))
display.show(str(nbSecousses))
if nbSecousses == 3:
if choix == 1:
display.show(pierre)
elif choix == 2:
display.show(feuille)
elif choix == 3:
display.show(ciseaux)
nbSecousses = 0
Et voici la version à flasher sur la carte du tricheur !
# Olivier Lecluse
# 8 mars 2019
# shifumi version tricheur
from microbit import *
from random import randint
import radio
radio.on()
radio.config(group=2)
pierre = Image("00900:"
"09990:"
"99599:"
"09990:"
"00900")
feuille = Image("99900:"
"90090:"
"90009:"
"90009:"
"99999")
ciseaux = Image("96009:"
"69090:"
"00900:"
"69090:"
"96009")
nbSecousses = 0
triche = 1
while True:
incoming = radio.receive()
if incoming:
triche = int(incoming)
if button_a.was_pressed() and button_b.was_pressed():
choix = triche%3 + 1
if accelerometer.was_gesture("shake"):
nbSecousses +=1
if nbSecousses == 1:
choix = randint(1,3)
display.show(str(nbSecousses))
if nbSecousses == 3:
if choix == 1:
display.show(pierre)
elif choix == 2:
display.show(feuille)
elif choix == 3:
display.show(ciseaux)
nbSecousses = 0