Hallo Besucher, der Thread wurde 5,8k mal aufgerufen und enthält 25 Antworten

letzter Beitrag von RKSoft am

Balloon Breaker

  • Habe gestern ein wenig weitergemacht und neue Dinge eingebaut sowie den Hauptspielcode auf sage und schreibe 13 Zeilen reduzieren können:

    • neue Tiles: 4 verschiedene Böden (Holzblock und 3 verschiedene Steinblöcke)
    • neue Tiles: scharfkantige Stifte; nicht berühren, da man sonst ein Leben verliert
    • Zeichensatz erneut überarbeitet und Überlappungen entfernt
    • intern gibt es einen Zeitzähler, der aber keinen direkten Einfluss auf den Spielablauf hat. Wofür dieser dient, folgt noch!
    • Animationen beim Sterben und beim Gewinn
    • die HUD (Punkte, Leben, Raum und Hiscore) werden nun kontinuierlich angezeigt
    • Bildscrolling beim Szenenwechsel




    Das sieht alles sehr gut aus. Verrätst Du mir, mit welchem Programm Du die Tiles erstellst ?


    Und wie werden die Kollisionen mit Gegnern oder bösen Gegenständen ausgewertet ? - Beim C16 wird doch alles aus Char gebaut ?

  • @cbmhardware,


    du kannst via Peek den Videospeicher auslesen und auf Kollision mit Zeichen prüfen.
    Oder den Befehl Char,x,y,"Zeichen ", die x,y Koordinaten auf Kollision prüfen.


    Es gibt noch eine andere Möglichkeiten außer Char und zwar im Grafikmodus, da wäre der Shape ( Softwaresprites) Grotten langsam aber für gewisse Sachen ganz nett oder man baut sich aus den Grafikbefehlen eigene Figuren die man via x,y auf Kollision prüft.


    Alles im Basic versteht sich.


    Hier ein Beispiel für ein Spiel im Grafikmodus: Spiel in 10 Zeilen (Basic)

  • du kannst via Peek den Videospeicher auslesen und auf Kollision mit Zeichen prüfen.


    Ich hatte kürzlich Kikstart von Shaun Southern angeschaut, das für 1986 erstaunlich sauber und speichersparend programmiert ist. Der ist ja auch für einige beliebte Amiga-Klassiker bekannt.
    Wenn ich das beim Überfliegen richtig verstanden habe, wird das da so ausgewertet. Der ungefährliche Hintergrund hat ein Füllbyte, alles andere ist Bonus oder jähes Ende.




    Alles im Basic versteht sich.


    Hier ein Beispiel für ein Spiel im Grafikmodus: Spiel in 10 Zeilen (Basic)


    Für 10 Zeien Basic schon eine Menge. Da braucht man ja nur die Zeile des Blocks abfragen, um herauszufinden, wann das Spiel beendet werden muss.


    Ich programmiere lieber in Assembler. Habe auch keine konkrete Spielidee, möchte es aber zumindest mal dokumentieren.

  • @cbmhardware
    Ich benutze den Charset-Editor vom CBMPRGStudio. Man kann dort die Charsets prima erstellen und auch direkt angeordnert ansehen.


    Kollisionen abfragen kann man auf mehreren Wegen machen:

    • Ich spiel Frutty Man oder Balloon Breaker wird nicht der Bildschirmspeicher abgefragt, sondern eine Art virtueller Bildspeicher anhand von Arrays genutzt. Wenn dein Spielfeld z.B. 38x20 (Cursor)Blöcke groß ist, wird ein Array in derselben Größe erstellt (dim array(38,20)) und dort die Tiles als Nummer abgelegt. Z.B. Tile Nr.1-5 sind Balloons, 6-10 sind feste Hinternisse, 11-13 sind Hindernisse, die man nicht berühren darf).
    • man nutzt den Bildschirmspeicher via PEEK, um das Zeichen an Position X und Y zu erhalten
    • beim C64er gibt es ja noch bei den Sprites je ein Register, um Kollisionen zwischen Sprites-Sprites und für Sprites-Bildschirm abzufragen


    Aufgrund der Anfrage von @cbmhardware nutz ich diesen Beitrag gleich noch als kurzen Statusbeitrag:
    Die Arbeiten am Spiel gehen vorran, leider etwas langsamer, da andere Projekte eine etwas höhere Priorität geniessen. Den Leveleditor hab ich zwar in Commodore-BASIC angefangen, werde ihn aber dort nicht mehr weiterentwickeln. Ich benutz stattdessen Blitz Basic auf dem PC, da ich ihn dort schneller fertig haben kann/werde und ihn sowieso für andere Projekte gebrauchen kann.


    Leider hat sich bisher auch noch niemand für die Musik gemeldet. :(