PONG?

1 Antwort

`i` wird standardmäßig auf 0 gesetzt, es wird bei dir im Code aber nicht sichergestellt, dass dies der Ausgangswert für i ist.

Wenn `i` gleich 8 oder -1 ist, ändert sich der Status nur, wenn der entsprechende Knopf gedrückt wird (gewollt?).

In Fall 1 wird der Status nur geändert, wenn i gleich 8 ist, was wahrscheinlich nicht das gewünschte Verhalten ist. In Fall 2 wird der Status auf 2 geändert, ohne dass i geändert wird.

Ich bin grad zwar nur am Handy, versuchs aber mal so:

```cpp
int led[8] = { 2, 3, 4, 5, 6, 7, 8, 9 };

int button[2] = { 10, 11 };

#define PRESSED LOW

#define OFF 0

#define ON 1

#define WAIT_TIME 1000

int status = 0;

unsigned long starttime = 0;

int i = 0;

void setup() {

 for (int i = 0; i < 2; i++) {

   pinMode(button[i], INPUT_PULLUP);

 }

 for (int i = 0; i < 8; i++) {

   pinMode(led[i], OUTPUT);

 }

}

void loop() {

 if ((i == 8) && (digitalRead(button[1]) == PRESSED)) {

   status = 1;

 }

 else if((digitalRead(button[1]) == PRESSED) && i!=8) {

   status = 2;

 }

 if ((i == -1) && (digitalRead(button[0]) == PRESSED)) {

   status = 0;

 }

 else if((digitalRead(button[0]) == PRESSED) && i!=-1) {

   status = 2;

 }

 if (millis() - starttime > WAIT_TIME) {

   switch (status) {

     case 0:

       digitalWrite(led[i], HIGH);

       digitalWrite(led[i - 1], LOW);

       i++;

       if (i == 9) {

         status = 2;

       }

       break;

     case 1:

       digitalWrite(led[i], HIGH);

       digitalWrite(led[i + 1], LOW);

       i--;

       if (i == -2) {

         status = 2;

       }

       break;

     case 2:

       for(int j = 0; j < 8; j++) {

         digitalWrite(led[j], HIGH);

       }

       break;

   }

   starttime = millis();

 }

}
```

Magnus269 
Fragesteller
 19.04.2023, 18:17

naja das nach rechts gehts ja hald status null es geht button 1 funktioniert das es dann rüber geht aber wenns dann bei butzon 0 is hängts

0
Anonym13592  19.04.2023, 18:19
@Magnus269

Naja du aktualisiert die Leuchten dementsprechend nicht um das Spiel zurück zu setzen (status aber auf 0)

0
Magnus269 
Fragesteller
 19.04.2023, 18:21
@Anonym13592

es geht ja aus status 0 raus in status 1 wenn button 1 gedrückt ist

0
Magnus269 
Fragesteller
 19.04.2023, 18:21
@Anonym13592

das funktioniert ja noch aber dann bei button 0 gehts sofort aus status 2

0
Anonym13592  19.04.2023, 18:22
@Magnus269

Ja. Du aktualisierst die LED-Leuchten dementsprechend nicht, so wie es aussieht

0
Magnus269 
Fragesteller
 19.04.2023, 18:33
@Anonym13592

kann mans irgendwie ohne reset machen oder muss ichs so machen weil wills gerne so einfach wie möglich

0