Sprite Animation in Basic

Es gibt 7 Antworten in diesem Thema, welches 2.198 mal aufgerufen wurde. Der letzte Beitrag (6. Oktober 2021 um 09:08) ist von kiri008.

  • Hallo,

    möchte in Basic eine Bewegung von 2 Männchen mit Sprites realisieren.
    Die Sprites habe ich erstellt und habe jetzt Probleme bei der Abfolge der Sprites.

    Aufgabe:

    - 2 Männchen laufen zur gleichen Zeit über den Bildschirm.
    - Ein Männchen läuft von Links nach Rechts und ein Männchen läuft von rechts

    - Jedes Männchen hat einen Karate Kick mit dem Bein.

    Frage:

    - Wie erstellt man einen Loop indem bei Sprites sich bewegen und dabei das Sprites wechseln.
    - Die Schleife sollte das Hauptprogramm nicht blockiert wird.

    Entschuldigt für den Quellcode. Bin noch Anfänger. =O

    Wer kann mir helfen? Freue mich auf eure Antworten.

  • - Wie erstellt man einen Loop indem bei Sprites sich bewegen und dabei das Sprites wechseln.
    - Die Schleife sollte das Hauptprogramm nicht blockiert wird.

    Die Loop zur Bewegung sieht schon fast richtig aus.

    Eine Schleife, die das Hauptprogramm nicht blockiert, gibt es in diesem Basic nicht. Es gibt nur genau einen Programmfluss, nur eine Reihenfolge, in der alle Befehle nacheinander ausgeführt werden.

    Aber Du kannst die Aufgabe in kleine Schritte zerlegen, eine große Schleife drumrum, und die einzelnen Schritte dann in richtiger Reihenfolge nacheinander in die Schleife reintun. "Kleiner Schritt" wären hier wirklich kleine Schritte: Schritt 1 Player1, Schritt1 Player2, Pause, Schritt2 Player1...
    Ungefähr so dürfte das aussehen

  • Vielen Dank!

    Soll ein Kung Fu Spiel werden. 1 Player gegen 7 Gegener. Also 8 Sprites.

    Die Bewegung und Steuerung sollte spielbar sein. Es soll in Basic geschrieben werden.

    PACMAN hat viele Gegner. Ist eine gute Vorlage. Hat noch jemand ein andere Idee?

    Als Gemeinschaftsprojekt wäre das Kung Fu Spiel (1/2Player+Gegener) doch eine gute Idee.

    Zu Weihnachten wird es dann veröffentlicht.

  • Du hast schneller Assembler gelernt als das spielbar in Basic gemacht :P

    Egon Olsen hat grad ein Bitte melde dich an, um diesen Link zu sehen., was Du in compiliertem Basic erwarten kannst. Mit 4 Sprites ist es OK, aber nix geiles.

  • - Wie erstellt man einen Loop indem bei Sprites sich bewegen und dabei das Sprites wechseln.
    - Die Schleife sollte das Hauptprogramm nicht blockiert wird.

    Die Loop zur Bewegung sieht schon fast richtig aus.

    Eine Schleife, die das Hauptprogramm nicht blockiert, gibt es in diesem Basic nicht. Es gibt nur genau einen Programmfluss, nur eine Reihenfolge, in der alle Befehle nacheinander ausgeführt werden.

    Aber Du kannst die Aufgabe in kleine Schritte zerlegen, eine große Schleife drumrum, und die einzelnen Schritte dann in richtiger Reihenfolge nacheinander in die Schleife reintun. "Kleiner Schritt" wären hier wirklich kleine Schritte: Schritt 1 Player1, Schritt1 Player2, Pause, Schritt2 Player1...
    Ungefähr so dürfte das aussehen

    Ich würde eine einzige Schleife machen, die in 3 (Animationsphasen) läuft und abhängig von der Bewegung.

    Man könnte Player und Gegner auch asynchron laufen lassen, wenn man den Zugriff auf PS() und CS() im 2. Parameter über ein Zwischen-Array macht, das die Phasenverschiebung berücksichtigt. Dann ist P der fixe Zyklus der von 0 bis 2 immer wieder durchläuft und das Zwischen-Array liefert dann die tatsächliche Phase (der Bewegung).

    z.B. PV(Offset, Zyklus):

    0,0 = 0

    0,1 = 1

    0,2 = 2

    1,0 = 1

    1,1 = 2

    1,2 = 0

    2,0 = 2

    2,1 = 0

    2,2 = 1

    Die Joystick-Routinen liefern dann auch noch den Offset, z.B. PO und CO. Befinden wir uns in Zyklus P=1 und wird eine Kickbewegung erkannt, setzen wir den Offset auf 2, weil hier die mit Phase 0 begonnen wird, also auch das Sprite am Anfang der Bewegung ist. Das Sprite wird dann wie folgt gewählt (für den Player):

    POKE 2040,PS(BP, PV(PO, P))

    Dazu gehören noch alle möglichen Optimierungen hinsichtlich frühes und geordnetes Anlegen von Variablen, Vermeidung von Rückwärts-GOTOs, Konstanten in einfache Variablen ablegen und und und ...

    Wenn dann auch noch 1 bis 7 Gegner durchzuwälzen sind, muss man noch mal für die mit Arrays arbeiten. Einfach Variablen und entsprechend aufgerollter Code könnten da bald an Limits geraden und unübersichtlich werden ...