Hello, Guest the thread was called1.2k times and contains 41 replays

last post from wizball6502 at the

Neues Blackjack für den Commodore 64 in BASIC V2

  • Liebe Forums-Freunde


    Nach der, vor ca. 2 Monaten stattgefundenen, 10Liner-"Fingerübung" (Z10: Blackjack), hatte ich Lust bekommen, aus meinem zwar ordentlichen, aber wenig umfangreichen 17+4-Verschnitt eine richtige Blackjack-Variante zu machen. Dies umso mehr, als dass ich bei vielen der 75(!) Blackjack-Varianten, welche in der Gamebase64 gelistet sind, den Präsentations-Feinschliff etwas vermisse.


    Hier ist das momentane Ergebnis (siehe Video). Was noch fehlt ist der etwas komplexere "Split"-Modus (wenn die ersten zwei Karten denselben Wert haben). Ich weiss aber nicht, ob ich das noch einbaue - das Spiel macht auch ohne schon recht Laune. :D



    Noch ein paar Details zum BASIC-Programm:

    • Ich habe hier erstmals mit dem Extended Color Mode experimentiert. Mit dem ECM kann ich bei den Spielkarten sowohl roten als auch schwarzen Text bzw. Symbole auf weissem Hintergrund und gleichzeitig verschiedenfarbigen Text auf grünem Hintergrund darstellen. Nachteil: Man hat dann nur noch die ersten 64 Zeichen des PETSCII zur Verfügung. Aber ich finde, mit den damit möglichen Farbkombinationen gibt es dem Gesamtbild eine besondere Note, die man so eher selten sieht.
    • Das Blackjack-Logo (Ass und Bube) im Startbildschirm besteht aus 4 Sprites.
    • Ich verwende ein eigenes Charakter-Set (Kopie vom Char-ROM), damit zusätzliche Sonderzeichen erstellt werden können, wie Z.B. die runden Ecken und Seiten der Spielkarten, dass $-Symbol und natürlich die Kartensymbole (Herz, Karo, Kreuz und Pik), die bei den ersten 64 Zeichen ja nicht mehr dabei sind.
    • Die Chips sind nichts weiter als die 4 runden Ecken mit etwas Farbe kombiniert.
    • Das Design, so wie es jetzt vorliegt, sieht recht simpel aus. Ich habe aber echt lange rumprobiert, über Kartengrösse, Position der Statusangaben, Wording, Farben, etc. Bin nun recht glücklich, was dabei rausgekommen ist.
    • Wenn in einer Reihe mehr als 5 Karten ausgeteilt werden, dann werden sie optisch zusammengeschoben. Das Platzproblem habe ich so elegant lösen können.
    • Das Karten-Misch und -Lege-Geräusch habe ich von einem anderen BASIC-Kartenspiel abgekupfert. Braucht nur 2 Pokes zum Abspielen. Und ich empfinde das Geräusch als sehr angenehm.
    • Das Listing ist momentan 239 Zeilen lang (ca. 3 A4-Seiten).
  • Wann gibt es hier die erste Final Version zum Download? Gefällt mir gut!

    Das Spiel wird es vorerst nur als Abtipp-Listing geben. Das ist der halbe Spass und dabei lernt man gleichzeitig etwas, dazu gehört auch die Bugsuche bei Vertippern. :bgdev


    Ich werde Mittwoch an der Gamescom sein und frage nun in die Runde, ob jemand, der dort ausstellt, meine Listings (2 doppelseitig gedruckte A4-Seiten pro Set) als exklusives Give-Away an den Mann bzw. Frau bringen möchte. Potentiell könnte so ein Eintipplisting ja nicht nur unsereiner, sondern auch jeden C64 Mini-Besitzer interessieren. Falls hier im Forum also jemand ist, der an der Gamescom im Retro-Bereich ausstellt, dann bitte PM an mich, um Details zu besprechen. Die Listings würde ich mitbringen. Alles kostenlos versteht sich, ist ja für die Community.

  • Ich habe an der Gamescom mit Scene World (ein C64 Disk-Magazin) einen idealen Partner gefunden, der meine kleine Give-Away Aktion unterstützt. Vielen Dank an dieser Stelle.

    Wer also morgen an der Gamescom ist, der kann sich eines der exklusiven Listings schnappen. Die ersten 64 Listings sind nummeriert und von mir signiert.

    Ich werde über den Twitter Account "@romwer" einen Tweet durchgeben, wenn ich beim Stand von Scene World bin.



    (PS: Das ganze ist eine gratis Aktion für Gamescom-Besucher und ich hoffe nicht, dass ich durch den Hinweis darüber eine Forums-Regel verletze. Falls doch, dann entschuldige ich mich und bitte darum, dass dieser Post gelöscht wird. Vielen Dank.)

  • Ich faend's super, wenn Du das noch einbauen wuerdest.

    Einbauen könnte man noch vieles :). Aber mein Ding ist vor allem die Schönheit im Kleinen - also aus möglichst wenig etwas zu machen. Deshalb auch meine Leidenschaft für die jährlich stattfindende BASIC 10Liners Competition. Zudem die Idee zu meinem Single Button Controller (Stichwort "SiBUGA)", um für uns Entwickler neue Anreize zu schaffen, was für Spielkonzepte man aus dem Wenigen vorhandenen herausholen kann. Da steht allem voran der Fokus auf Kreativität statt Parallax.

    Den Split-Modus hätte ich der Vollständigkeit halber gerne berücksichtigt, habe aber noch keinen einfachen Weg gefunden, diesen in wenigen (3-4) Code-Zeilen einzubauen. Grundsätzlich könnte ein Split wieder 2 Paare ergeben, die man wiederum Splitten könnte. Und wie ich das auf dem Bildschirm darstellen könnte, war mir auch noch nicht ganz klar. Gutes Design bedeutet eben auch, Sachen wegzulassen, die keinen grösseren Mehrwert darstellen. Die Frage hier ist somit, ob man mit einem Split die Gewinnchancen beeinflusst kann, oder eher nicht. Bin jedenfalls sehr glücklich, dass ich das Spiel - so wie es ist - auf überschaubaren 3 A4 Seiten BASIC-Code unterbringen konnte. Es soll ja auch abgetippt werden können, ohne dass man Stunden investieren muss. Das Spiel verwendet Sprites, einen eigenen Charakter-Set, Sound, einige interessante Pokes, den Befehl FRE(0) zum Auslösen der Garbage Collection bei Verwendung von String-Operationen, sowie einen kompakten Algorithmus zum Mischen eines Kartenstapels - die Basis eines jeden Kartenspiels. Das Listing bietet also einiges, um sich mit der Art und Weise des C64 vertraut zu machen.


    Es hat übrigens noch Listings am Stand der Scene World. Wer also noch keines hat, der kann dort noch eines ergattern (ohne Signatur):


  • tja, leider kann ich nicht zur gamescon kommen

    hätte aber das listing gerne8o

    Das Listing werde ich sicher noch auf anderem Wege anbieten. Vor allem auch dokumentieren, damit Einsteiger einfacher nachvollziehen können, was da passiert. Vermeiden möchte ich aber einen digitalen Download, weil mir am Herzen liegt, dass BASIC Listings abgetippt und nicht copy/pasted werden (ähnliches Konzept wie ZeHa's BASIC Weihnachten).

  • ich verstehe einfach nicht genau, was ein "Split" ist

    Ach so ;). Das Ziel ist ja möglichst nah an die 21 Punkte zu kommen, aber nicht mehr. Wenn du nun zu Beginn ein Kartenpaar von 2 Achten erhältst, dann hast du bereits 16 Punkte. Das Risiko mit der nächsten Karte über 21 zu kommen ist also tendenziell höher (die Karte dürfte maximal ein Ass oder eine Karte zwischen 2 und 5 sein, damit man nicht "Bust" geht.

    Nun kannst du...
    1. bei 16 Punkten bleiben und hoffen, dass der Dealer über 21 Punkte geht,
    2. auf Risiko eine weitere Karte ziehen oder
    3. - und das ist grundsätzlich nur bei Kartenpaaren erlaubt - diese auf eine weitere Hand aufteilen. Das bedeutet, du zahlst nochmals deinen Einsatz und hast dann als erste Karte jeweils eine Acht und erhältst nochmals je eine Karte auf die Achten, heisst also, du hast 2 Paare mit denen du weiterspielen kannst. Damit kann der Spieler das Risiko eines schlechten Blattes ein wenig entschärfen.

    wenn es Teil der offiziellen Regeln ist

    Es gibt viele verschiedene Auslegungen. Jedes Casino hat so seine eigene Regel. Mein Spiel basiert somit auf der Hausregel vom C(asino)64 - und erlaubt keinen Split. ;)

  • Für alle, die Blackjack noch nicht so gut kennen, hier noch eine Anleitung dazu auf wikihow.com:

    https://www.wikihow.com/Play-Blackjack bzw. die deutsche Version https://de.wikihow.com/Blackjack-spielen

    Für Kenner der Regeln ist ansonsten noch das auf der englischen wikiHow-Seite zum Download angebotene "Blackjack Cheat Sheet"-PDF interessant.

    Darin sind Strategien für den Spieler abgebildet, welcher Entscheid statistisch gesehen eher zum Erfolg führt.


    Und hier noch ein paar Überlegungen, warum ein Spiel als BASIC-Listing gegenüber einem in Assembler auch Vorteile hat:

    • Mit etwas Erfahrung kannst du das Programm nach deinen Wünschen anpassen. als z.B. einen Split-Modus selbst dazu programmieren (Ich probiere trotzdem am Wochenende mal, ob ich selbst auf eine elegante Lösung komme, reizen tät's mich schon. Ein Problem könnte aber werden, dass das BASIC-Programm zu gross wird und dann mit dem Speicherbereich des custom Charakter-Sets im RAM (ab $3000) überlappt.
    • Du kannst den Kartenmischler-Algorithmus so anpassen, dass der Kartenstapel beim Neumischen immer wieder dieselbe Kartenreihenfolge ausgibt. Damit kann man dann unterschiedliche Spielstrategien auf denselben Karten anwenden und schauen, auf welchem Weg mehr Gewinn erzielt werden konnte.
    • Du kannst Teile davon (z.B. die Kartenmisch-Routine) für ein anderes, eigenes Kartenspiel übernehmen.
  • Noch eine Frage zu dem Split: wenn man dann 2 x 2 Karten hat, also wie in Deinem Beispiel jeweils eine 8 und eine zweite Karte dazu, und man zieht eine neue Karte - zu welchen Karten kommt die dann? Kann man sich das aussuchen, nachdem man die Karte gesehen hat, oder muss man das vorher sagen, zu welchem Paerchen die neue Karte dazusoll?

  • Noch eine Frage zu dem Split: wenn man dann 2 x 2 Karten hat, also wie in Deinem Beispiel jeweils eine 8 und eine zweite Karte dazu, und man zieht eine neue Karte - zu welchen Karten kommt die dann

    Wählen kann man nicht. Bei einem Split wird dann mit der ersten Hand weitergespielt, bis man sich für ein "Stand" entscheidet (keine weitere Karte mehr) oder "Bust" geht (mehr als 21 Punkte erhalten). Danach wird mit der nächsten Hand weitergespielt. Falls es dort auch wieder eine neue 8 gäbe, hätte man wiederum die Wahl, diese zu Splitten. Bei jedem Split ist der beim Spielbeginn festgelegte Einsatz nochmals fällig.

  • Ui, das Listing würde mich auch interessieren, schon allein um es nach XC-BASIC zu konvertieren.

    Danke für das Interesse. XC-BASIC ( https://xc-basic.net/doku.php ) kannte ich noch nicht. Sieht nach einem interessanten Ansatz aus, das Beste aus zwei Welten (BASIC=Einfach dafür langsam/Assembler=Abstrakt dafür schnell) miteinander zu verbinden. Gibt es da schon ein paar Spiele, die damit produziert wurden, ein "Showcase" sozusagen? Wäre noch interessant, ob damit umfangreichere Action-Spiele in BASIC plötzlich machbar wären. Und es scheint mir auch eine gute Alternative, falls man im BASIC V2 an die Grenzen stösst. Dann war nicht alles umsonst, sondern man kann mit relativ wenig Aufwand auf XC-BASIC konvertieren und dann damit weiterprogrammieren. Dass man mit Labels, also ohne fixe Zeilennummern arbeiten kann, ist dabei natürlich ein grosses Plus.