← The Art of the Game

Blackjack

Madalynn Vaine

Gameplay from Blackjack
▶  Play Blackjack

Opens in a new tab. Press X in the game to come back.

Artist’s statement

I grew up playing poker with my family, and some of my earliest memories of my dad are at the kitchen table walking me through game theory equations and playing based on pot odds or simply bluffing techniques. Blackjack was the obvious choice for this assignment because it strips poker’s psychology down to its purest form. There’s no bluffing, no reading of an opponent, just a house and the luck of the draw no matter how good your decisions are. That gap, between how in control a player feels at the table and what the actual probabilities say, is something I think about constantly as a psychology major, and it’s what the game is really about. Winning a hand isn’t the point. Noticing how fast you start believing in a streak is. I made four deliberate choices to protect that feeling. From the type of poker game to the design of the interface. I intentionally requested an emerald and gold interface over a neon Vegas look. Also I took the money out entirely. The first version kept a bankroll, and it worked, but it imported the real financial stakes of gambling, which isn’t what I want to study. Replacing chips with puppies three for you, three for the house, first to three wins kept the thing I actually care about, the psychology of a streak, without asking anyone to feel what losing real money is like. Some of this was genuinely collaborative. I never asked for the dealer’s hole-card peek or for split aces to be capped at one card each; those are real casino rules Claude added on its own, and they made the game feel more legitimate than what I’d specified. But the collaboration had limits too. After the first build, the table’s “BLACKJACK PAYS 3 TO 2” caption rendered directly on top of the dealer’s cards, a bug Claude didn’t catch itself. I only found it by playing the hand: “the words for blackjack are kinda on top of the dealer cards.” That’s why, when I later asked for the bigger revision, pulling the money out and rebalancing the race, I added a blanket instruction to make sure there are never some overlapping text instead of waiting to catch the next one myself. Claude rebuilt the overlay so the result banner is opaque instead of see-through and clears the table between hands, fixing problems I hadn’t found yet. I set the standard after getting burned once; the execution got ahead of what I’d asked for. I did not write a line of this code, and I won’t pretend I did. But that doesn’t make it only Claude’s game. Every rule that gives it its edge the strict casino odds, the keyboard-only controls, replacing money with puppies, the refusal to make winning easier came from decisions I made before any code existed, and the one real bug I caught got caught because I treated it like a game I wanted to play, not a deliverable. I’d call it co-authored: weighted toward the machine on execution, toward me on everything that decided what it was executing.

Prompts that guided development

Build a single-file HTML arcade game called poker game. The player sees a

classic blackjack game interface. The challenge is it is blackjack and because

of the odds of the game it is hard for players to win each time... Draw all

graphics with canvas and synthesize any sound with the Web Audio API. Keyboard

controls, shown on screen. Include a score and a game-over state.

every time the user wins a round they are awarded a picture of a cute puppy and

once the user has 6 puppies before the house wins 3 rounds the user wins the

game

ok make it that the user gets 3 puppies before the house gets 3 puppies and

also take out the money aspect of it and also make sure there are never some

overlapping text and also make the background look fancier​

AI disclosure​ ​

Tool used: Claude (web interface), across four rounds of iteration: the original build, a bug-fix pass for the caption overlap, a feature addition for the puppy win-condition, and a larger revision that rebalanced the puppy race to three-against-three, removed the money system entirely, hardened the game against any further text overlap, and reworked the table’s background. I did not write or edit any of the code directly. What I corrected: the original caption-overlap bug, caught by playing the game, plus a second, broader request to eliminate any overlapping text once I realized fixing one instance doesn’t guarantee there won’t be others. What I deliberately removed: the bankroll and betting system from the first build not a bug, a design choice, once I decided the game should be about the psychology of a streak rather than actual stakes. What I deliberately did not add: an on-screen basic-strategy hint, a feature I considered and chose to leave out rather than something built and then discarded. Everything else in the final build, including rules I never explicitly requested (the dealer’s hole-card peek, the one-card-only treatment of split aces, and the opaque result banner that replaced a see-through one), was written by Claude without my prompting.