Not logged in. · Lost password · Register

s.s.
Member since Apr 2016
7 posts
Subject: Frage nach aufgabe2
Die Aufgabe sagt:
"Bei einer Richtungsänderung wird der bisherige Schwanz der Schlange zu ihrem Kopf. Der Taster soll hierzu
periodisch abgefragt werden (sb_button_getState())"

Das heißt, dass bei einer Richtungsänderung man irgentwie den bisherigen Schwanz wissen sollte und man die Funktion "void drawSnake(uint8_t head, uint8_t length, uint8_t direction)" mit "head = Schwanz" und "direction = die änderte Richtung" aufruft.
Trotzdem gibt die Funktion keine Rückwert zurück, und in der Hinweise steht "Sie benötigen keine globalen Variablen in Ihrem Programm.", also darf man keine globale Variable "schwanz" erstellen, dann weiss man nicht was neue head ist.

Wenn "Der Taster soll hierzu periodisch abgefragt werden (sb_button_getState())" heißt, dass der Tester abgefragt werden soll wenn der Schwanz in bestimmte Stelle kommt, gibt es kein Problem.
Aber wenn "periodisch" heisst nach jede LED an oder aus, dann brauche ich z.B. eine globalen Variable.
Raim
GSPiC-Guru
Member since May 2011
79 posts
Mit Kopf und die Länge kannst du dir den Schwanz (= neuer Kopf) berechnen.

Das periodische Abfragen des Tasters erfolgt nur während des Wartens.
s.s.
Member since Apr 2016
7 posts
Ich weiss nicht wie man mit Kopf und die Länge den Schwanz (= neuer Kopf) berechnen kann.

z.B.
Kopf = 5, Laenge = 5, Richtung: 1→5
○:=Licht an
●:=Licht aus

12345
●○○○○
und
12345
●●●○○

Beide haben die gegebene Kopf und Laenge, Richtung, aber unterschiedliche Schwanz 2 und 4



Ausserdem weiss ich nicht wie man die Werte der Kopf zugreifenkann.
Funktion drawSnake wird aufgerufen
void drawSnake(2, 5, 1→5)

in der Methode:
12345
○○●●●

12345
○○○●●
Jetzt wird Taster aendert.
Dann ist Kopf 3, aber head = 3 ist eine lokale Variable von Funktion drawSnake. Wenn der Funktion beendet ist, kann man nicht Variable head = 3 zugreifen, um die Funktion mit neue Parameter aufzurufen.
Natuerlich kann man in Funktion mit der lokale Variable head = 3 aufrufen aber das ist eine Rekusion und Gestern haben wir in der Vorlesung gelernt, dass Rekursion erhebliche Laufzeit- und Speicherkosten verursacht.
Raim
GSPiC-Guru
Member since May 2011
79 posts
In deinem ersten Beispiel sehe ich nur eine LED oder drei LEDs. Wie soll das die Länge 5 darstellen? Es sind immer 8 LEDs, die Länge gibt an, wie viele davon leuchten.

Dass eine Richtungsänderung nötig ist, wird nicht in drawSnake() festgestellt, denn diese Funktion ist nur für die Darstellung eines Schritts der Schlange zuständig. Die Flankenerkennung befindet sich in der Funktion wait_key(), die geeignet zurückgibt, ob die Richtung geändert werden soll.
This post was edited on 2016-04-29, 22:59 by Raim.
s.s.
Member since Apr 2016
7 posts
Alles klar
danke
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O :troll:
Special characters:
Go to forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen