AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mini-Programmiersprache

Ein Thema von 3_of_8 · begonnen am 22. Mär 2005 · letzter Beitrag vom 27. Mär 2005
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#21

Re: Mini-Programmiersprache

  Alt 23. Mär 2005, 21:43
Das mit den *.dfm Dateien tut mir leid, Hilfe gibt es, hab ich aber vergessen (So bin ich nun mal).

Das mit den Änderungen ist mir bekannt, bin aber noch nicht dazu gekommen, es zu ändern.

Hier eine kleine Befehlsreferenz:

oben, unten, rechts, links: Erklärt sich von selbst.
drehelinks, dreherechts: Nicht schwer zu erkennen.
vorwärts: Ein Schritt in die momentane Richtung des Roboters.
rückwärts: Ein Schritt gegen die momentane RIchtung des Roboters.
bausteinlegen: Legt einen Baustein
bausteinaufheben: Hebt einen Baustein auf.
wenn <bedingung> dann: Bedingungsabfrage.
~wenn: Bedingung Ende
tue x mal: Ähnlich wie for I:=1 to x do
~tue: Ende der Tue-Schleife
solange <Bedingung>: Solange Bedingung wahr wiederhole.
bis <Bedingung>: Solange Bedingung nicht ist wahr wiederhole.
~Schleife: Ende der solange/bis-Schleife
istoben, istunten, istrechts, istlinks: Bedingungen, sind wahr wenn die Richtung stimmt.
ístwand: Wenn der Roboter vor dem Ende des Bereichs steht, gibt diese Bedingung wahr zurück.
istbaustein: Steht der Roboter vor einem Baustein, gibt diese BEdingung wahr zurück.
nicht: Kehrt das ergebnis der nachfolgenden BEdingung um.


Auto-Vervollständigung geht mit Strg+Leertaste.

Zu der Frage, wozu drehelinks/dreherechts gut ist:

Beispiel:
Man will testen, ob links vom Roboter ein Baustein ist.

Code dazu:
bis istlinks tue
drehelinks
~schleife

EDIT: Das mit dem /Tue und ~Tue muss ich auch noch ändern. Zuerst hieß es /Tue, aber weil das mit dem Syntaxhighlighting so nicht richtig hinhaut, hab ich es in ~Tue umbenannt. Ich sagte ja schon, dass es buggy und noch lange nicht fertig ist.
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#22

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 09:15
Hier ist das File inkl. HTML-Hilfe(Hier stehen die Blockende-Elemente immer noch mit dem Prefix "/" drin, das ist jetzt "~", also nicht "/wenn" sondern "~wenn"). Die Dfm-Dateien sind jetzt auch drin.

[edit=Sharky]Anhang auf Wunsch entfernt. Mfg, Sharky[/edit]
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#23

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 10:01
So, hab's mir jetzt mal angeguckt:

Bei diesem Code (Voraussetzung Roboter ganz oben links, Stein in 2. Reihe von oben)
Delphi-Quellcode:
unten
solange nicht istrechts tue
  dreherechts
~Schleife
solange nicht istbaustein tue
  vorwärts
~Schleife
Bausteinaufheben
solange nicht istwand tue
 rückwärts
~schleife
Hängt dein Programm ewig in der letzten Schleife.

Außerdem finde ich es extrem nervig, dass man a) Ziegel und b) den Roboter im Entwicklungsmodus nicht einfach setzen kann. Man muss sich immer erst ein Programm schreiben, das den Roboter in die gewünschte Position bewegt und dann an dieser position den Ziegel ablegt.

Außerdem würde ich mir noch weitere Abfragen wünschen, z.B., wo sich der Roboter gerade befindet. Also alle Kästchen als 2-Dimensionalen Array und prüfen, welche Koordinaten der Roboter gerade hat.

Ein zweiter Roboter wäre auch nicht schlecht. Man könnte sie dann ansteuern mit

Delphi-Quellcode:
Roboter1.unten
Roboter2.oben
Ansosnten nicht schlecht
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 10:11
Das das Prog in der letzten Schleife hängt, ist völlig klar. Du musst das so schreiben:

Code:
drehelinks //Das ist nur dafür da, damit gleich am Anfang gecheckt wird, ob der Robo schon mit dem
drehelinks //Rücken zur Wand steht

