Program listing on 48K Spectrum.
1 BORDER 0: POKE 23693,6: CLS : RANDOMIZE : DIM c(52): FOR b=0 TO 51: PRINT INK 7;AT INT (b/10)*3+1,3*b-30*INT (b/10);b+1: LET f=.5+RND*(b+1): LET c(b+1)=c(f): LET c(f)=65+INT (b/2): NEXT b: LET t=0: LET l=36: PRINT INK 5;AT 21,0;"Lives:";l,"Score:";t;" Won!" AND t=26,: LET f=f=0: IF l*(t<26) THEN INPUT STR$ b+CHR$ 6 AND f;a: POKE (a<1 OR a>52 OR a=b*f)*23620,16: POKE (c(a)=0)*23620,16: RESTORE : READ q,r,w,v,y,x,m,s,c(a),c(b),l,t,b: PRINT INVERSE m;AT w*3,v*3;CHR$ q;AT y*3,x*3;CHR$ r AND m: BEEP f/2,24*m-12: FOR d=1 TO 150*f: NEXT d: PRINT OVER f=m;AT w*3,v*3;" ";AT y*3,x*3;" ": POKE 23620,14: DATA c(a),c(b),INT (a/10-.1),a-10*w-1,INT (b/10-.1),b-10*y-1,q=r*f,m=0,s*q,s*r,l-s*f,t+m,a |
The game ends when either there are no lives left (game lost), or all pairs have been found yielding a score of 26 points (game won). The initial number of available lives is 36, which makes the game challenging to a first time player, but not too difficult. More experienced players should focus on preserving a high number of lives on completion.