Niki - überhaupt realisierbar

xXNiemandXx

Cadet 4th Year
Registriert
Jan. 2008
Beiträge
98
Huhu,

würde gerne wissen, ob man Niki überhaupt so laufen lassen kann, ohne den Weg direkt festzulegen.
Ich möchte, dass Niki auf dem Arbeitsfeld zum Material läuft, dann umdreht und zum Startpunkt zurück kommt.
Hier das Arbeitsfeld:

Ich befass mich erst seit Dienstag mti Niki, darum wollte ich lieber euch fragen, nicht, dass ich jetzt Stunden lang an was dran sitze, was dann später eh nicht klappt. :D
 

Anhänge

  • Arbeitsfeld.JPG
    Arbeitsfeld.JPG
    38,2 KB · Aufrufe: 470
Ja, wenn ich immer sag

If vorne_frei then vor; (usw.)

... aber dann kommt ja die Wand, dann müsste ich ja sagen, wenn links oben frei ist, soll er dahin gehen, aber in dem Moment geb ich Niki ja schon den Weg vor oder?

Weil ich geb ja schon vor, welche Richtung er checken soll
 
Code:
If rechts_frei und nicht_hergekommen then rechts
else
  if oben_frei und nicht_hergekommen then hoch
  else
    if untern_frei und nicht_hergekommen then runter then
    else
      if links_frei und nicht_hergekommen then links
      else sackgasse

Das ganze wird in einer Schleife immer wieder ausgeführt, bis er in der Sackgasse ist. Damit gibt man keinen Weg vor und das Ziel sollte erreicht werden.
 
Das mit dem herkommen geht glaub ich nicht oder doch?

Das ist ja Pascal stark abgeschwächt, also keine Variablen und so ...

http://www.hupfeld-software.de/pmwiki/pmwiki.php?n=Main.Niki schrieb:
Um die Anfangsschwierigkeiten beim Erlernen der Programmierung möglichst gering zu halten, wurde der Sprachumfang der Niki-Sprache gegenüber Pascal stark reduziert (z. B. keine Variablen), so dass durch interessante Problemstellungen ein eher spielerischer Zugang möglich ist. Dabei muss ein Roboter so programmiert werden, dass er auf einem Arbeitsfeld verschiedene Aufgaben bewältigt. Er kann dabei Gegenstände aufnehmen, transportieren und abgeben. Außerdem verfügt er über Sensoren, mit denen er Hindernisse und Gegenstände lokalisieren kann.
 
In etwa so: (nicht ganz niki-pascal, ist eine weile her, aber ich denke du kannst es entsprechend modifizieren)
Code:
repeat 
    while vorne frei do vor;
    if rechts_frei then drehe rechts;
    else if links_frei then drehe links;
    else drehe_um;
until platz_belegt
So solltest du in jedem irrgarten ohne kreise zu einem belegten platz kommen.

Das zurücklaufen kann ich mir auch nicht ganz vorstellen. Evtl über die schrittzahl wenn das möglich ist.
 
Ganz lustig dieses Niki. Das Labyrinth sollte eigentlich nicht so schwer sein.

Mal als Pseudo-Code:
Code:
Wiederhole
  Gehe solange vorwärts bis Wand [i](dh es geht links oder rechts weiter)[/i]
  Drehe Links
  Wenn immer noch vorne eine Wand ist
     Drehe 2x Links [i](damit schaue ich vom Anfang aus nach rechts)[/i]
bis Feld belegt
Folgenden Abschnitt nur markieren, wenn du die Lösung sehen willst.
Code:
[COLOR="White"]Program test;

Begin
  WHILE NOT vorne_frei DO drehe_links;
  REPEAT
    WHILE vorne_frei DO vor;
    drehe_links;
    IF NOT vorne_frei THEN BEGIN
      drehe_links;
      drehe_links;
    END;
  UNTIL Platz_belegt;
End.[/COLOR]
 
Zurück
Oben