Der Hintergrund
Nach unserem Startbild aus den letzten Beitrag, werden wir jetzt unseren Hintergrund für das Puzzle-Spiel anzeigen lassen.
Entwerfen wir zunächst unser Hintergrundbild fürs Puzzle. Dabei greife ich jetzt etwas auf die Sprites vor, wir müssen nämlich den benötigten Platz für unsere Puzzleteile beachten. Die Teile werden wir mit Multicolor-Sprites realisieren. Diese sind max. 12 Punkte breit, wobei jeder Punkt aber wieder den Platz von zwei Pixeln auf dem Bildschirm in Anspruch nimmt. Die max. Höhe von Sprites beträgt immer 21 Zeilen, mit Tricks ist hier übrigens auch mehr drin. Wir werden die Sprites auch noch in ihrer Breite und Höhe verdoppeln, somit ergibt sich eine max. Größe auf dem Bildschirm von 48 * 42 Pixel. Buchstaben und Grafikzeichen haben beim C64 eine Größe von 8 * 8 Pixeln, damit unsere Sprites perfekt in den vorgesehenen Bereich passen, sollten wir dafür sorgen, dass die Sprites später exakt 40 * 40 Pixel auf dem BS beanspruchen. Unsere „Lücke“ für die Puzzleteile, muss dann pro Teil fünf Zeichen (5 * 8 Punkte = 40 Punkte) in X- und Y-Richtung Platz lassen.
Um es uns bei der Positionierung der Sprites einfacher zu machen, achten wir noch darauf, dass die max. X-Position unserer Sprites später unter 256 liegt. Dann benötigen wir das 9. Bit nämlich nicht! Was damit genau gemeint ist, werdet ihr bei den Sprites sehen.
Ich habe das Spielfeld zweigeteilt, links wird gepuzzelt (die roten und grünen Drähte müssen verbunden werden) und rechts ist noch Platz für zusätzliche Infos (Punkte, Leben, restliche Zeit…).
Entwerft also euren Hintergrund und speichert ihn als „Background.charscreen“. Auch hier solltet ihr zumindest die Position der Puzzleteile und den rechten Rand nicht ändern, damit später alles problemlos passt, den Rest könnt ihr aber nach euren Wünschen anpassen.
Das Programm
Um den Hintergrund jetzt anzuzeigen, müssen wir unser Programm nur geringfügig verändern. Vom Hauptprogramm main, springen wir in unsere eigene Puzzle-Routine puzzleMain. Diese zeigt zunächst den Hintergrund an und arbeitet dann in einer Endlosschleife puzzleMainLoop alle Eingaben ab, bis entweder die Aufgabe gelöst oder die Zeit abgelaufen ist. Bisher gibt es noch nichts zu verarbeiten und kein Ende, daher haben wir hier einfach erstmal eine Endlosschleife die nichts weiter macht.
Die Änderungen sähen dann so aus:
main jsr showScreen_Title ;Startbildschirm anzeigen jsr puzzleMain ;das Puzzle starten rts ;Zurück zum BASIC ;******************************************************************************* ;*** Das Puzzlespiel starten ;******************************************************************************* !zone puzzleMain puzzleMain lda #COLOR_BLACK ;Schwarz in den Akku und sta VICBACKGROUNDCOLOR ;Hintergrundfarbe setzen lda #COLOR_BLACK sta VICBORDERCOLOR ;als Rahmen- und ;*** StartBS anzeigen ldx #<screenPuzzle ;LSB des Hintergrundbildes ins X-Register ldy #>screenPuzzle ;MSB des Hintergrundbildes ins Y-Register jsr drawScreen ;Bild anzeigen ;******************************************************************************* ;*** Eingabeschleife für das Puzzle ;******************************************************************************* puzzleMainLoop ;Start der Endlosschleife jmp puzzleMainLoop ;Endlosschleife
Außerdem müsst ihr am Ende des Programms, hinter screenTitel, noch die folgenden Zeilen einfügen:
;*** unser Hintergrundbild für das Puzzle screenPuzzle !media "Background.charscreen",charcolor
Jetzt sollte das Programm ausführbar sein und euch zunächst den Startbildschirm anzeigen, mit einem Druck auf den Feuerknopf seht ihr dann den Puzzlebildschirm.
Sorry, aber für die Vorbereitung der Sprites benötige ich doch etwas länger als geplant (der allgemeine Beitrag über Sprites ist zwar fast fertig, aber die Umsetzung für LOVE fehlt noch), daher muss ich euch aufs nächste Mal vertrösten.
Auch wenn sich nicht viel allzuviel getan hat:
Schritt 2 - Puzzle 002
*hust* 🙂
Oops, da war ja noch was.
Habe die Download-Links angepasst.
Schade, das die Downloads nicht gehen 🙁
Aber der Rest der Homepage ist mehr als gut 🙂
Gruss
Vielen Dank für den Hinweis.
Anscheinend funktionieren die Pseudo-Tags vom Download-Plug-In seit einem Update nicht mehr. Ich schaue mir das bei Gelegenheit mal an.