10 REM +++++++++++++++++++++++++++++++++ 11 REM ! Program .... SURROUND 12 REM ! Utg}va 1 1981-10-14 13 REM ! av (c) Stefan Svensson 14 REM ! Minne 16 Kbytes 15 REM ! Ins{nt av Joe Johnsson 16 REM +++++++++++++++++++++++++++++++++ 17 REM A% Koordinat f|r linje 1 18 REM A1% Riktning,linje 1 19 REM A2% Gamla koordinaten,linje 1 20 REM A3% 1 om A%/2%=INT(A%/2%) 21 REM B% Koordinat f|r linje 1 22 REM B1% Riktning,linje 1 23 REM B2% Gamla koordinaten,linje 1 24 REM C% Po{ng,v{nster spelare 25 REM D% Koordinat f|r linje 2 26 REM D1% Riktning,linje 2 27 REM D2% Gamla koordinaten,linje 2 28 REM E% Koordinat f|r linje 2 29 REM E1% Riktning,linje 2 30 REM E2% Gamla koordinaten,linje 2 31 REM E3% 1 om E%/2%<>INT(E%/2%) 32 REM F% Po{ng,h|ger spelare 33 REM G% INP(56%) 34 REM H% Tillf{llig variabel 35 REM I% >0 om n}gon 'krockat' 36 REM J% Minsta po{ng f|r att vinna 37 REM K% Spel 38 REM L% Startriktning 39 REM M% Hastighet 40 REM N% H|ger-v{nster,spel 3 41 GOSUB 153 42 ; CUR(3%,1%)'Spelet g}r ut p} att styra undan de' 43 ; 'linjer som ritas upp. N{r n}gon krockar' 44 ; 'mot en linje f}r motspelaren ett po{ng.' 45 ; 'En markering visar vem som vann po{ngen.'; 46 ; 'Vid "dubbelkrock" d|ms ett po{ng ut till'; 47 ; 'vardera spelaren. F|r att vinna m}ste' 48 ; 'man leda med minst tv} po{ng.' 49 ; CUR(12%,0%)'V{nstra spelaren har den v{nstra linjen.' 50 ; CUR(13%,2%)'H|gra spelaren har den h|gra linjen.' 51 ; CUR(15%,6%)'V[NSTER'TAB(28%)'H\GER' 52 ; CUR(17%,9%)'W'TAB(30%)']' 53 ; TAB(8%)'A S'TAB(29%)'\ [' 54 ; TAB(9%)'Z'TAB(30%)'-' 55 ; CUR(21%,12%)'Tryck p} RETURN.'; : GET H$ : IF H$<>CHR$(13) THEN 55 56 GOSUB 153 57 ; CUR(4%,8%)'V{lj spel.' : ; TAB(8%)'Nr:' 58 ; CUR(7%,6%)'1 SURROUND NORMAL' 59 ; TAB(6%)'2 SURROUND DOT' 60 ; TAB(6%)'3 SURROUND against the COMPUTER' 61 ; CUR(11%,8%)'V{lj.' : ; TAB(8%)'Nr:' 62 ; CUR(14%,6%)'1 HORIZONTAL' 63 ; TAB(6%)'2 VERTICAL' 64 ; TAB(6%)'3 TOWARDS' 65 ; CUR(18%,8%)'V{lj hastighet' : ; TAB(8%)'(1-6):' 66 ; CUR(5%,12%); : GET K$ : K%=ASC(K$)-48% 67 IF K%<1% OR K%>3% THEN 66 ELSE ; K$ 68 ; CUR(6%+K%,5%)'>' 69 ; CUR(12%,12%); : GET L$ : L%=ASC(L$)-48% 70 IF L%<1% OR L%>3% THEN 69 ELSE ; L$ 71 ; CUR(13%+L%,5%)'>' 72 ; CUR(19%,15%); : GET M$ : M%=ASC(M$)-48% 73 IF M%<1% OR M%>6% THEN 72 ELSE ; M$ 74 GOSUB 133 : M%=(M%-1%)*28% 75 ; CUR(22%,8%)'F|rst till'J%' po{ng vinner.' 76 FOR H%=0% TO 12000% : NEXT H% 77 IF K%<3% 83 ELSE GOSUB 153 78 ; CUR(2%,0%)'against the'CUR(2%,28%)'COMPUTER'CHR$(135%,127%) : ; STRING$(40%,45%) 79 ; CUR(5%,0%)'Jag har den v{nstra linjen.' 80 ; ' Du har den h|gra linjen och styr med:' : ; 81 ; TAB(13%)']' : ; TAB(12%)'\ [' : ; TAB(13%)'-' 82 ; CUR(13%,1%)'Tryck p} RETURN.'; : GET H$ : IF H$<>CHR$(13) THEN 82 83 C%=0% : F%=0% : ; CHR$(12%) : GOSUB 124 84 FOR H%=1% TO 23% : ; CUR(H%,0%)CHR$(151%); : NEXT H% : GOSUB 127 : GOSUB 140 85 IF K%=2% GOTO 144 86 SETDOT A%,B% : SETDOT D%,E% 87 IF I%>0% THEN 113 88 FOR H%=0% TO M% : NEXT H% 89 IF K%=2% AND A3%=0% 96 90 IF K%=3% 96 91 G%=INP(56%)-128% : IF G%>95% G%=G%-32% 92 IF G%=87% AND A1%=0% A1%=-1% : B1%=0% 93 IF G%=65% AND B1%=0% B1%=-1% : A1%=0% 94 IF G%=83% AND B1%=0% B1%=1% : A1%=0% 95 IF G%=90% AND A1%=0% A1%=1% : B1%=0% 96 FOR H%=0% TO M% : NEXT H% 97 IF K%=2% AND E3%=0% THEN 103 98 G%=INP(56%)-128% : IF G%>95% G%=G%-32% 99 IF G%=93% AND D1%=0% D1%=-1% : E1%=0% 100 IF G%=92% AND E1%=0% E1%=-1% : D1%=0% 101 IF G%=91% AND E1%=0% E1%=1% : D1%=0% 102 IF G%=45% AND D1%=0% D1%=1% : E1%=0% 103 IF K%=3% A2%=A% : B2%=B% 104 A%=A%+A1% : B%=B%+B1% : D%=D%+D1% : E%=E%+E1% 105 IF K%<>2% 109 106 IF A%/2=INT(A%/2) A3%=1% ELSE A3%=0% 107 IF E%/2<>INT(E%/2) E3%=1% ELSE E3%=0% 108 IF K%=2% GOTO 147 109 IF K%=3% GOSUB 154 110 IF DOT(A%,B%) I%=I%+1% 111 IF DOT(D%,E%) I%=I%+2% 112 GOTO 85 113 IF I%=1% F%=F%+1% : GOSUB 132 : OUT 6%,251% 114 IF I%=2% C%=C%+1% : GOSUB 131 : OUT 6%,195% 115 IF I%=3% C%=C%+1% : F%=F%+1% : GOSUB 131 : GOSUB 132 : OUT 6%,3% 116 GOSUB 124 : I%=0% 117 FOR H%=0% TO 1800% : NEXT H% : OUT 6%,0% : FOR H%=0% TO 14000% : NEXT H% 118 IF C%=J% AND C%>=F%+2% 122 120 IF F%>=J% AND F%>=C%+2% 122 121 IF C%+F%CHR$(13) THEN 123 ELSE 56 124 ; CUR(0%,2%)SPACE$(4%-LEN(NUM$(C%)))C%' p' 125 ; CUR(0%,30%)SPACE$(4%-LEN(NUM$(F%)))F%' p' 126 RETURN 127 IF L%=1% A%=18% : B%=16% : A1%=0% : B1%=1% : D%=57% : E%=65% : D1%=0% : E1%=-1% 128 IF L%=2% THEN A%=18% : B%=16% : A1%=1% : B1%=0% : D%=57% : E%=65% : D1%=-1% : E1%=0% 129 IF L%=3% A%=38% : B%=16% : A1%=0% : B1%=1% : D%=38% : E%=65% : D1%=0% : E1%=-1% 130 RETURN 131 ; CUR(0%,14%)'<' : RETURN 132 ; CUR(0%,26%)'>' : RETURN 133 IF M%=1% J%=20% 134 IF M%=2% J%=16% 135 IF M%=3% J%=12% 136 IF M%=4% J%=10% 137 IF M%=5% J%=8% 138 IF M%=6% J%=6% 139 RETURN 140 ; CUR(0%,14%)' 'CUR(0%,26%)' 'CUR(1%,1%)'<'STRING$(37%,44%)'l' 141 FOR H%=2% TO 22% : ; CUR(H%,1%)'5'SPACE$(37%)'j'; : NEXT H% 142 ; CUR(23%,1%)'u'STRING$(37%,112%); 143 SETDOT 71%,78% : SETDOT 71%,79% : SETDOT 70%,79% : SETDOT 69%,79% : CLRDOT 70%,78% : CLRDOT 69%,78% : RETURN 144 IF A3% THEN SETDOT A%,B% 145 IF E3% THEN SETDOT D%,E% 146 GOTO 87 147 IF A%>70% THEN I%=I%+1% 148 IF E%<3% THEN I%=I%+2% 149 IF A3% AND DOT(A%,B%) THEN I%=I%+1% 150 IF E3% AND DOT(D%,E%) THEN I%=I%+2% 151 IF K%=3% GOSUB 154 152 GOTO 85 153 ; CHR$(12%)CUR(1%,12%)'S U R R O U N D'CUR(2%,11%)CHR$(151%)STRING$(15%,35%) : RETURN 154 IF DOT(A%,B%)=0% 160 ELSE H%=0% 155 IF H%=0% GOSUB 167 ELSE GOSUB 168 156 X%=A2%+A1% : Y%=B2%+B1% 157 IF DOT(X%,Y%)=0% 166 158 H%=H%+1% : IF H%>2% RETURN 159 GOTO 155 160 H%=RND*5% : IF H%=0% RETURN 161 IF DOT(A%+A1%*4%,B%+B1%*4%)=0% RETURN ELSE H%=0% 162 IF H%=0% GOSUB 167 ELSE GOSUB 168 163 IF DOT(A%+A1%*4%,B%+B1%*4%)=0% RETURN 164 H%=H%+1% : IF H%>2% RETURN 165 GOTO 162 166 A%=X% : B%=Y% : RETURN 167 N%=RND*2%+1% 168 ON N% GOTO 169,173 169 IF A1%=-1% A1%=0% : B1%=-1% : RETURN 170 IF B1%=1% A1%=-1% : B1%=0% : RETURN 171 IF A1%=1% A1%=0% : B1%=1% : RETURN 172 IF B1%=-1% A1%=1% : B1%=0% : RETURN 173 IF A1%=-1% A1%=0% : B1%=1% : RETURN 174 IF B1%=1% A1%=1% : B1%=0% : RETURN 175 IF A1%=1% A1%=0% : B1%=-1% : RETURN 176 IF B1%=-1% A1%=-1% : B1%=0% : RETURN