Frage von flottikarotti19, 24

Wie kann ich in C programmieren, dass in eine bestimmte Richtung die mit dem Zufall bestimmt wurde für 3 sekunden gegangen wird (mikrocontroller, der gegner)?

Hallo, hier ist noch mein bisheriger Syntax, es wird mit modulo die richtung bestimmt. In diese Richtung soll aber der Gegner jetzt nicht nur einmal gehen sondern 3 sekunden und erst dann soll eine neue Richtung mit dem Zufall bestimmt werden, wie mache ich das?

LG

GLCD_PrintPicture(positionFeind[1], positionFeind[0], 8, 8, feind);

srand(ui32MilliSecond);

    richtungFeind = rand() % 4;

    if (richtungFeind == 0)
    {
    eingeschraenktObenFeind();
    letztePositionFeind[1] = positionFeind[1];
    positionFeind[1] = positionFeind[1] - 1;
    }
    
    else if (richtungFeind == 1)
    {
    eingeschraenktRechtsFeind();
    letztePositionFeind[0] = positionFeind[0];
    positionFeind[0] = positionFeind[0] + 1;
    }
    
    else    if (richtungFeind == 2)
    {
    eingeschraenktUntenFeind();
    letztePositionFeind[1] = positionFeind[1];
    positionFeind[1] = positionFeind[1] + 1;
    }
    
    else if (richtungFeind == 3)
    {
    eingeschraenktLinksFeind();
    letztePositionFeind[0] = positionFeind[0];
    positionFeind[0] = positionFeind[0] - 1;
    }

    else 
    {
    }
Antwort
von JupStrunk, 6

zuerst einmal...
richtungFeind ist global ???
System ist Windows ???
ich gehe mal von beidem aus !!! ;)

jetzt braucht Du noch eine weitere Variable, in der Du die Zeit speicherst...
ich würde das in diesem Fall wohl in etwa so schreiben:

static long tmNextDirection = 0;
if(GetTickCount() >= tmNextDirection){
   richtungFeind = rand() % 4;
   tmNextDirection = GetTickCount() + 3000;
}

wenn nicht unter Windows, dann muss GetTickCount() entsprechend geändert werden !!! ;)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten