CODENAMES
---------

A ZX Spectrum multiplayer game by Andy Jenkinson, based upon the game by Vlaada Chvatil.

For the C.C.S.Crap Games Competition 2021

For the 48K ZX Spectrum


This game is a ZX Spectrum implementation of the tabletop game CODENAMES in which teams play against one another with a SPYMASTER tying to give clues that link their words whilst avoiding their teammates accidentally guessing other words in the 25 word tableau.

This ZX version has all 400 words from the (second edition) of the game, plus the 400 words from the DUETS version, and the 380 DEEP UNDERCOVER (18+) version of the game.

The game allows you to mix words freely (although there is some repetition in words, which means you *could* end up with a board that has duplicate words.)

The idea for was born out of a desire to play some tabletop games with my friends during the great lockdown of 2020/21.  It struck me that Codenames - which I have physically - is technically possible to play; and by repeatedly photographing the card tableau and key card we managed to play some games over whatsapp - albeit rather clumsily.

I thought I could probably make a version for the Spectrum - and if we all had Spectrum emulators to hand this would be better... But it turned out that people smarter than I had already made online implementations (e.g. https://codenames.game/) but the thought stuck with me...

[cue C.C.S.Crap Games Competition 2021]

... and I decided I could write this, despite its redundancy (the online browswer based implementations are *much* more convenient).

It seemed a good chance to work with my own "PRINT 42" BASIC extension routine that, despite me hawking it about on W.O.S. ages ago, was of interest to no-one but me.  So I dug out my asm, and sharpened that up a bit, plus the (rather anonymous) custom font that I made.  Thus this entry to the competition makes extensive use of BASIC STEAMS.  PRINT #7;"YourTextHere" accesses my routine, and thus is surely 'MAGENTA CHALLENGE' worthy for this year's competition.  (The way the routine works means that INK PAPER BRIGHT AND FLASH are used differently.  So weird commands such as PRINT #7;INK 56;PAPER 127;BRIGHT 11;FLASH 30;"HELLO" are valid).

My assembly is included for anyone who wants to pick it apart and marvel at just how inefficiently I've done things.  As well as the .bas file to see my awkward BASIC too.

Actually the whole of CODENAMES is now a horrible hybrid of BASIC and m/code where I've written routines in BASIC, then realised that they'd be better/quicker in m/code (and within my limited grasp).  I've effectively written many parts of this twice.  So it's taken bloody ages.  Because 1. I'm not very quick.  2. Every change then had loads of bugfixing   3. I get a bit fussy about making things work nicely.

Anyway - there is some goodness here:

- A rather nice 42 column print routine that I'm rather proud of.
- Actually does a reasonable job of being a game of Codenames
- Manages to fit all the words on the cards (the longest word is 11 characters long)
- Brief instructions included (although knowing how to play Codenames anyway would help)
- The GAME ID/SEED being used as a RANDOMIZE seed
- The word set(s) being encoded in the first character of the GAME ID (was faffy to do)
- Managing the awkward board layout (the 5x5 words of the original clearly wouldn't work here)
- The + symbol when selecting words to aid knowing where your cursor is
- INPUT AT used as a nice partial cls for the instructions pages
- A Loading Screen

There's also some distinct crapness:

- Relies on player honesty even more than 'Scrabble' did
- Is a rubbish way of playing the game, when there are far more convenient options
- Is about a 18 months too late to be of relevance to the great lockdown of 2020/21
- Is, when you get down to it, just a glorified grid of words
- Annoyingly with it using my 6 pixel width font, it doesn't sit perfectly evenly within the 10 character wide 'cards'






