1 REM *****************************
2 REM * BOLLSPEL.BAC - 16 K Minne *
3 REM * 80-11-20 / VER 1.0 *
4 REM * (c) Alf Wirdling <4230> *
5 REM *****************************
10 REM variabler R$ C2% D% F2 M% S2% T% W% C1% V% H% S% I%
20 REM variabler R1% K1% R2% K2% R% K% F B% G%
30 PRINT CHR$(12);TAB(7);"BOLL-SPEL F\R TV] SPELARE"
40 PRINT TAB(7);STRING$(25,61) : ;
50 PRINT "Detta spel {r ett 'tennis-spel' som g}r"
60 PRINT "ut p} att hindra en boll med en racket."
70 PRINT : ; "Man f}r sj{lv v{lja hastighet hos"
80 PRINT "bollen och storleken p} racketarna."
90 PRINT : ; "Man man|vrerar racketarna med fyra"
100 PRINT "tangenter:" : ;
110 PRINT "A (a) - Flyttar v{nster racket ned}t" : ;
120 PRINT "S (s) - Flyttar v{nster racket upp}t" : ;
130 PRINT "[ ({) - Flyttar h|ger racket upp}t" : ;
140 PRINT "* (') - Flyttar h|ger racket ned}t" : ;
150 RANDOMIZE
160 PRINT : ; "VEM SKALL B\RJA SERVA ???"
170 PRINT : ; "H\GER (H) eller V[NSTER (V) "; : GET R$ : ; R$
180 IF R$="V" OR R$="v" THEN C2%=4% : D%=1% ELSE C2%=77% : D%=2%
190 PRINT : ; "--- BOLLENS HASTIGHET ---"
200 PRINT : ; "F\RDR\JNINGS-TID I MILLI-SEK ";
210 INPUT F2
220 PRINT : ; "STORLEK P] RACKETERNA (1-20) ";
230 INPUT M%
240 PRINT : ; "PO[NG-SUMMA ATT SPELA TILL ";
250 INPUT S2%
260 PRINT : ; "VINNA MED TV] PO[NG (J/N) ";
270 GET R$ : ; R$ : IF R$="J" OR R$="j" THEN T%=1% ELSE T%=2%
280 PRINT : ; "SKALL PO[NG R[KNAS ENDAST VID EGEN SERV"
290 PRINT : ; "(J/N) "; : GET R$ : ; R$
300 IF R$="J" OR R$="j" THEN W%=2% ELSE W%=1%
310 PRINT : ; "TRYCK RETURN OCH SPELET B\RJAR "; : GET R$
320 C1%=35% : V%=0% : H%=0% : S%=D%
330 PRINT CHR$(12); : FOR I%=2% TO 21%
340 PRINT CUR(I%,0%);CHR$(151); : NEXT I%
350 PRINT CUR(0,3);"V[NSTER MOT H\GER";
360 PRINT CUR(23,8);V%,,H%;
370 R1%=34% : K1%=3% : R2%=34% : K2%=78%
380 R%=R1% : K%=K1% : GOSUB 950
390 K%=K2% : GOSUB 950 : SETDOT C1%,C2%
400 REM * F\RDR\JNINGSTID *
410 FOR F=1 TO F2 : NEXT F : ON D% GOTO 420,650
420 ON INT(RND*3+1) GOTO 440,610,630
430 REM * ]T H\GER SNETT UPP]T *
440 IF C1%-1%<6% THEN 610
450 CLRDOT C1%,C2% : C1%=C1%-1% : C2%=C2%+1% : SETDOT C1%,C2%
460 IF C2%<>77% THEN 890
470 IF DOT(C1%,78%) THEN D%=2% : GOTO 410
480 CLRDOT C1%,C2% : SETDOT C1%,C2%+2%
490 ON W% GOTO 500,510
500 V%=V%+1% : GOTO 520
510 IF S%=1% THEN V%=V%+1%
520 PRINT CUR(23,8);V%,,H%;
530 S%=1% : GOSUB 1110
540 IF V%H% THEN 1130
570 CLRDOT C1%,C2%+2% : C1%=35% : C2%=4%
580 FOR I%=R1% TO R1%+M%-1% : CLRDOT I%,3% : NEXT I%
590 R1%=34% : K1%=3% : R%=R1% : K%=K1% : GOSUB 950 : SETDOT C1%,C2% : GOTO 410
600 REM * ]T H\GER RAKT FRAM *
610 CLRDOT C1%,C2% : C2%=C2%+1% : SETDOT C1%,C2% : GOTO 460
620 REM * ]T H\GER SNETT NED]T *
630 IF C1%+1%>65% THEN 610
640 CLRDOT C1%,C2% : C1%=C1%+1% : C2%=C2%+1% : SETDOT C1%,C2% : GOTO 460
650 ON INT(RND*3+1) GOTO 670,840,860
660 REM * ]T V[NSTER SNETT UPP]T *
670 IF C1%-1%<6% THEN 840
680 CLRDOT C1%,C2% : C1%=C1%-1% : C2%=C2%-1% : SETDOT C1%,C2%
690 IF C2%<>4% THEN 890
700 IF DOT(C1%,3%) THEN D%=1% : GOTO 410
710 CLRDOT C1%,C2% : SETDOT C1%,C2%-2%
720 ON W% GOTO 730,740
730 H%=H%+1% : GOTO 750
740 IF S%=2% THEN H%=H%+1%
750 PRINT CUR(23,8);V%,,H%;
760 S%=2% : GOSUB 1110
770 IF H%V% THEN 1130
800 CLRDOT C1%,C2%-2% : C1%=35% : C2%=77%
810 FOR I%=R2% TO R2%+M%-1% : CLRDOT I%,78% : NEXT I%
820 R2%=34% : K2%=78% : R%=R2% : K%=K2% : GOSUB 950 : SETDOT C1%,C2% : GOTO 410
830 REM * ]T V[NSTER RAKT FRAM *
840 CLRDOT C1%,C2% : C2%=C2%-1% : SETDOT C1%,C2% : GOTO 690
850 REM * ]T V[NSTER SNETT NED]T *
860 IF C1%+1%>65% THEN 840
870 CLRDOT C1%,C2% : C1%=C1%+1% : C2%=C2%-1% : SETDOT C1%,C2% : GOTO 690
880 REM * POLLNING *
890 IF INP(56%)=193% OR INP(56%)=225% THEN B%=1% : GOTO 930
900 IF INP(56%)=211% OR INP(56%)=243% THEN B%=2% : GOTO 930
910 IF INP(56%)=219% OR INP(56%)=251% THEN B%=3% : GOTO 930
920 IF INP(56%)=167% THEN B%=4% ELSE 410
930 GOSUB 960 : GOTO 410
940 REM * UTL[GGNING AV RACKET *
950 FOR G%=R% TO R%+M%-1% : SETDOT G%,K% : NEXT G% : RETURN
960 ON B% GOTO 980,1010,1040,1070
970 REM * TANGENT A OCH a *
980 IF R1%+M%>65% THEN 1090
990 CLRDOT R1%,K1% : R1%=R1%+1% : R%=R1% : K%=K1% : GOSUB 950 : GOTO 1090
1000 REM * TANGENT S och s *
1010 IF R1%-1%<6% THEN 1090
1020 CLRDOT R1%+M%-1%,K1% : R1%=R1%-1% : R%=R1% : K%=K1% : GOSUB 950 : GOTO 1090
1030 REM * TANGENT [ och { *
1040 IF R2%-1%<6% THEN 1090
1050 CLRDOT R2%+M%-1%,K2% : R2%=R2%-1% : R%=R2% : K%=K2% : GOSUB 950 : GOTO 1090
1060 REM * TANGENT * och ' *
1070 IF R2%+M%>65% THEN 1090
1080 CLRDOT R2%,K2% : R2%=R2%+1% : R%=R2% : K%=K2% : GOSUB 950
1090 RETURN
1100 REM * F\RDR\JNING VID NY SERV *
1110 FOR F=1 TO 2000 : NEXT F : RETURN
1120 REM * SLUT - NY MATCH ??? *
1130 PRINT CUR(23,0);STRING$(39,32);
1140 IF H%>V% THEN 1160
1150 PRINT CUR(23,0);"V[NSTER, VANN MATCHEN MED";V%;" -";H% : GOTO 1170
1160 PRINT CUR(23,0);"H\GER, VANN MATCHEN MED";H%;" -";V%
1170 PRINT : ; "SPELA MER (J/N) "; : GET R$ : GET R$ : ; R$
1180 IF R$="J" OR R$="j" THEN 160
1190 END