Lernpfad:Das micro:glow/8: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 21: Zeile 21:


while True:
while True:
    # Knopf A sendet das 'flash' Signal
# Knopf A sendet das 'flash' Signal
    if button_a.was_pressed():
if button_a.was_pressed():
        radio.send('flash')
radio.send('flash')
   
 
    # Empfangen der Signale anderer micro:bits
# Empfangen der Signale anderer micro:bits
    empfang = radio.receive()
empfang = radio.receive()
    if empfang == 'flash':
if empfang == 'flash':
        # Kurz (zufällig) warten
# Kurz (zufällig) warten
        sleep(randint(50, 350))
sleep(randint(50, 350))
        # Animation abspielen
# Animation abspielen
        display.show(flash, delay=100, wait=False)
display.show(flash, delay=100, wait=False)
        # In 10% der Fälle wieder ein 'flash' senden
# In 10% der Fälle wieder ein 'flash' senden
        if randint(0,9) == 1:
if randint(0,9) == 1:
            sleep(500)
sleep(500)
            radio.send('flash');
radio.send('flash');
</syntaxhighlight>
</syntaxhighlight>


{{Lösung:End}}
{{Lösung:End}}

Version vom 28. Januar 2020, 22:03 Uhr

Eine zufällige Endlosschleife

Dein micro:glow reagiert nun auf die Signale anderer "Glühwürmchen" und kann selber ein Signal versenden. Aber wenn die anderen micro:glows auf eines deiner Signale reagieren, dann leuchten sie ja auf, was im Gegnzug dein mico:glow zu einer Reaktion veranlassen sollte. Und diese Reaktion löst wieder ein Signal bei den anderen aus ... und so weiter.

Im Prinzip würde man eine Endlosschleife von Glüh-Signalen auslösen, sobald nur ein micro:glow ein erstes Signal sendet.

Damit das "Leuchtkonzert" auch irgendwann zu Ende ist, soll jedes micro:glow nur bei 10% der empfangenen Signale selber wieder ein 'flash' Signal versenden.

Ergänze nach dem Glühen eine Verzweigung, die mit einer Wahrscheinlichkeit von 10% (if randint(0,9) == 1:) nach einer Wartezeit von 500 Millisekunden (sleep(500)) das Wort 'flash' sendet (radio.send('flash')).

Lösung
from microbit import * 
from random import randint
import radio

# Funksender einschalten
radio.on()

 # Erstellen der "glow" Animation
flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]

while True:
	# Knopf A sendet das 'flash' Signal
	if button_a.was_pressed():
		radio.send('flash')

	# Empfangen der Signale anderer micro:bits
	empfang = radio.receive()
	if empfang == 'flash':
		# Kurz (zufällig) warten
		sleep(randint(50, 350))
		# Animation abspielen
		display.show(flash, delay=100, wait=False)
		# In 10% der Fälle wieder ein 'flash' senden
		if randint(0,9) == 1:
			sleep(500)
			radio.send('flash');