Puzzle 010

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 StudioSo weit, so gut???

Laßt uns nun das Puzzle vorläufig abschließen. Wir haben im letzten Beitrag ja schon alles vorbereitet, so dass wir jetzt nur noch die Bildschirme fürs Weiterkommen oder Game Over anzeigen müssen.

 

Kümmern wir uns zunächst ums Game Over.
Wir wollen im Falle eines scheiterns einen abschließenden BS anzeigen. Dazu entwerfen  wir im Screen Designer unseren Game Over Bildschirm („gameover.sdd„).

Beispiel fürs Game Over.
Beispiel fürs Game Over.

 

Jetzt noch die Funktion gameover: anpassen:

Wir schalten zu Beginn alle Sprites ab, die benötigen wir hier ja nicht mehr. Dann rufen wir unsere bekannte Routine  drawscreen: zum Anzeigen der Game Over Meldung auf. Abschließend warten wir darauf, dass der Feuerknopf gedrückt und wieder losgelassen wird, bevor wir zum Titelbild zurückspringen.

 

Jetzt noch etwas Ähnliches fürs Lösen des Puzzles.
Auch hier zeigen wir einen Bildschirm („solved.sdd„) an, der den Spieler darüber informiert, dass er es geschafft hat und was als nächstes geschieht.

Glückwunsch zum Lösen des Puzzles
Glückwunsch zum Lösen des Puzzles

Auch hier die dazugehörige Funktion puzzlesolved: anpassen:

Alles wie bei gameover:, nur das hier ein anderer Bildschirm angezeigt wird. Da noch kein weiterer Level vorhanden ist, springen wir auch hier erstmal zurück zum Startbild.

Damit unsere beiden Bildschirme gefunden werden, müssen wir die natürlich noch einbinden, wie wäre es hinter screenpuzzle::

 

Wenn ihr das Programm nun startet, sollten die entsprechenden Bildschirme angezeigt werden. Allerdings klappt der Neustart noch nicht so ganz.
Da durchs Spielen einige Werte geändert wurden, müssen wir diese für einen erneuten Versuch natürlich wieder auf die korrekten Startwerte zurückstellen.

Fügen wir hinter  puzzlemain: diese neue Routine ein:

Das Meiste stammt aus puzzlemain: und wird dort von uns gleich entfernt. Wir setzen die Rahmen- und Hintergrundfarbe auf schwarz und zeigen den Puzzle-Bildschirm an. Dann sorgen wir dafür, dass wir ein gelöstes Puzzle haben, bevor wir die Sprites laden und das Puzzle mischen. Dann wieder unseren Zähler für den  timer: auf 20 zurückstellen und die Uhrzeit im CIA1 auf Null setzen.

Wie erwähnt können wir jetzt puzzlemain: bereinigen. Zwischen den beiden Sprungmarken benötigen wir nur noch den Aufruf unserer neuen Funktion (siehe Markierte Zeile).

 

Mäuschen mach mal Piep  😉
Eigentlich sind wir nun am Ende, aber ich möchte doch noch eine Kleinigkeit hinzufügen. So ganz ohne akustische Rückmeldung will ich das Puzzle jetzt nicht abschließen. Also lasst uns einen kleinen Ton wiedergeben, wenn ein Puzzleteil bewegt wird. Das ist jetzt wirklich nichts umwerfendes, daher verzichte ich hier auch auf einen eigenen Beitrag zum Thema Sound (der kommt später).

Wie so häufig benutze ich wieder einige Konstanten, fügt diese daher in den Source ein.

Dies sind erstmal nur die gleich von uns benötigten Konstanten, später lernen wir alle SID-Adressen kennen.

Jetzt brauchen wir noch eine kleine Routine, die unseren Sound wiedergibt. Fügt hinter puzzlemain: die nächsten Zeilen ein:

Da unser Sound nur sehr kurz wiedergegeben wird, haben einige Register keine bzw. kaum eine Auswirkung. Wir initialisieren diese aber trotzdem.
Zu Beginn setzen wir Anschlag und Abklingen auf 0, dann die Wellenform für die erste Stimme auf Rauschen und schließlich die Frequenz. Wir beschränken uns bei der Frequenz auf das MSB und wählen eine relativ niedrige aus. Ganz am Schluß setzen wir die Lautstärke auf den Wert, den wir im X-Register an die Routine übergeben haben und schon sind wir fertig.

Natürlich muss unser Sound auch noch aufgerufen werden. Sucht nach performinput_refresh: und ändert die folgenden Zeilen bis zum performinput_exit:  wie im folgenden Code-Block:

Wir starten vor dem erneuten Zeichnen unseren Ton mit der maximalen Lautstärke. Dann wird alles neu gemalt, danach setzen wir die Lautstärke einfach auf 0. Damit wird unser Ton also während des Bewegen der Puzzleteile wiedergegeben. Da das Mischen auch diese Funktion verwendet, erhalten wir auch zum Start einen Sound.

Wir gehen hier natürlich mit der Brechstange vor. Einfach die komplette Lautstärke auf 0 zusetzen ist natürlich nicht die feine Art. Da wir nur diesen einen Ton verwenden, hat das zur Zeit aber keine negativen Auswirkungen.


Damit wären wir am Ende des Puzzlespiels.
Das Programm hätte man (evtl. sogar einfacher und schneller) auch unter BASIC entwickeln können. Hier ging es aber in erster Linie darum ein erstes, kleines, lauffähiges Programm in Assembler zu erstellen.
Natürlich läßt sich hier noch vieles verbessern z. B. wären ‚richtige‚ Sounds und eine Hintergrundmusik sehr schön. Auch hübschere Grafiken würden das Programm aufwerten. Man kann auch überlegen statt mit Sprites das Puzzle nur mit dem Zeichensatz zu erzeugen. Unsere bereits erwähnte Speicherplatzvergeudung (seht euch nur die vier Bildschirme an) sollten wir durchaus noch mal überdenken.

Aber das soll uns erstmal nicht interessieren, die Planung ist ja so angelegt, dass wir nach und nach die benötigten Fertigkeiten erlernen.

 

Daher geht es, wie geplant, mit ‚Level 2 – Die Landung‚ weiter…


 

Start im Java Emulator

 


Schrott!!Naja...Geht so...Ganz gut...SUPER! (4 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