Pacman - eventbasiert



  • Hallo, ich soll einen Pacman schreiben. Nun stellt mein Partner die Anforderung, dass dieser "eventbasiert" sein soll.

    Leider kann ich mir nicht vorstellen, wie das ganze aussehen soll. Er meinte nur "so wie bei kde" - konnte mir das aber nicht erklären.

    Nunja, einfach gefragt ...

    Wie sieht eine typische Spielschleife dann aus?

    while(game is running)
    {
        ???
    }
    

    Und welche Events wären nötig?

    Spielereingaben, Kollision (vlt verschiedene: Kollision mit Gegner/Wand), Level beendet, Diamant gegessen (oder gehört das zu Kollision mit Diamant?)

    Wenn ich es nicht kapiere, schreib ich das ganze einfach , wie es mir passt ^^



  • Wenn mir vorstelle ich müsste das machen, und ich bekomme keine genaueren Vorgaben als "Eventbasiert - so wie bei KDE" bekommen, dann würde ich mich was "Events" angeht auf den Keyboard-Input und ggf. noch einen Timer (zum Triggern eines Frame-Updates) beschränken. Und den Rest einfach ohne speziell "Eventbasiert" zu arbeiten in der Update-Funktion erledigen.



  • So hätte ich das im Moment denke ich ohnehin. Das nimmt mir das Framework schon Teilweise ab. Im Moment:

    while(running)
    {
        Input = getInput();
        if(Input.Mouse_LEFT_BUTTON)
        { 
            player.fire();
        }
    
        player.move()
        enemies.think(AI)
        enemies.move()
    
        checkCollisions()
        render()
    }
    

    Aber ich glaube er meint das, was du als "keine genaueren Vorgaben" bezeichnest.
    Also irgendwie für alles ein Event denke ich. Nur hab ich keine Ahnung wie das gehen soll. Brauche ich dann für jeden Gegner einen eigenen Thread, in dem er auf eingehende Events wartet?

    Keine Ahnung, ich fand bisher auch nichts mit gockel.

    Wenn ich heute nix dazu finde, lass ich es einfach wie es ist.
    Mein Partner ist ohnehin ein Freak ^^
    (Wenn wir ein neues Projekt schreiben sollen und keine Vorgaben bekommen, so
    denkt er sich erstmal eine neue Sprache aus, in der wir das realisieren könnten.

    So kam ich in den Genuss von Fortran (wo ich C++ verwendet hätte), Scala (Vorgabe war dass es in der JVM laufen muss, meine Wahl wäre Java, weil ich des halt scho kann), Shakespeare konnte ich ihm grad noch ausreden (für ein einfaches Konzepte der Programmierung- Aufgabenblatt) und jede Menge Python, Basic, ...

    Naja mein Beitrag war je nach selbstauferlegten Schwierigkeiten dann auch etwas geringer



  • Wie wärs wenn du den Herrn nochmal fragst, und, falls er nochmal mit unbrauchbarem Schmarren antwortet, ihm freundlich erklärst dass du damit nix anfangen kannst?



  • Du könntest "Events" über Callbacks realisieren. Dann hast du Callbacks für Kollisionen und alles mögliche...

    void CallbackCollision(Game& g, Object& a, Object& b)
    {
     // ...
    }
    
    void CallbackUpdate(Game& g)
    {
     // ...
    }
    

Anmelden zum Antworten