User manual
29
Die Wegbreite
W
legt das Raster des Labyrinths
f
est.
Der Zähler
Z
zählt mit, wie viele Rasterpunkte bereits an das Labyrinth angeschlossen sind, und
stellt so
f
est, wann es
f
ertig gezeichnet ist.
Jedes Scratch-Ob
j
ekt kann bei seiner Bewe
g
un
g
Linien zeichnen, wenn der so
g
enannte Malstift
ab
g
esenkt ist. Solan
g
e er an
g
ehoben ist, hinterlassen Ob
j
ekte keine Malspuren.
A
ls Erstes zeichnen wir ein hellgraues Rechteck mit einem Abstand von einer Wegbreite um das
eigentliche Labyrinth herum. Dies wird später verhindern, dass beim Erzeugen des Labyrinths
Mauersegmente außen am Labyrinth angebaut werden. Setzen Sie die Stiftfarbe auf Hellgrau und
schalten Sie den Stift zunächst aus, um die Figur an die erste Ecke dieses Rechtecks zu bringen.
A
ls Nächstes zeichnen wir den Umriss des Lab
y
rinths in Blau. Dies
f
unktioniert
g
anz ähnlich, da
es auch ein Rechteck ist, dessen Mittelpunkt im Nullpunkt des Koordinatensystems liegt.
Jetzt kommt der eigentlich interessante Programmteil, der das Labyrinth aufbaut. Da wir, bedingt
durch den Zufallsgenerator, vorher nicht wissen, wie lange es dauert, das Labyrinth aufzubauen,
v
e
rw
e
n
de
n wir
e
in
e
wi
ede
rh
o
l
e
b
i
s
..
.
-Schleife, die so lange läuft, bis alle inneren Rasterpunkte
des Rechtecks an das Netz der Labyrinthmauern angeschlossen sind. Es gibt B-1 * H-
1
Raster
p
unkte innerhalb des Rechtecks, die die Variable
Z
z
ä
hl
t
.
In jedem Schleifendurchlauf wird ein Punkt zufällig ermittelt, von dem aus neue Labyrinthmauern
gebaut werden. Voraussetzung ist natürlich, dass der Punkt bereits an einer Mauer liegt, da
Mauern nach den Bauregeln nicht frei im Raum beginnen können. Die Koordinaten dieses zufälli
g
e
rmi
tte
l
te
n P
u
nk
tes
w
e
r
de
n in
de
n V
a
ri
ab
l
e
n
X
u
n
d
Y
g
espeichert
.
Liegt der zu
f
ällig ermittelte Punkt au
f
einer Mauer, können von dort neue Mauern gezeichnet
werden. Um das zu überprüfen, verwenden wir den Block wir
d
Far
b
e...
b
erü
h
rt
.
Wenn
d
as
unsic
h
t
b
are O
b
je
k
t,
d
as
d
ie Mauern zeic
h
net,
d
ie
bl
aue Far
b
e
b
erü
h
rt, mit
d
er
d
ie Mauern
gezeichnet werden, steht es au
f
einem Rasterpunkt mit einer Mauer. Das Objekt ist klein genug,
um keine Nachbarmauer auf dem nächsten Rasterpunkt zu berühren. Es kann auch bei der hier
verwen
d
eten Programm
l
ogi
k
nie zwisc
h
en zwei Rasterpun
k
ten ste
h
en.
Trifft die Bedingung zu, versucht das Programm, innerhalb der Schleife möglichst viele Mauern
von
d
em ermitte
l
ten Pun
k
t aus in
d
ie vier Ric
h
tungen zu zeic
h
nen. Es
k
önnen a
b
er
h
öc
h
stens
drei Mauern neu gezeichnet werden, da ein Punkt nur als Anfangspunkt verwendet
wird, wenn er bereits an einer Mauer liegt. Die vier möglichen Richtungen werden
mit einer weiteren Schlei
f
e abgearbeitet.
Um durch das Labyrinth zu lau
f
en, verwenden wir ein zweites Objekt
W
e
g
, das mit
vier Knetekontakten in den vier Richtun
g
en
g
esteuert wird
.
Beim Klick auf das
g
rüne Fähnchen wird dieses Ob
j
ekt zunächst versteckt, bis das
Lab
y
rinth ferti
g
ist. Zusätzlich werden die vier GPIO-Ein
g
än
g
e für die Knetekontakte
ini
t
i
a
li
s
i
e
r
t.
Beim Klick auf das grüne Fähnchen versteckt
sic
h
d
as O
b
je
k
t »Weg« un
d
initia
l
isiert
d
ie
Knete
k
onta
k
te.
Das Objekt soll erst au
f
tauchen, wenn das Labyrinth
f
ertig gezeichnet ist. Dazu brauchen wir neue Blöcke, die es einem Objekt möglich
machen, an ein anderes eine Nachricht zu senden. Bisher galten alle Programmblöcke immer nur
f
ür ein Objekt. Das Programm des Objekts
Waen
d
e ent
h
ä
l
t
d
azu am En
d
e einen B
l
oc
k
sende
f
ertig an all
e
.
Das Hauptprogramm zum Bewegen des Objekts
W
e
g
durch das Labyrinth startet, wenn diese Nachricht emp
f
angen wird.
A
m An
f
an
g
zei
g
t sich das versteckte Ob
j
ekt wieder, setzt Sti
f
t
f
arbe und -dicke, hinterlässt in der unteren rechten Ecke einen Abdruck
un
d
startet
d
ann in
d
er
l
in
k
en o
b
eren Ec
k
e
d
es La
by
rint
h
s. Da
b
ei wir
d
mit einem
s
a
g
e...
f
ür... Sek-B
l
oc
k
eine
k
urze Er
kl
ärun
g
in einer
Sprec
hbl
ase angezeigt
.
D
as
P
rogramm 2
1l
a
by
rint
h
f
ür das Objekt
W
ae
n
de
Das fertig erstellte Labyrinth
10214-8 Raspberry Adventskalender 2016_03.indd 2910214-8 Raspberry Adventskalender 2016_03.indd 29 28.04.2016 15:34:0028.04.2016 15:34:00










