Änderungen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche

SpaceInLasers 3.0

2.312 Byte hinzugefügt, 20:25, 25. Feb. 2017
** 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).
 
<pre>
// 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;
}
}
}
 
</pre>
1.993
Bearbeitungen