Nicht angemeldet. · Kennwort vergessen · Registrieren

s.s.
Mitglied seit 04/2016
7 Beiträge
Betreff: 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
Mitglied seit 05/2011
79 Beiträge
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.
Mitglied seit 04/2016
7 Beiträge
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
Mitglied seit 05/2011
79 Beiträge
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.
Dieser Beitrag wurde am 29.04.2016, 22:59 von Raim verändert.
s.s.
Mitglied seit 04/2016
7 Beiträge
Alles klar
danke
Schließen Kleiner – Größer + Auf diesen Beitrag antworten:
Prüfcode: VeriCode Gib bitte das Wort aus dem Bild ins folgende Textfeld ein. (Nur die Buchstaben eingeben, Kleinschreibung ist in Ordnung.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O :troll:
Weitere Zeichen:
Gehe zu Forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen