Kleines problem eines nicht c++ bewanderten.



  • Ein Erfolg wird wenn vorraussätzung X erfüllt ist gewertet.
    Vorraussätzung X beinhaltet das:
    innerhalb von 10 min ab dem ersten auftreten von Y, Y mindestens 7 mal auftritt.
    ist das nicht der fall wird nach ablauf der 10 min der timer wieder mit dem auftreten von Y gestartet.

    hierbei gehts um ein Spiel wofür ich diesen part brauche.
    andere probleme konnte ich über sql ausmerzen aber der auslößer muss hier im core verankert werden der in c++ geschrieben ist :S

    Jede hilfe ist gerne willkomen
    Grüße&Danke das Sofa



  • Sofacamper schrieb:

    Ein Erfolg wird wenn vorraussätzung X erfüllt ist gewertet.
    Vorraussätzung X beinhaltet das:
    innerhalb von 10 min ab dem ersten auftreten von Y, Y mindestens 7 mal auftritt.
    ist das nicht der fall wird nach ablauf der 10 min der timer wieder mit dem auftreten von Y gestartet.

    hierbei gehts um ein Spiel wofür ich diesen part brauche.
    andere probleme konnte ich über sql ausmerzen aber der auslößer muss hier im core verankert werden der in c++ geschrieben ist :S

    Jede hilfe ist gerne willkomen
    Grüße&Danke das Sofa

    Soll ich nach WinAPI oder C++/CLI verschieben oder noch woandershin?



  • mir gehts bloß um ein beispiel wie die funktion in c++ funktionieren würde



  • Anfrage ist mir viel zu unklar.



  • Versuch der Entzifferung der Anfrage

    time_t startTime=time(0)-1000;
    void empfang(){
       if(time(0)-startTime>10*60){
          startTime=time(0);
          anzahl=1;
       }
       else{
          ++anzahl;
          if(anzahl==7){
             tuwas();
             //startTime=time(0)-1000; runde beenden
             //oder
             //startTime=time(0);anzahl=0; runde starten
          }
       }
    }
    


  • ok nachdem ich mir grade nochmal durchgelesen habe und ich jetzt das problem erkenne kommt hier ein ausfürliches beispiel.

    Der spieler will einen Erfolg eringen, damit der erfolg gewährt wird, muss der spieler innerhalb einer gewissen zeit eine anzahl an getränken zu sich nehmen.

    Das heißt, der Erfolg [Raus damit] wird gewährt wenn der Spieler innerhalb von 10 minuten ab trinken des ersten [Kürbissaft], mindesten 7 diese Getränks getrunken hat.

    Ich hoffe ich formuliere das jetzt richtig was ich brauch:
    von außen bekommt die funktion das signal %Kürbissaft_getrunken
    dann soll die funktion einen timestamp(hoffe man nennt das auch in c++ so) in eine Liste(keine ahnung wie man das in c++ nennt)#Einnahmezeiten schreiben.
    Für jedes mal wenn der spieler den saft trinkt bekommt die funktion von außen das signal %Kürbissaft_getrunken.
    dann sollen die einträge der(liste)#Einnahmezeiten überprüft werden ob die letzten 7 einnahmen innerhalb von 10 minuten waren.

    hoffe mein problem ist jetzt verständlicher
    das sofa



  • Hab mal was probiert.

    #include <iostream>
    
    using namespace std;
    
    int main() {
        time_t trinkzeitpunkte[6]={};
        int pos=0;
        for(;;){
            cin.get();//Immer nur Enter drücken, um einen Saft zu trinken
            time_t jetzt=time(0);
            cout<<"Zeit: "<<jetzt<<'\n';
            cout<<"Trinke Kürbissaft!\n";
            if(jetzt-trinkzeitpunkte[pos]<60){//Zum Testen nur eine Minute
                cout<<"geschafft, ich bin bekürbist.\n";
            }
            trinkzeitpunkte[pos]=jetzt;
            pos=(pos+1)%6;
        }
    }
    


  • Sofacamper schrieb:

    dann sollen die einträge der(liste)#Einnahmezeiten überprüft werden ob die letzten 7 einnahmen innerhalb von 10 minuten waren.

    Oder sogar nur die letzten 7 Drinks speichern und dann nur mit dem ersten Drink vergleichen, statt mit allen.
    Oder sogar nur die letzten 6 Drinks speichern und wenn ich jetzt einen trinke, mit dem ersten Drink vergleichen, dann den ersten rauswerfen und den aktuellen Drink hintendranpacken. Und das noch als Ringpuffer hatte ich versucht.

    Sofacamper schrieb:

    hoffe mein problem ist jetzt verständlicher

    Ja, mit Kürbissaft war das viel besser als mit Ereignis X. 🙂


Anmelden zum Antworten