solange nicht istwand  //Steht der Robo an der Wand-Schleife
vorwärts
~schleife
drehelinks
drehelinks
mit istwand wird gecheckt, ob der Robo vor einer Wand steht, wenn du ihn rückwärts bewegst, kommt er nie vor eine Wand. Wenn du auf die "Welt" des Roboters klickst, kannst du ihn mit den Pfeiltasten steuern (in der Entwurfszeit) und ihn so an die Stelle bringen, an die du ihn haben willst. Mit den Icons in der Werkzeugleiste geht das auch. Mit Z legst du einen Baustein, mit A hebst du ihn auf. Mit L drehst du ihn links, mit R rechts.

Ach ja und das mit der Abfrage wird nicht hinhauen, da man um die Abfrage zu speichern Variablen bräuchte, die ziemlich schwer ins Programm einzubauen sind (Also zur Laufzeit benutzerdefinierte Variablen deklarieren? Ich hab k.a. wie das geht.)

Es gibt noch 3 Befehle, stehen nicht in der Hilfe und werden auch nicht gehighlightet.
§d
für d entweder 'o','u','l','r' einsetzen (ohne Hochkommas). Gibt dem Robo die Richtung d

$xy
setzt den robo an die Pos x,y (oben-links ist pos 0,0, unten rechts ist pos 9,9)

%xy
schiebt den robo um x nach rechts und um y nach unten (Funzt leider nicht mit negativen Zahlen)

ACHTUNG! Diese Befehle sind extrem fehlerfreudig! Sie funktionieren nur mit den korrekten Parametern, ansonsten kann es sein, dass der Roboter komplett verschwindet oder das Programm abschmiert. Zwischen den Parametern und dem Anfangszeichen auf keinen Fall Leerzeichen einfügen:

Beispiel:
§u Setzt den Robo nach unten
§1 oder §d oder § u Nichts passiert oder der Robo verschwindet vom Feld.
$11 Setzt den Robo auf pos 1,1
$ 11 oder $ag Nichts passiert.
%11 Schiebt den Robo um 1,1 nach unten-rechts
% 11 oder %ab Nichts passiert.
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#25

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 10:30
Hi,

gefällt mir sehr gut.

Was du noch machen könntest ist, dass man auch eine Zeile freilassen kann .

Mein erstes Script:

Code:
Tue 10 mal
Solange nicht istUnten
  drehelinks
~schleife
Solange nicht istWand
  Vorwärts
~schleife  
drehelinks
Solange nicht istWand
  Vorwärts
~schleife
drehelinks
Solange nicht istWand
  Vorwärts
~schleife
drehelinks
Solange nicht istWand
  Vorwärts
~schleife
drehelinks
~tue
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#26

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 10:32
Zitat von 3_of_8:
Das das Prog in der letzten Schleife hängt, ist völlig klar.

Okay, dir ist das alles klar. Aber du musst ja davon ausgehen, dass ein eventueller User die ganze Entwicklung nicht mitgemacht hat und somit nicht über alle Befehle Bescheid weiß.

Zitat von 3_of_8:
Du musst das so schreiben:

Code:
drehelinks //Das ist nur dafür da, damit gleich am Anfang gecheckt wird, ob der Robo schon mit dem
drehelinks //Rücken zur Wand steht

solange nicht istwand  //Steht der Robo an der Wand-Schleife
vorwärts
~schleife
drehelinks
drehelinks
mit istwand wird gecheckt, ob der Robo vor einer Wand steht, wenn du ihn rückwärts bewegst, kommt er nie vor eine Wand.
Das ist IMHO schlecht gelöst. Dann fehlt eindeutig eine Abfrag, ob eine Wand vor oder hinter dem Roboter ist.

Zitat von 3_of_8:
Wenn du auf die "Welt" des Roboters klickst, kannst du ihn mit den Pfeiltasten steuern (in der Entwurfszeit) und ihn so an die Stelle bringen, an die du ihn haben willst. Mit den Icons in der Werkzeugleiste geht das auch. Mit Z legst du einen Baustein, mit A hebst du ihn auf. Mit L drehst du ihn links, mit R rechts.
Ich wusste schon, dass man den Roboter zur Entwurfsezit steuern kann, aber ich fand gerade das nervig. Man kann den Roboter eben NUR steuern und nicht absolut setzen. WEnn ich den Roboter am Anfang meines Programms in der unteren linken Ecke haben möchte muss ich ihn erst dahin steuern, anstatt einfach auf das entsprechende Feld zu klicken, was ich viel komfortabler fände.
Genau das selbe mit den Ziegeln. Ich muss vor meinem eigentlichen Programm den Roboter erst über die ganze Fläche jagen und ZIegel austeilen, bevor ich Mit dem programm beginnen kann, das die Zeigel wieder einsammelt.


