1 REM BASICODE 2 ROUTINES DOOR HENK WEVERS 2 REM NADERE INLICHTINGEN BASICODE 3 REM NOS, HOBBYSCOOP HILVERSUM 5 PRINT CHR$(26);:WIDTH(255) 10 GOTO 1000 20 GOTO 1010 100 PRINT CHR$(26);:RETURN 110 REM 111 IF HO>51 THEN HO=51 112 IF VE>23 THEN VE=23 113 PRINT CHR$(27);"=";CHR$(VE+32);CHR$(HO+32); 115 RETURN 120 HO=PEEK(&HEF5A):VE=PEEK(&HEF5B)-&HF0 121 VE=VE*2 122 IF HO>127 THEN HO=HO-128:VE=VE+1 123 VE=VE-PEEK(&HEF62):IF VE<0 THEN VE=32+VE 124 RETURN 200 IN$=INKEY$:RETURN 210 GOSUB 200:IF IN$="" THEN 210 211 RETURN 250 PRINT CHR$(7);:RETURN 260 RV=RND(1):RETURN 270 FR=FRE(2):RETURN 300 SR$=STR$(SR) 301 Q7=LEN(SR$):IF Q7=0 THEN RETURN 302 IF RIGHT$(SR$,1)<>" " THEN 304 303 SR$=LEFT$(SR$,Q7-1):GOTO 301 304 IF LEFT$(SR$,1)<>" " THEN RETURN 305 SR$=RIGHT$(SR$,Q7-1):GOTO 301 310 Q4=SR:IF CN<>0 THEN 316 312 SR=INT(SR+.5):GOSUB 300:GOTO 330 316 Q5=SGN(SR):SR=ABS(SR):Q8=INT(SR):Q9=SR-Q8 318 FOR Q6=1 TO CN:Q9=Q9*10:NEXT Q6 320 Q9=INT(Q9+.5):SR=Q9:GOSUB 300 322 Q9$=RIGHT$("00000000000000000000"+SR$,CN) 324 IF Q8=0 AND Q9=0 THEN Q5=1 326 SR=Q8:GOSUB 300:IF Q5=-1 THEN SR$="-"+SR$ 328 SR$=SR$+"."+Q9$ 330 IF LEN(SR$)<=CT THEN 334 332 SR$=LEFT$("********************",CT):GOTO 340 334 SR$=RIGHT$(" "+SR$,CT) 340 SR=Q4:RETURN 350 LPRINT SR$;:RETURN 360 LPRINT:RETURN 1000 A=100:GOTO 20 1010 GOTO 10000:REM INITIALISEER 1020 : 1030 :REM START VAN HET HOOFDPROGRAMMA 1040 : 1050 GOSUB 100:PRINT"Goed, dan gaan we beginnen." 1060 PRINT:PRINT 1070 PRINT"Jullie moeten afspreken wie A en B is," 1080 PRINT 1090 PRINT"en ik wil graag weten welk het hoogste" 1100 PRINT"getal in het schema is waarmee jullie" 1110 PRINT"willen spelen.":PRINT 1120 PRINT"Kies dat getal, maximaal 91."; 1130 INPUT GI 1140 IF GI<92 AND GI>2 THEN 1220 1150 PRINT:PRINT"Je keuze was ";GI;" en dat ligt toch niet" 1160 PRINT"tussen 2 en 92 ?" 1170 PRINT:PRINT 1180 PRINT"K i e s o p n i e u w " 1190 FOR I=1 TO 20*TF:NEXT I 1200 GOTO 1050 1210 : 1220 BE=0:GOSUB 8020 1230 GOSUB 3020:REM VUL IN TOT GI 1240 FOR GW=2 TO GI:GT(GW)=1:NEXT GW:IF GI=91 THEN 1270 1250 FOR GW=GI+1 TO 91:GT(GW)=0 1260 NEXT GW 1270 SA=0:SB=0:REM SCORES 1280 GOSUB 9020:GOSUB 6020:REM PRINT DE STAND 1290 FOR I=1 TO 30*TF:NEXT I 1300 : 1320 VE=21:HO=0:GOSUB 110:PRINT SP$:PRINT SP$:PRINT SP$; 1330 VE=21:HO=0:GOSUB 110 1340 PRINT"Speler "CHR$(65+BE)" kiest: "; 1350 GOSUB 4020 1360 HG=16:GI=0:TE=30:TP=0:CS=1:GOTO 1470 1370 GOSUB 5020:REM GET KR 1380 IF IN$=""THEN 1440 1390 IF KR=13 THEN 1500 1400 KR=KR-48:IF KR<0 OR KR>9 THEN 1440 1410 GI=10*GI+KR 1420 VE=21:HO=16:GOSUB 110:SR=GI:GOSUB 300:PRINT SR$ 1430 HG=HG+1 1440 TE=TE+1:IF TE+TE91 THEN 1550 1530 IF GT(GI)=1 THEN 1600 1540 : 1550 VE=22:HO=0:GOSUB 110 1560 PRINT"Jammer "CHR$(65+BE)", maar dat getal is al weg." 1570 PRINT" K i e s o p n i e u w ! ! ! "; 1580 FOR I=1 TO 40*TF:NEXT I 1590 GOTO 1320 1600 PRINT"en krijgt "; 1610 SR=GI:GOSUB 300 1620 PRINT SR$;" pt." 1630 GW=GI:GOSUB 7020 1640 PRINT" " 1650 : 1660 FOR I=1 TO 15*TF:NEXT I 1670 : 1680 VE=23:HO=0:GOSUB 110:PRINT"Speler "CHR$(66-BE); 1690 SR=TP:GOSUB 300:PRINT" krijgt ";SR$;" pt"; 1700 FOR I=1 TO 20*TF:NEXT I 1710 BR=9 1720 FOR GW=2 TO GI-1 1730 :IF GT(GW)=0 THEN 1870 1740 :IF GI<>GW*INT(GI/GW)THEN 1870 1750 :CT=2:CN=0:SR=GW:GOSUB 310 1760 :GOSUB 7020:REM POSITIONEER 1770 :GOSUB 250:FOR I=1 TO 20 1780 ::GOSUB 110:IF 2*INT(I/2)=I THEN 1800 1790 ::PRINT SR$;:GOTO 1810 1800 ::PRINT" "; 1810 ::FOR II=1 TO 5:NEXT II 1820 :NEXT I 1830 :TP=TP+GW 1840 :VE=23:HO=16:GOSUB 110 1850 :SR=TP:GOSUB 300 1860 :PRINT SR$;" pt."; 1870 NEXT GW 1880 GW=GI:GOSUB 7020:PRINT" "; 1890 IF BE=0 THEN SA=SA+GI:SB=SB+TP 1900 IF BE=1 THEN SB=SB+GI:SA=SA+TP 1910 BE=1-BE 1920 FOR J=2 TO 91:IF GT(J)=1 THEN J=101:GOTO 1280 1930 NEXT J 1940 : 1950 :GOSUB 100:PRINT" * * * E I N D S T A N D * * * " 1960 :PRINT" ******************************* " 1970 PRINT:PRINT 1980 PRINT"Speler A heeft "SA" punten," 1990 PRINT:PRINT 2000 PRINT"Speler B heeft "SB" punten." 2010 W$="":IF SA>SB THEN W$="a" 2020 IF SA""THEN 4020 4030 RETURN 4040 : 5000 :REM SR GET ASCII CHR KR 5010 : 5020 GOSUB 200:IF IN$=""THEN RETURN 5030 KR=ASC(IN$) 5040 IF KR>95 THEN KR=KR-32:GOTO 5040 5050 RETURN 5060 : 6000 :REM SR PRINT DE STAND 6010 : 6020 VE=6:HO=32:GOSUB 110:SR=SA:GOSUB 300:PRINT SR$ 6030 VE=17:GOSUB 110:SR=SB:GOSUB 300:PRINT SR$ 6040 GOSUB 250 6050 FOR I=1 TO 3*TF:NEXT I 6060 RETURN 6070 : 7000 :REM SR POSITIONEER VOOR GW 7010 : 7020 RE=INT((GW-2)/9):REM REGEL 7030 KO=GW-9*RE:REM KOLOM 7040 VE=RE+RE+1:HO=3*KO-5:GOSUB 110 7050 GT(GW)=0 7060 RETURN 7070 : 8000 :REM SR ZET NIEUWE TEKENING 8010 : 8020 GOSUB 100 8030 BO$="+--------------------------+" 8040 TR$="!--+--+--+--+--+--+--+--+--!" 8050 CR$="! ! ! ! ! ! ! ! ! !" 8060 PRINT BO$:PRINT CR$ 8070 FOR I=1 TO 9:PRINT TR$:PRINT CR$:NEXT I 8080 PRINT BO$ 8090 RETURN 8100 : 9000 REM SUBROUTINE STANDVENSTERS 9010 : 9020 FOR I=0 TO 1 9030 HO=30:VE=1+11*I:GOSUB 110:PRINT"+--------+" 9040 VE=VE+1:GOSUB 110 9050 PRINT"!Speler ";CHR$(65+I);"!" 9060 VE=VE+1:GOSUB 110:PRINT"! !" 9070 VE=VE+1:GOSUB 110:PRINT"! Stand: !" 9080 FOR II=1 TO 3 9090 VE=VE+1:GOSUB 110:PRINT"! !" 9100 NEXT II 9110 VE=VE+1:GOSUB 110:PRINT"+--------+" 9120 NEXT I 9130 RETURN 9140 : 10000 SP$=" " 10010 DIM GT(91) 10020 TF=30:REM TIJDFACTOR, KIES 10030 :REM MEER BIJ SNELLE- 10040 :REM MINDER BIJ LANGZAME- 10050 :REM COMPUTERS 10060 GOSUB 100 10070 PRINT" D E L E R S" 10080 GOSUB 11020 10090 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 10100 PRINT" Een leerzaam spel voor twee personen" 10110 GOSUB 11020 10120 PRINT:PRINT:PRINT:PRINT 10130 PRINT" Wil je uitleg ?" 10140 PRINT:PRINT" (antwoord met J of N )" 10150 GOSUB 4020:REM FLUSH BUFFER 10160 GOSUB 5020:IF IN$=""THEN 10160 10170 IN$=CHR$(KR) 10180 IF IN$="n"OR IN$="N"THEN 1050 10190 IF IN$<>"j"AND IN$<>"J"THEN 10160 10200 GOSUB 100:GOSUB 20020:GOSUB 100:GI=25:GOTO 1220 10210 GOTO 1050:REM PROGRAMMASTART 10220 : 11000 :REM SR WACHT TOT IN$ 11010 : 11020 FOR I=1 TO 100 11030 GOSUB 200:IF IN$<>""THEN I=100 11040 NEXT I 11050 RETURN 11060 : 20000 :SRUITLEG 20010 : 20020 RESTORE:CO=1 20030 GOSUB 4020:REM FLUSH BUFFER 20040 READ P$ 20050 IF P$="*"THEN FOR I=1 TO 1000:NEXT I:GOSUB 100:GOTO 20040 20060 GOSUB 200:IF IN$=""THEN 20080 20070 RETURN 20080 IF P$<>"$"THEN 20140 20090 FOR I=1 TO 800:NEXT I 20100 GOSUB 8020:REM PRINT SCHEMA 20110 GI=91:GOSUB 3000:REM VUL HET 20120 FOR I=1 TO 2000:NEXT I 20130 GOTO 20040 20140 IF P$="#"THEN RETURN 20150 FOR I=1 TO LEN(P$) 20160 T$=MID$(P$,I,1) 20170 IF T$="&"THEN PRINT:GOTO 20210 20180 IF T$="*"THEN GOSUB 120:GOTO 20210 20190 IF T$="="THEN GOSUB 110:GOTO 20210 20200 :PRINT T$; 20210 :FOR II=1 TO TF:NEXT II 20220 NEXT I 20230 FOR II=1 TO 200:NEXT II:PRINT:GOTO 20040 20240 : 30000 DATA" D E L E R S " 30010 DATA"&&Een spel voor twee personen." 30020 DATA"&De speler die aan de beurt is mag een" 30030 DATA"getal kiezen uit het schema." 30040 DATA"&&Maar je hebt het spel nog niet gespeeld" 30050 DATA"dus ik kan je beter het schema eens" 30060 DATA"laten zien ..." 30070 DATA"&&Een ogenblikje," 30080 DATA"$" :REM SCHEMA 30090 DATA"*" 30100 DATA"&&Gezien ?" 30110 DATA"&Je zag in het schema dus alle getallen" 30120 DATA"van 2 tot 91." 30130 DATA"&De speler die aan de beurt is mag een" 30140 DATA"getal kiezen uit het schema." 30150 DATA"&En krijgt dan net zoveel punten als dat" 30160 DATA"getal is," 30170 DATA"&&&&&Dus als hij 60 kiest krijgt hij ook 60" 30180 DATA"punten." 30190 DATA"&&Maar....." 30200 DATA"*" 30210 DATA"Het is nog wat ingewikkelder." 30220 DATA"&Als je bijvoorbeeld het getal 60 kiest," 30230 DATA"&dan heb ik al snel uitgezocht dat 60" 30240 DATA"een aantal delers heeft," 30250 DATA"&Namelijk: 2, 3, 4, 5, 6, 10, 12, 15," 30260 DATA"20 en 30" 30270 DATA"&Opgeteld is dat 107." 30280 DATA"&Dat betekent dan dat de andere speler" 30290 DATA"107 punten er bij krijgt." 30300 DATA"*" 30310 DATA"Dan is er nog iets...." 30320 DATA"&&Terwijl je aan het denken bent welk" 30330 DATA"getal je zult kiezen, " 30340 DATA"tikt de tijd verder. " 30350 DATA"Elke seconde een seconde erbij..... " 30360 DATA"& *1"," =2"," =3"," =4" 30370 DATA" =5"," =6"," =7"," =8" 30380 DATA" = " 30390 DATA"&&Je ziet de tijd dus in het beeld." 30400 DATA"Elke seconde denktijd levert eveneens " 30410 DATA"een punt voor de ander op." 30420 DATA" " 30430 DATA"*" 30440 DATA"Samengevat:" 30450 DATA"&Wie aan de beurt is krijgt als punten" 30460 DATA"het gekozen getal, " 30470 DATA"&&de ander krijgt als punten het aantal" 30480 DATA"seconden bedenktijd, " 30490 DATA"&plus de som van alle delers in het" 30500 DATA"gekozen getal. " 30510 DATA"&Maar dat geldt alleen voor de delers" 30520 DATA"die nog in het schema staan :" 30521 REM 10020-10050 EVEN AAN ? 30522 REM MIJNE, PAST U DAN REGELS 30523 REM OF LANGZAMER LOOPT DAN DE 30524 REM ALS UW COMPUTER SNELLER 30525 REM 30526 REM AANGEPAST VOOR BASICODE-2 30527 REM DEZE VERSIE DD. 821227 30528 REM 30529 REM EINDHOVEN 30530 REM J. HAUBRICH 30531 REM 30532 REM EEN PROGRAMMA VAN: 30533 REM 30534 REM D E L E R S 30535 REM 30536 REM ORIGINELE VERSIE DD 820127 30540 DATA"&zodra een getal is gekozen of als deler" 30550 DATA"is weggegeven, verdwijnt het. " 30560 DATA"*" 30570 DATA"Ja, en dan nog iets." 30580 DATA" " 30590 DATA"&Af en toe moet je een getal aan mij","opgeven," 30600 DATA"dat doe je door de cijfers een voor een" 30610 DATA"aan te tikken," 30620 DATA" " 30630 DATA"en na het laatste cijfer op de " 30640 DATA"toets te drukken." 30650 DATA" " 30660 DATA"Als je wat moet intikken, dan geef ik" 30670 DATA"dat aan als volgt:" 30680 DATA"& *x" 30690 DATA"=o","=x","=o","=x","=o","=x" 30700 DATA"=o","=x","=o","=x","=o","=x" 30710 DATA" =x" 30720 DATA"= " 30730 DATA"Gesnapt ? " 30740 DATA"&als het teken knippert dan wacht ik" 30750 DATA"totdat je een toets aanraakt." 30760 DATA"&&Vergeet niet, als laatste op de" 30770 DATA" toets te drukken." 30780 DATA"*" 30790 DATA"Waarschijnlijk is het nog niet allemaal" 30800 DATA"helemaal duidelijk, maar dat geeft niet." 30810 DATA"&&&&Als dat nodig is help ik je wel." 30820 DATA"&&&We zullen maar gewoon beginnen." 30830 DATA" " 30840 DATA"#" :REM EINDE DATA 30850 DATA"%" 30860 :