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

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
{{NNavigation}}
{{NNameAnzeigen}}{{NNavigation}}
== Eine zufällige Endlosschleife ==
== 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:glow'''s 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.
Dein '''micro:glow''' reagiert nun auf die Signale anderer "Glühwürmchen" und kann selber ein Signal versenden. Aber wenn die anderen '''micro:glow'''s auf eines deiner Signale reagieren, dann leuchten sie ja selber auf, was im Gegenzug 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.
Im Prinzip würde man eine ''Endlosschleife'' von Glüh-Signalen auslösen, sobald nur ein '''micro:glow''' ein erstes Mal aufleuchtet.


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


{{Aufgabe:Start}}
Ergänze nach dem Glühen eine Verzweigung, die mit einer Wahrscheinlichkeit von 10% (<code>if randint(0,9) == 1:</code>) nach einer Wartezeit von 500 Millisekunden (<code>sleep(500)</code>) das Wort <code>'flash'</code> sendet (<code>radio.send('flash')</code>).
Ergänze nach dem Glühen eine Verzweigung, die mit einer Wahrscheinlichkeit von 10% (<code>if randint(0,9) == 1:</code>) nach einer Wartezeit von 500 Millisekunden (<code>sleep(500)</code>) das Wort <code>'flash'</code> sendet (<code>radio.send('flash')</code>).
{{Aufgabe:End}}
{{Lösung:Start}}
{{Lösung:Start}}
<syntaxhighlight lang="python" line="1" highlight="21-23">
Die neuen Zeilen sind farbig hervorgehoben.
<syntaxhighlight lang="python" line="1" highlight="24-26">
from microbit import *  
from microbit import *  
from random import randint
from random import randint
import radio
import radio


# Funksender einschalten
radio.on()
radio.on()


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


while True:
while True:
     # Knopf A löst das Glühen aus
     # Knopf A sendet das 'flash' Signal
     if button_a.was_pressed():
     if button_a.was_pressed():
         radio.send('flash')
         radio.send('flash')
      
 
     empfang = radio.recevie()
     # Empfangen der Signale anderer micro:bits
     empfang = radio.receive()
     if empfang == 'flash':
     if empfang == 'flash':
         # Kurz (zufällig) warten
         # Kurz (zufällig) warten
         sleep(random.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
         if randint(0,9) == 1:
         if randint(0,9) == 1:
             sleep(500)
             sleep(500)

Aktuelle Version vom 7. Dezember 2023, 14:40 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 selber auf, was im Gegenzug 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 Mal aufleuchtet.

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

Icon Heft.png
Arbeitsauftrag

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

Die neuen Zeilen sind farbig hervorgehoben.

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');