SpaceInLasers 3.0

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche

Grundlegende Idee

Unten eine Kulisse aus Häusern, Kühen etc. Oben Alien-UFO Spider mit Scheinwerfer nach unten. Die Treffer-Logik soll beibehalten werden wie bei der vorherigen Version. Die Bodenkulisse soll der Hauptfokus sein und modular aufgebaut werden.

Spielprinzip

Single Player bzw. kooperative Single Player (wenn mehrere Leutes das Ufo und deren Waffen steuern).

Angelehnt an Flipper bzw. Moorhuhn: Möglichst viele Punkte durch Zerstörungen von Zielen am Boden sammeln. Das Ufo hat Energie, die langsam runtergeht. Wird das Ufo von Bodenwaffen getroffen, geht gleich eine ganze Menge Energie verloren. Beamt das Ufo spezielle Dinge wie Atomkraftwerk oder den Würgerking-Burger, kann es Energie hinzugewinnen. Ist die Energie zu Ende endet das Spiel.

Wo

Auf der Make_Rhein-Main_2017 - diese Seite zeigt auch den Raum, wo wir das Ganze aufbauen wollen.

Wer macht was?

  • Spider UFO: Jochen, Axl
  • Steuerpult UFO: Christine
  • UFO-Lampe: Shintaro
  • UFO Modell: ?
  • Tentakel: ?
  • Bus mit Neopixelansteuerung / Treffersensoren (Wiederverwertung von Space'n'Lasers 2.0 Kram): Lutz
  • Bodenkulisse:
    • Kühe: Lutz
    • Kühe wollen ein schönes Atomkraftwerk: Lutz
    • Abwehrtürme: ? (Lampen von Lutz) Alex und Volker
    • Weißes Haus: ?
    • Gräber (Ufo erzeugt Zombies): ?
    • Skyline: ?
    • Vergnügungspark: ?
    • Würgerking oder Mäc-Doof (Ufo klaut Burger, zerstört das M ...): ?
    • Massenziele wie Autos, Tiere, Leute, Häuser, Statuen etc. am Boden: ?
      • Hat jemand Playmobil-Zeug, was hier her passen würde und was er leihweise zur Verfügung stellen könnte?
    • Schokoladen/Bonbon-Fabrik (wenn von Ufo getroffen kriegt der Spieler Schoki/Bonbons):
    • ...weitere Ideen?

Energy Level Parser

Mit diesem Beispiel-Code kann der Parser fürs Energie-Update implementiert werden. Er empfängt per serieller Schnittstelle auf 2400 Baud einen Energie-Update Befehl. Dieser Befehl muss mit einem kleinen "e" beginnen, danach kommt der neue Energie-Wert als Dezimalzahl gefolgt von einem Return-Zeichen. Der Parser unterstützt viele Arten von Return-Zeichen sowie Backspace - sollte also stressfrei klappen.

Ein Energiewert von 0 bedeutet das Objekt ist zerstört (Beispiel: Kuh kippt um), ein Energiewert von 100 bedeut das Objekt ist voll Einsatzbereit bzw. in den Ursprungszustand zu versetzen (Beispiel: Kuh klappt wieder hoch). Energiewerte dazwischen können nach eigenen Ideen behandelt werden (oder auch einfach gar nicht, Beispiel: bei der Kuh blitzt das Sklett auf).

// Space'n'Lasers 3.0 example code to receive energy levels.
// send "e100" + Return to via serial terminal (2400 Baud) to update energy level.

int Energy = 100;
int OldEnergy = 0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(2400);
}

void loop() {
  // should be called regulary
  receive_serial_cmd();

  // test if energy has changed
  if(Energy != OldEnergy) {
    OldEnergy = Energy;
    // Energy level has been changed - react here
    Serial.println("Energy changed!");
  }

  // Do other stuff like animation updates here
}

void receive_serial_cmd(void) {
  static uint8_t cmd[18];
  static uint8_t cmdcount = 0;
  uint8_t c;
  while(Serial.available()) {
    c = Serial.read();
    if(c > ' ') cmd[cmdcount++] = c;
    if((c == 8) && (cmdcount > 0)) cmdcount--;
    if((c == 0x0d) || (c == 0x0a) || (cmdcount > 16)) {
      cmd[cmdcount] = 0;
      if(cmdcount > 0) {
       switch(cmd[0]) {
        case 'e': 
          if((cmdcount > 1) && (cmdcount < 7)) {
            int temp = atoi((const char *)&cmd[1]);           
            Energy = constrain(temp, 0, 100);
            Serial.print("Value received:");
            Serial.print(temp); 
            Serial.print(", Energy set to:");
            Serial.println(Energy);                       
          }                    
          break; 
          
        // other commands can be decoded here the same way                    
       }    
      }
      cmdcount = 0;
    } 
  }
}