Die Programmiersprache C#
Ein Csharp-Crash-Kurs
Die Programmiersprache, die man in Programmierbaren Blöcken benutzt ist C#. Sie ist von Microsoft und ist eine objektorientierte Sprache.
Dazu gibt es viele Anleitungen und Tutotials im Netz, die wichtigsten Dinge, Funktionen und Mechanismen, vor allem im Bezug auf das Spiel Space Engineers, könnt Ihr hier nachlesen.
Variablen Definieren
Variablen werden folgendermaßen definiert:
<VARIABLEN_TYP>variablenName = <DEFAULT_WERT>;
Hier ein paar Beispiele:
// Definiert eine String-Variable String textVariable = ""; // Definiert eine TimerBlock-Variable IMyTimerBlock timerblock = null;
Schleifen
Die For-Schleife
Mit For-Schleifen kannst man eine Liste, ein Array oder sonstige mehrdimensionale Wertetypen durchlaufen:
for(int i =0; i < maxWert; i++) { // Schleife wird von 0 bis zum maxWert wiederholt, maxWert kann eine fest Zahl oder // eine vorher definierte Variable sein // Innerhalb der Schleife ist der Wert i bei jedem Durchgang um eins erhöht Echo(i); }
Beispiel
// Definiert eine Liste von TimerBlöcken List<IMyTimerBlock> alleTimerBloecke = new List<IMyTimerBlock>(); // Weist dieser Liste alle TimerBlöcke des aktuelle Grids zu GridTerminalSystem.GetBlocksOfType<IMyTimerBlock>(alleTimerBloecke); for(int i=0; i < alleTimerBloecke.Length; i++) { // Greift bei jedem Durchlauf auf den akutellen TimerBlock zu IMyTimerBlock timerBlock = alleTimerBloecke[i] as IMyTimerBlock; // Nun kann man mit dem Timer Block etwas tun, bspw. starten timerBlock.ApplyAction("Start"); }
Bedingungen
Wenn-Dann Kontrukte
// Wenn Bedingung A erfüllt ist if ( <BedingungA> ) { // ..dann führe diesen Programmabschnitt aus } // Wenn aber Bedingung B erfüllt ist elseif ( <BedingungB> ) { //...führe diesen Abschnitt aus } // In jedem anderen Fall else { //...führe diesen Abschnit aus }
Hierbei sind die Teile else if
und else
optional. Sprich es kann auch mit einem if
auch etwas zusätzliches ausgeführt werden. Der Teil else if
ist zudem beliebig oft wiederholbar, wobei zu beachten ist: Die erste erfüllte Bedingung wird ausgeführt, danach keine mehr.
Bedingungen müssen stets den Wert True (Wahr) oder False (Falsch) zurückgeben oder direkt eine Variable des Typs Boolean sein.
Bedingungen lassen sich in der Form schreiben:
WertA == WertB // WertA ist genau dasselbe wie WertB
WertA >= WertB // WertA ist größer oder gleich WertB, damit lassen sich bspw. Zahlenwerte vergleichen
WertA <= WertB // WertA ist kleiner gleich WertB
WertA <> WertB // WertA sit nicht gleich WertB
Beispiele:
4 == 5 (Ergibt false, da 4 nicht das gleiche wie 5 ist)
4 == 4 (Ergibt true da 4 nicht das gleiche wie 5 ist)
3 <=4 (Ergibt true da 3 kleiner oder gleich 4 ist)
4 <=4 (Ergibt true da 4 kleiner oder gleich 4 ist)
5 <=4 (Ergibt false da 5 nicht kleiner oder gleich 4 ist)
5 <> 4 (Ergibt true da 5 nicht dasselbe wie 4 ist)
Switches
Mit Switches kannst du bequem eine Variable etc auf verschiedene Werte prüfen und entsprechende methoden ausführen. Switches eignen sich bei Variablen die eine überschaubare Anzahl an festen Werte annehmen kann, wie beispielsweise ein Status ("Aktiv", "Inaktiv", "Warten", "In Bewegung").
string status = 1; // die zu unteruschende Variable steht hier in Klammern switch (status) { // Jeder Zustand wird mit case (zu deutsch: Fall) abgefragt case "Aktiv": // Hier kommt der Code rein, z.B. eine Methode die // für den Fall das Status = "Aktiv" ist ausgeführt wird TuWas(); // Am Ende eines jeden case-Blocks muss "break;" stehen break; // Für den Fall das status "Inaktiv" ist case "Inaktiv": WarteAufOrder(); break; // Falls status keinen der vorherigen Fälle angenommen // hat kann man eine zusätzlichen Standard-Fall mittels "default" definieren // Der wird ausgeführt wenn sonst nichts zutrifft: default: DrehDichImKreis(); break; }