Landung 006

Für diesen Beitrag wurde das CBM prg Studio verwendet.
weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

CBM prg StudioGanz schön anziehend

Da es langweilig und unnütz ist, das Landungsschiff einfach so über den Bildschirm zu bewegen, fügen wir jetzt etwas Physik (ich schäme mich das gleich kommende so zu bezeichnen) hinzu. Basis ist wieder das Programm aus dem vorherigen Beitrag.

 

Gravitation
Wie die Erde, besitzt auch PB5-78841 eine Anziehungskraft. Sorgen wir also dafür, dass diese auf unser Schiff einwirkt. Jetzt könnten wir dem Planeten eine Anziehungskraft zuweisen, dem Schiff eine Masse, Reibung, Gegenschub usw. festlegen und ein komplexes Rechenmodell entwickeln, dass all dies verarbeitet. Viel Spaß dabei… 😉

Wir halten es da dann doch etwas einfacher. Wird nichts unternommen, dann sinkt das Schiff mit zunehmender Zeit immer schneller. Drückt man den Feuerknopf, dann wird die untere Schubdüse aktiviert. Um so länger der Knopf gedrückt wird desto größer wird der Schub und sobald die abwärts Bewegung gestoppt ist, steigt das Schiff.

Wie setzen wir dass nun um?
Um auch sanfte Bewegungen zu erreichen, wäre es schön, wenn wir Sprites auch um 0,2 oder 0,6 Pixel bewegen könnten. Dass geht natürlich nicht, aber wir könnten die Sprite-Position und Geschwindigkeit mit Nachkommazahlen verwalten. Da richtige Fließkommazahlen für unser Vorhaben zu aufwendig sind, bauen wir uns unsere eigenen Kommazahlen. Laßt uns einfach zwei BYTEs verwenden, das LSB stellt den Nach- und das MSB den Vorkommateil dar. Dass unsere Zahlen in kein normales Zahlensystem passen, soll uns (im Gegensatz zu den nun mit den Augen rollenden Mathematikern) nicht weiter stören. Es geht schließlich nur darum, die gewünschte Bewegung zu erreichen.

2 * 3 macht 4
Widdewiddewitt und Drei macht Neune
Ich mach mir die Welt
Widdewidde wie sie mir gefällt…

 

Beginnen wir mit dem Hinzufügen von neuen Konstanten und Variablen. Um die Gravitation, X- und Y-Beschleunigung festzulegen, richten wir drei neue Konstanten ein:

Ersetzt jetzt noch die bisherige Variable  SpaceshipPos:  durch folgenden Block:

Hier haben wir jetzt also unsere ‚Kommazahlen‚. Die Berechnung von SpaceshipPos erfolgt nun mit Vor- und Nachkommaanteil. Neu hinzugekommen ist die SpaceshipSpeed, damit sorgen wir für die Beschleunigung in die verschiedenen Richtungen. Die Geschwindigkeit initialisieren wir mit 0, die Position wird wie bisher initialisiert, nur dass wir diesmal darauf achten, den Vorkommateil zu füllen und den Nachkommateil auf 0 zu setzen.

In der Funktion  updateSprites: setzen wir jetzt die Position der Sprites nicht mehr einfach, sondern wir berechnen Sie über die aktuellen Geschwindigkeiten aus  SpaceshipSpeed. Passt dazu die Funktion an die neuen Gegebenheiten an.

Wie ihr seht, addieren wir zu Beginn die X-Geschwindigkeit auf die X-Position, speichern die neue Position und setzen die Sprites auf den ‚Vorkommateil‚. Am Ende machen wir das Gleiche mit der Y-Position und -Geschwindigkeit.

 

Auch die Eingabe-Routine muss natürlich an die neue Logik angepasst werden.

Statt wie bisher direkt die X- / Y-Position zu verändern, bestimmen wir jetzt mit der Joystick-Eingabe die Geschwindigkeit in die jeweilige Richtung. Dazu addieren bzw. subtrahieren wir (fast identisch zur Position im vorangegangenen Block) unsere Konstanten für die X- / Y-Beschleunigung bzw. Gravitation zum ‚Nachkommateil‚ und beachten dann noch das C-Flag um auch den ‚Vorkommateil‚ bei einem Übertrag zu verändern.

 

Durch die neue Speicherung der Position und der Geschwindigkeit, sollten wir auch  init_lander: anpassen.

Hier jetzt auch die Vor- und Nachkommastellen für die Position und Geschwindigkeit korrekt initialisieren.

Bevor das Programm gestartet werden kann, bedarf es noch einer letzten kleinen Änderung. Sucht das Label doRasterIRQ_Laser:, kurz dahinter findet ihr die Stelle lda SpaceShipPos:+1, diese muss in lda SpaceShipPos_Y:+1 ;MSB der Y-Pos. des Raumschiffs in den Akku geändert werden.

Jetzt sollte sich das Programm starten lassen und ihr könnt das Landungsschiff mit dezenten Schüben kontrollieren.

Auf einen Screenshot verzichte ich, den Unterschied zum letzten Beitrag erkennt man nur, wenn man das Programm selbst ausführt also: Start im Java-Emulator.


Im kommenden Teil sollten wir uns mal um die Kollisionserkennung kümmern, damit es endlich eine Herausforderung für den Spieler gibt. Bis dahin spielt mit den Werten etwas herum und schaut wie sich das Programm verhält. 


Schrott!!Naja...Geht so...Ganz gut...SUPER! (3 Bewertungen | Ø 5,00 von 5 | 100,00%)

Loading...


 

<<< zurück | weiter >>>

 

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

Schreibe einen Kommentar


Beachtet bitte, dass ich eure Kommentare erst manuell freigegeben muß, bevor sie auf der Seite erscheinen! Da ich nicht pausenlos am Rechner sitze, kann es schon mal etwas dauern, bis ein Kommentar für alle sichtbar ist.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Protected by WP Anti Spam