Algorithms

Aus hyperdramatik
Zur Navigation springen Zur Suche springen

Alle Snippets sind zunächst Pseudocode und je nach verwendeter Programmiersprache anzupassen.

Generell

Finde die Stelle mit der höchsten Zahl in einem Array von Zahlen

int höchsteZahl = -1000000;
int stelle = -1;

for (int i=0;i<arrayName.länge;i++){

 if (arrayName[i]>höchsteZahl){
   stelle=i;
   höchsteZahl=arrayName[i];
 }

}

Arduino

Führe eine Funktion einmalig aus, wenn ein Button gedrückt ist, und einmalig etwas anderes, wenn er losgelassen wird

int buttonDown =0;
int inputPin = 5; //hier muss der Pin eingetragen sein, an dem der Button hängt

[...]

void loop(){
  
  if (digitalRead(inputPin)==LOW){
    buttonDown++;
  }
  
  if (buttonDown==1){
     DoSomethingOnceWhenPressed();
  }

  if (digitalRead(inputPin)==HIGH && buttonDown>0){
    DoSomethingOnceWhenReleased();
    buttonDown=0;
  }
  
}

Mache etwas alle x-Durchläufe

int loopCounter=0;
int alleXLoops = 15; //Führt eine Funktion alle 15 loops aus
[...]

void loop(){
  
  loopCounter++;
  
  if (loopCounter%alleXLoops==0){
    DoSomethingEveryXLoops(); 
  }

}

Unity

Führe eine Funktion einmalig aus, wenn ein bestimmter Zustand erreicht ist

public bool bZustand=false;

void Update(){

  if (/*ZustandsAbfrage*/){
    bZustand=true;
  }  

  if (bZustand){
    DoSomethingOnce();
    bZustand=false;
  }

}

Verändere die Position eines Objektes kontinuierlich entlang einer Achse

public GameObject meinObjekt //hier muss im Editor das Objekt das bewegt werden soll abgelegt werden

void Update(){
  meinObjekt.transform.position += new Vector3(xWert,yWert,zWert); 
}

Von einer Farbe über Zeit zu einer anderen wechseln, per IEnumerator

IEnumerator ChangeColor(){

  Color colornew = new Color();
  float t = 0;
  float amountOfSeconds = 4.0f;
  while (t < 1.0f)
  {
     colornew = Color.Lerp(colorBegin, Color.magenta, t);
     GetComponent<Renderer>().material.color = colornew;
     
     t += Time.deltaTime/amountOfSeconds;
     yield return new WaitForEndOfFrame();
  }

}