01 REM ************************************************************************************************* 02 REM * COUNT THE MATCHED MUTANT ALIENS (Primo A64) * 03 REM * For competition of Facebook group of Microkey Primo Retro Computer in 2021 (created by bana) * 04 REM * Just for fun to getting kind of Microkey Primo BASIC retro feeling with these three eves coding * 05 REM ************************************************************************************************* 10 DIM K%(8):I=0:J=0:K=0:IS=20:IE=20:JS=7:JE=7:PT=0:CL=2:MO=0:RI1=0:RJ1=0:RI2=0:RJ2=0:IX=0:JY=0:PT=0:TM=60:C$="":CV=0: 11 LF=3:CK=0 12 DIM T(8):DIM H(15,41):DIM IT(8):DIM JT(8):DIM IST(8):DIM IET(8):DIM JST(8):DIM JET(8):DIM CRT$(30):DIM A(11,59) 14 REM -- on [1..8] levels the possible number of aliens * 2 15 T(1)=1:T(2)=3:T(3)=5:T(4)=10:T(5)=15:T(6)=30 16 REM -- possible size of areas(IT,JT) and i,j limit indexes for row and column(IST,IET,JST,JET) of different levels and figures(CRT) 17 IT(1)=1:IT(2)=5:IT(3)=9:IT(4)=13:IT(5)=17:IT(6)=21 18 JT(1)=1:JT(2)=3:JT(3)=5:JT(4)=7:JT(5)=9:JT(6)=11 19 IST(1)=20:IST(2)=18:IST(3)=16:IST(4)=14:IST(5)=12:IST(6)=10 20 IET(1)=20:IET(2)=22:IET(3)=24:IET(4)=26:IET(5)=28:IET(6)=30 21 JST(1)=7:JST(2)=6:JST(3)=5:JST(4)=4:JST(5)=3:JST(6)=2 22 JET(1)=7:JET(2)=8:JET(3)=9:JET(4)=10:JET(5)=11:JET(6)=12 23 CRT$(1)="@"::CRT$(2)="B":CRT$(3)="C":CRT$(4)="D":CRT$(5)="E":CRT$(6)="F":CRT$(7)="G":CRT$(8)="H":CRT$(9)="I":CRT$(10)="J" 24 CRT$(11)="K"::CRT$(12)="L":CRT$(13)="M":CRT$(14)="N":CRT$(15)="O":CRT$(16)="P":CRT$(17)="Q":CRT$(18)="R":CRT$(19)="S":CRT$(20)="T" 25 CRT$(21)="V"::CRT$(22)="W":CRT$(23)="X":CRT$(24)="Y":CRT$(25)="Z":CRT$(26)="U":CRT$(27)="|":CRT$(28)=".":CRT$(29)="?":CRT$(30)="$" 100 REM -- main 105 CL=2:GOSUB 800:CLS 110 IF PT>50 THEN GOSUB 700:END 111 IF LF=0 THEN CLS:PRINT$5,15,"You lost!":END 112 GOSUB 400:GOSUB 500:GOSUB 550:GOSUB 600:GOSUB 650 113 IF PT=10 OR PT=20 OR PT=30 OR PT=40 OR PT=50 THEN CL=CL+1 114 PRINT$14,8,CHR$(6)" ":PRINT$14,18,CHR$(22) 115 PRINT$15,8,"Number of identical aliens";:INPUTC$:CV=VAL(C$):IF CV<1 OR CV>99 THEN CV=0 116 IF CV=MO THEN PT=PT+1:CLS:PRINT$14,18,"Bingo!":BEEP138,38:ELSE LF=LF-1:CLS:BEEP10,10:PRINT$14,8,"Wrong answer, try it again!" 117 GOTO 110 200 END 400 REM -- reset H two dimensional array 405 FOR I=0 TO IT(CL):FOR J=0 TO JT(CL): H(J,I)=0: NEXT J,I:RETURN 500 REM -- reset area, maximum 7 call 510 FOR I=IST(CL) TO IET(CL)+1 515 FOR J=JST(CL) TO JET(CL)+1:PRINT$J,I,CHR$(128);:PRINT$J,I,"A";: 520 NEXT J 525 NEXT I 530 RETURN 550 REM -- for current level(CL) generate even aliens(MO) with different kind of aliens(K) 560 MO=RND(T(CL)):FOR K=1 TO MO 565 RI1=RND(IT(CL)):RJ1=RND(JT(CL)) 570 IF NOT H(RJ1,RI1)=0,GOTO 565 ELSE H(RJ1,RI1)=K 575 RI2=RND(IT(CL)):RJ2=RND(JT(CL)) 580 IF NOT H(RJ2,RI2)=0,GOTO 575 ELSE H(RJ2,RI2)=K 585 NEXT K 590 RETURN 600 REM -- map H two dimensional array to screen 605 IX=IST(CL):FOR I=0 TO IT(CL) 606 JY=JST(CL):FOR J=0 TO JT(CL) 610 IF H(J,I)=0,PRINT$JY,IX,CHR$(128);:PRINT$JY,IX,"A";:ELSE PRINT$JY,IX,CRT$(H(J,I)); 611 JY=JY+1:NEXT J 615 IX=IX+1:NEXT I 620 RETURN 650 REM -- add one to point and write points, levels 655 PRINT$0,0,"Points: ":PRINT$0,0,"Points:"PT 660 CK=CL:CK=CK-1:PRINT$0,15,"Levels: ":PRINT$0,15,"Levels:"CK 665 PRINT$0,33,"Life: ":PRINT$0,33,"Life:"LF 670 RETURN 700 REM -- finish winner screen 705 CLS:PRINT$5,0,"Amazing concentration, you are the winner!" 710 FORJ=0TO5:FORI=0TO30:BEEPI,I*5:NEXTI:NEXTJ:FORI=0TO50:BEEPI,I*5:NEXTI 715 RETURN 800 REM -- intro screen 805 CLS:PRINT CHR$(2):PRINT$1,15,"COUNT":PRINT CHR$(1):PRINT$3,18,"THE": 810 PRINT CHR$(2):PRINT$5,13,"MATCHED":PRINT$6,8,"MUTANT ALIENS" 815 PRINT CHR$(1):FORJ=8TO12:FORI=15TO24:PRINT$J,I,CHR$(128);:PRINT$J,I,CRT$(RND(30));:NEXTI:NEXTJ 820 PRINT CHR$(15):PRINT$20,1,"bana 2021":PRINT CHR$(1) 823 PRINT$14,10,"" 824 FORJ=0TO10:FORI=0TO10:BEEPI*2,I*3:NEXTI:NEXTJ: 825 PRINT$15,20,"";:INPUTC$:PRINT CHR$(1) 830 RETURN