Gibt es in deiner "Programmiersprache" auch Variablen, anhand derer ich gleiche Bewegungsabläufe darstellen kann. Bsp:

statt:
Delphi-Quellcode:
unten
unten
unten
unten
unten
besser
Delphi-Quellcode:
solange i <> 5 tue
  unten
  inc(i)
~tue

Und zu aller letzt stellt sich mir die Frage, ob
Zitat von 3_of_8:
Mini-Programmiersprache im Stil von Roboter Karol, für komplette Programmieranfänger, zum Lernen von ersten Programmierideen
Ob es nicht dann doch besser wäre, wenn sich Programmieranfänger an eine Hochsprache begeben, als sich diesen Syntax anzueignen und dann für eine Hochsprache sowieso umlernen müssen.

Ist aber nur meine Meinung!
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#27

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 10:38
Die Idee gefällt mir gut aber besser wäre es gewesen das noch ein bischen zu erweitern, z.b. in den 3D Raum mit OpenGL, das würde die Sache komplizierter machen!
Felix K.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 13:13
Ich hab null Ahnung von 3D Programmierung und eigentlich ist es schon etwas 3D, denn es lassen sich 10 Bausteine übereinaner legen, und ich kann es auch so erweitern, dass der Roboter nur einen Baustein hinauffahren kann und auch nur einen herab.

Aber wenn mir jemand OpenGL erklärt erweitere ich es gerne! Wie gesagt, die Sourcefiles sind jetzt alle dabei und ich würde mich freuen, wenn jemand sie sich ansieht und mir ein paar Verbesserungsvorschläge gibt, denn wie gesagt, ich bin 14 und kenne niemanden, der Ahnung von Delphi hat. Mein ganzes Wissen stammt von Webseiten und der Delphi Hilfe.

@gordan_freeman:
Viele kennen sich überhaupt nicht mit Konzepten der Programmierung aus. Dafür ist solch eine Sprache vielleicht ganz gut, auch um Grundformen von Bedingungen und Schleifen kennenzulernen. Aber wenn das Programm deiner Meinung nach unnötig ist, so kann ich wenigstens bei der Programmierung lernen.

Variablen gibt es nicht, da ich keine Ahnung habe, wie man eine Benutzerdefinierte Variable auslesen kann´, und auch nicht, wie man auf Benutzereingabe checken kann, ob eine Variable gleich einer anderen ist.

Statt
Code:
unten
unten
unten
unten
unten
schreib einfach
Code:
tue 5 mal
unten
~tue
Hättest du die Hilfe gelesen, wüsstest du das auch.

Achja und @Spider:
Wegen der Leerzeile:
Eigentlich müsste das gehen, ich muss mir den Sourcecode nochmal ansehen, was denn da schon wieder faul ist.

Noch ein Code:
Code:
// Programm oben-links
// Der Roboter wird nach oben-links gesetzt (Position 0,0)
bis istlinks
  drehelinks
~schleife
bis istwand
  links
~bis
dreherechts
bis istwand
  oben
~schleife
dreherechts
dreherechts
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#29

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 13:19
Dafür machst das nicht schlecht, aber erstmal ein Tipp: Kommentieren, kommentieren, kommentieren!!! Auch für dich!!

Zweitens:
Für OpenGL gibt es genügend Tutorials auf: www.delphigl.com

Variablen könntest du mit Dynamischen Array Realisieren!

Delphi-Quellcode:
 RobVariablenInteger: array of Integer;
 RobVariablenIntegerName: array of String;
Die Variable könntest du z.b. durch '§' oder '%' erkennbar machen!

P.s.: Mach doch Goto wenigstens rein, wenn es schon keine Funktionen und Proceduren gibt, allerdings gibts auf der OpenGL Seite auch ein Tutorial über Skriptsprachen!
Felix K.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#30

Re: Mini-Programmiersprache

  Alt 24. Mär 2005, 13:27
Jetzt nurmal so vor mich hin getippt, ohne auf syntax zu achten:

Delphi-Quellcode:
if cmdunknown then
for I:=0 to length(vars) do
begin
if leftstr(cmd,length(vars[I]))=vars[I] then
varvalue[I]:=strtoint(midstr(length(vars[I])+1));
end;
So müsste dann eine Variablenwertzuweisung funktionieren.
Manuel Eberl
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz