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");
}

Ein weiterer fundamentaler Bestandteil einer Programmiersprache sind die Bedingungen. Bedingungen können auf vielfältige Art und Weiße benutzt werden. Grundlegender Aufbau eine Bedingung:
// 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;
}