anfänger programmierung mit niki
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
aufgabe
baumstamm
damal
gegenstand
getrnk
informatik
kleeblatt
kontrollstruktur
kugeln
kuller
kstchen
not
pascal
primitive
program
recht
schreiten
startplatz
ungefhr
zurck
-
hey,
ich hab gerad in informatik das programm NIKI zufassen, und soll dort nun eine aufgabe erledigen..
ich möchte dabei gern einen variable ablauf..
das feld ist so aufgebaut:
http://nils-werner.com/niki.jpg
in jedes kästchen, wo etwas liegt, soll ein kuller hinzu kommen..
befehle kann man hier nachlesen ;) :
http://www.hupfeld-software.de/beschreibung/sprache.htm#Kontrollstrukturen
ich habe mir eine schleife gedacht, in dem er imma dann vorwärts geht, wenn auf dem feld was liegt (das erkennt er an den sensoren) und sonst soll er einmal rechts/bzw links rum vor was ablegen und dann wieder rechts/bzw links rum
das programm wurde mit pascal geschrieben, vlt kann damit ja jemand was anfangen ;) wäre nett wenn ihr mir einen denk anstoß gebt*g*das programm, was ich bin jetzt geschafft hab, sieht so aus: ich würd es nur gern komprimieren ;)
PROGRAM getreank;
PROCEDURE drehe_rechts;
BEGIN
drehe_links;
drehe_links;
drehe_links;
END;
PROCEDURE vor_ab;
BEGIN
vor;
gib_ab;
END;
PROCEDURE vor_leg;
BEGIN
IF Platz_belegt THEN vor_ab;
REPEAT vor_ab UNTIL vorne_frei;
END;
PROCEDURE vor_ganz;
BEGIN
vor_leg;
drehe_rechts;
vor_ab;
drehe_rechts;
vor_leg;
drehe_links;
vor_ab;
drehe_links;
vor_leg;
drehe_rechts;
vor_ab;
drehe_rechts;
vor_leg;
drehe_links;
vor;
END;
BEGIN
Arbeitsfeld (getraenk);
drehe_links;
vor_ab;
vor_ganz;
vor_ab;
drehe_links;
vor_ganz;
vor_ab;
drehe_links;
vor_ganz;
drehe_rechts;
vor;
drehe_rechts;
WHILE vorne_frei DO vor;
drehe_links;
drehe_links;
END.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
interessant, erinnert irgendwie an Logo, ist nur ein bißchen besser.
Meine Überlegung wäre (hab mir deinen Code nicht angeguckt):
Warum nicht einfach das ganze Feld in Schlängel-linien abfahren und dann immer prüfen ob da was ist oder nicht.
Wenn das auch die Rechengeschwindigkeit von Pascal hat, wäre das ja kein Ding, oder?
Außerdem stehst du dann gut da wenn dein Lehrer die Kugeln bei der nächsten Aufgabe anders verteilt.
-
das tut es ja schon *g* es leigt einfach imma was ab ^^ ich wollte nur, das es das vlt automatisch macht, und man dabei dann ein wenig code einspart ;)
-
in jedes kästchen, wo etwas liegt, soll ein kuller hinzu kommen..
Leider macht das dein Program nicht!
Dein Program legt, ob dort schon Gegenstände sind oder nicht, neue Gegenstände genau auf die Felder, wo (in diesem Fall) welche sind. Demnach erfüllt es deine Aufgabe nur zum Teil, da NIKI - sobald du einen Gegenständ irgendwo wegnimmst - trotzdem einen Gegenstand auf das Feld legt.
Ich hab dir da mal was geschrieben...
PROGRAM getraenk; PROCEDURE kehrt_rechts; BEGIN drehe_links; drehe_links; drehe_links; IF platz_belegt THEN gib_ab; vor; drehe_links; drehe_links; drehe_links; END; PROCEDURE kehrt_links; BEGIN drehe_links; IF platz_belegt THEN gib_ab; vor; drehe_links; END; PROCEDURE abgeben; BEGIN IF hat_vorrat THEN gib_ab; END; PROCEDURE straight; BEGIN IF platz_belegt THEN abgeben; IF vorne_frei THEN vor; IF NOT vorne_frei AND nordwaerts AND rechts_frei THEN kehrt_rechts; IF NOT vorne_frei AND suedwaerts AND links_frei THEN kehrt_links; END; BEGIN drehe_links; WHILE vorne_frei DO straight; IF platz_belegt THEN abgeben; WHILE NOT suedwaerts DO drehe_links; WHILE vorne_frei DO vor; WHILE NOT westwaerts DO drehe_links; WHILE vorne_frei DO vor; drehe_links; drehe_links; END.
NIKI fährt alle Felder ab, sucht in jedem Feld ob dort schon ein Gegenstand ist, wenn ja legt er dort einen hin, falls nicht, sucht er in dem nächsten Feld.
Zum Schluss geht NIKI zu seiner Ausgangsposition zurück!
Falls du bei dem Code irgendetwas nich verstehst, sags mir und ich erkläre es dir Schritt-für-Schritt! -
das is ja ma cool, danke schon mal ;)
wo is denn dort der befehl eingebaut, das er wieder zum startplatz zurück kommt? -
NIKI befindet sich an der Position 15/10! (Könnte aber auch an jeder anderen Position stehen, sogar bereits an der gewünschten Position!)
WHILE NOT suedwaerts DO drehe_links; WHILE vorne_frei DO vor; WHILE NOT westwaerts DO drehe_links; WHILE vorne_frei DO vor; drehe_links; drehe_links;
NIKI dreht sich so lange nach links bis er nach Süden schaut; geht so lange vorwärts bis er an der Wand steht; dreht sich so lange nach links bis er nach westen schaut; geht so lange vorwärts bis er an der Wand steht; dreht sich nach links; dreht sich nach links;
Die letzten Beiden Linksdrehungen sind dafür, dass er nicht nur auf der Ausgangsposition steht, sondern auch in die Ausgangsrichtung (Osten) blickt.
Du könntest die beiden 'drehe_links;' durch ein 'WHILE NOT ostwaerts DO drehe_links;' ersetzen!
Beitrag geaendert: 23.2.2007 22:22:16 von raredog -
ah, jetzt versteh ich das.danke für deine hilfe :)
-
@ milchreis:
du kannst logo...?
ich wollt mal mit meiner jetzigen klasse ein bisschen damit arbeiten, aber die haben das alles nicht verstanden ;)
ich habs im gymnasium gelernt, und hab mich damals schon gefragt:
kann man damit wirklich was zeichnen, das nicht ein stern, rechteck,... ist?
das ist doch eingentlich ein sehr primitives prog (ich hab winlogo genommen)...
oder programmiert man in winlogo gar nicht mit logo? (ganz ehrlich weiß ich das gar nicht).
aber ab und zu mal wieder was zu schreiben is schon witzig...
Beitrag geaendert: 15.3.2007 18:53:58 von bhdv -
Ach quatsch ich hab mir grad mal Niki angeguckt. Für einen Programmiereinstieg ist das doch schon richtig gut. Wenn ich das richtig verstanden hab gibt es wie ein Script. Wir haben damals mit Kara angefangen, da mussten wir dann einen Marienkäfer, durch Baumstämme und über Kleeblätter steuern. Hat aber iw auch auf ne primitive Weise Spass gemacht.
-
NIKI ist schon ok für den einstieg gibt einem aber keinen richtigen einblick in die thematik aufgrund der begrenzten funktionen . ich habe es selber im informatik
unterricht benutzen müssen -
das ist schon richtig, es gibt ledigtlich eine kleine einführung von der strucktur, wie ungefähr ein programm aufgebaut ist..sonst solls wohl auch nichts weiter machen ;)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage