home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols200 / vol235 / delers.bas < prev    next >
Encoding:
BASIC Source File  |  1994-07-13  |  11.5 KB  |  382 lines

  1. 1 REM BASICODE 2 ROUTINES DOOR HENK WEVERS
  2. 2 REM NADERE INLICHTINGEN BASICODE
  3. 3 REM NOS, HOBBYSCOOP HILVERSUM  
  4. 5 PRINT CHR$(26);:WIDTH(255)
  5. 10 GOTO 1000
  6. 20 GOTO 1010
  7. 100 PRINT CHR$(26);:RETURN
  8. 110 REM
  9. 111 IF HO>51 THEN HO=51
  10. 112 IF VE>23 THEN VE=23
  11. 113 PRINT CHR$(27);"=";CHR$(VE+32);CHR$(HO+32);
  12. 115 RETURN
  13. 120 HO=PEEK(&HEF5A):VE=PEEK(&HEF5B)-&HF0
  14. 121 VE=VE*2
  15. 122 IF HO>127 THEN HO=HO-128:VE=VE+1
  16. 123 VE=VE-PEEK(&HEF62):IF VE<0 THEN VE=32+VE
  17. 124 RETURN
  18. 200 IN$=INKEY$:RETURN
  19. 210 GOSUB 200:IF IN$="" THEN 210
  20. 211 RETURN
  21. 250 PRINT CHR$(7);:RETURN
  22. 260 RV=RND(1):RETURN
  23. 270 FR=FRE(2):RETURN
  24. 300 SR$=STR$(SR)
  25. 301 Q7=LEN(SR$):IF Q7=0 THEN RETURN
  26. 302 IF RIGHT$(SR$,1)<>" " THEN 304
  27. 303 SR$=LEFT$(SR$,Q7-1):GOTO 301
  28. 304 IF LEFT$(SR$,1)<>" " THEN RETURN
  29. 305 SR$=RIGHT$(SR$,Q7-1):GOTO 301
  30. 310 Q4=SR:IF CN<>0 THEN 316
  31. 312 SR=INT(SR+.5):GOSUB 300:GOTO 330
  32. 316 Q5=SGN(SR):SR=ABS(SR):Q8=INT(SR):Q9=SR-Q8
  33. 318 FOR Q6=1 TO CN:Q9=Q9*10:NEXT Q6
  34. 320 Q9=INT(Q9+.5):SR=Q9:GOSUB 300
  35. 322 Q9$=RIGHT$("00000000000000000000"+SR$,CN)
  36. 324 IF Q8=0 AND Q9=0 THEN Q5=1
  37. 326 SR=Q8:GOSUB 300:IF Q5=-1 THEN SR$="-"+SR$
  38. 328 SR$=SR$+"."+Q9$
  39. 330 IF LEN(SR$)<=CT THEN 334
  40. 332 SR$=LEFT$("********************",CT):GOTO 340
  41. 334 SR$=RIGHT$("                    "+SR$,CT)
  42. 340 SR=Q4:RETURN
  43. 350 LPRINT SR$;:RETURN
  44. 360 LPRINT:RETURN
  45. 1000 A=100:GOTO 20
  46. 1010 GOTO 10000:REM INITIALISEER
  47. 1020 :
  48. 1030 :REM START VAN HET HOOFDPROGRAMMA
  49. 1040 :
  50. 1050 GOSUB 100:PRINT"Goed, dan gaan we beginnen."
  51. 1060 PRINT:PRINT
  52. 1070 PRINT"Jullie moeten afspreken wie A en B is,"
  53. 1080 PRINT
  54. 1090 PRINT"en ik wil graag weten welk het hoogste"
  55. 1100 PRINT"getal in het schema is waarmee jullie"
  56. 1110 PRINT"willen spelen.":PRINT
  57. 1120 PRINT"Kies dat getal, maximaal 91.";
  58. 1130 INPUT GI
  59. 1140 IF GI<92 AND GI>2 THEN 1220
  60. 1150 PRINT:PRINT"Je keuze was ";GI;" en dat ligt toch niet"
  61. 1160 PRINT"tussen 2 en 92 ?"
  62. 1170 PRINT:PRINT
  63. 1180 PRINT"K i e s   o p n i e u w "
  64. 1190 FOR I=1 TO 20*TF:NEXT I
  65. 1200 GOTO 1050
  66. 1210 :
  67. 1220 BE=0:GOSUB 8020
  68. 1230 GOSUB 3020:REM VUL IN TOT GI
  69. 1240 FOR GW=2 TO GI:GT(GW)=1:NEXT GW:IF GI=91 THEN 1270
  70. 1250 FOR GW=GI+1 TO 91:GT(GW)=0
  71. 1260 NEXT GW
  72. 1270 SA=0:SB=0:REM SCORES
  73. 1280 GOSUB 9020:GOSUB 6020:REM PRINT DE STAND
  74. 1290 FOR I=1 TO 30*TF:NEXT I
  75. 1300 :
  76. 1320 VE=21:HO=0:GOSUB 110:PRINT SP$:PRINT SP$:PRINT SP$;
  77. 1330 VE=21:HO=0:GOSUB 110
  78. 1340 PRINT"Speler "CHR$(65+BE)" kiest: ";
  79. 1350 GOSUB 4020
  80. 1360 HG=16:GI=0:TE=30:TP=0:CS=1:GOTO 1470
  81. 1370 GOSUB 5020:REM GET KR
  82. 1380 IF IN$=""THEN 1440
  83. 1390 IF KR=13 THEN 1500
  84. 1400 KR=KR-48:IF KR<0 OR KR>9 THEN 1440
  85. 1410 GI=10*GI+KR
  86. 1420 VE=21:HO=16:GOSUB 110:SR=GI:GOSUB 300:PRINT SR$
  87. 1430 HG=HG+1
  88. 1440 TE=TE+1:IF TE+TE<TF THEN 1370
  89. 1450 TE=0:HO=HG:VE=21:GOSUB 110
  90. 1460 PRINT MID$("ox",CS,1):CS=3-CS
  91. 1470 TP=TP+CS-1
  92. 1480 VE=10:HO=30:GOSUB 110:PRINT"Tyd: ";:SR=TP
  93. 1490 GOSUB 300:PRINT SR$;" ":GOTO 1370
  94. 1500 REM     GETAL IS BINNEN
  95. 1510 HO=HG:VE=21:GOSUB 110:PRINT" ";
  96. 1520 IF GI>91 THEN 1550
  97. 1530 IF GT(GI)=1 THEN 1600
  98. 1540 :
  99. 1550 VE=22:HO=0:GOSUB 110
  100. 1560 PRINT"Jammer "CHR$(65+BE)", maar dat getal is al weg."
  101. 1570 PRINT"  K i e s    o p n i e u w ! ! !    ";
  102. 1580 FOR I=1 TO 40*TF:NEXT I
  103. 1590 GOTO 1320
  104. 1600 PRINT"en krijgt ";
  105. 1610 SR=GI:GOSUB 300
  106. 1620 PRINT SR$;" pt."
  107. 1630 GW=GI:GOSUB 7020
  108. 1640 PRINT"  "
  109. 1650 :
  110. 1660 FOR I=1 TO 15*TF:NEXT I
  111. 1670 :
  112. 1680 VE=23:HO=0:GOSUB 110:PRINT"Speler "CHR$(66-BE);
  113. 1690 SR=TP:GOSUB 300:PRINT" krijgt ";SR$;" pt";
  114. 1700 FOR I=1 TO 20*TF:NEXT I
  115. 1710 BR=9
  116. 1720 FOR GW=2 TO GI-1
  117. 1730 :IF GT(GW)=0 THEN 1870
  118. 1740 :IF GI<>GW*INT(GI/GW)THEN 1870
  119. 1750 :CT=2:CN=0:SR=GW:GOSUB 310
  120. 1760 :GOSUB 7020:REM POSITIONEER
  121. 1770 :GOSUB 250:FOR I=1 TO 20
  122. 1780 ::GOSUB 110:IF 2*INT(I/2)=I THEN 1800
  123. 1790 ::PRINT SR$;:GOTO 1810
  124. 1800 ::PRINT"  ";
  125. 1810 ::FOR II=1 TO 5:NEXT II
  126. 1820 :NEXT I
  127. 1830 :TP=TP+GW
  128. 1840 :VE=23:HO=16:GOSUB 110
  129. 1850 :SR=TP:GOSUB 300
  130. 1860 :PRINT SR$;" pt.";
  131. 1870 NEXT GW
  132. 1880 GW=GI:GOSUB 7020:PRINT"  ";
  133. 1890 IF BE=0 THEN SA=SA+GI:SB=SB+TP
  134. 1900 IF BE=1 THEN SB=SB+GI:SA=SA+TP
  135. 1910 BE=1-BE
  136. 1920 FOR J=2 TO 91:IF GT(J)=1 THEN J=101:GOTO 1280
  137. 1930 NEXT J
  138. 1940 :
  139. 1950 :GOSUB 100:PRINT" * * *  E I N D S T A N D  * * * "
  140. 1960 :PRINT" ******************************* "
  141. 1970 PRINT:PRINT
  142. 1980 PRINT"Speler A heeft "SA" punten,"
  143. 1990 PRINT:PRINT
  144. 2000 PRINT"Speler B heeft "SB" punten."
  145. 2010 W$="":IF SA>SB THEN W$="a"
  146. 2020 IF SA<SB THEN W$="b"
  147. 2030 IF W$=""THEN 2070
  148. 2040 PRINT:PRINT:PRINT
  149. 2050 PRINT"Dus "W$" heeft gewonnen !"
  150. 2060 GOTO 2090
  151. 2070 PRINT:PRINT:PRINT
  152. 2080 PRINT"  G e l i j k s p e l !"
  153. 2090 FOR I=1 TO 120*TF:NEXT I
  154. 2100 VE=20:HO=0:GOSUB 110:PRINT"Nog een spelletje ?"
  155. 2110 GOSUB 4020
  156. 2120 PRINT:PRINT"tik J of N"
  157. 2130 GOSUB 5020:IF IN$=""THEN 2130
  158. 2140 IN$=CHR$(KR)
  159. 2150 IF IN$="j"OR IN$="J"THEN 1050
  160. 2160 PRINT"Jammer, d a a a a g....
  161. 2170 END
  162. 2180 :
  163. 3000 :REM SUBROUTINE VUL IN TOT GI
  164. 3010 :
  165. 3020 CT=2:CN=0
  166. 3030 FOR SR=2 TO GI:GW=SR
  167. 3040 :GOSUB 7020:GOSUB 310:PRINT SR$
  168. 3050 NEXT SR
  169. 3060 RETURN
  170. 3070 :
  171. 4000 :REM SR LEDIG INPUTBUFFER
  172. 4010 :
  173. 4020 GOSUB 200:IF IN$<>""THEN 4020
  174. 4030 RETURN
  175. 4040 :
  176. 5000 :REM SR GET ASCII CHR KR
  177. 5010 :
  178. 5020 GOSUB 200:IF IN$=""THEN RETURN
  179. 5030 KR=ASC(IN$)
  180. 5040 IF KR>95 THEN KR=KR-32:GOTO 5040
  181. 5050 RETURN
  182. 5060 :
  183. 6000 :REM SR PRINT DE STAND
  184. 6010 :
  185. 6020 VE=6:HO=32:GOSUB 110:SR=SA:GOSUB 300:PRINT SR$
  186. 6030 VE=17:GOSUB 110:SR=SB:GOSUB 300:PRINT SR$
  187. 6040 GOSUB 250
  188. 6050 FOR I=1 TO 3*TF:NEXT I
  189. 6060 RETURN
  190. 6070 :
  191. 7000 :REM SR POSITIONEER VOOR GW
  192. 7010 :
  193. 7020 RE=INT((GW-2)/9):REM REGEL
  194. 7030 KO=GW-9*RE:REM KOLOM
  195. 7040 VE=RE+RE+1:HO=3*KO-5:GOSUB 110
  196. 7050 GT(GW)=0
  197. 7060 RETURN
  198. 7070 :
  199. 8000 :REM SR ZET NIEUWE TEKENING
  200. 8010 :
  201. 8020 GOSUB 100
  202. 8030 BO$="+--------------------------+"
  203. 8040 TR$="!--+--+--+--+--+--+--+--+--!"
  204. 8050 CR$="!  !  !  !  !  !  !  !  !  !"
  205. 8060 PRINT BO$:PRINT CR$
  206. 8070 FOR I=1 TO 9:PRINT TR$:PRINT CR$:NEXT I
  207. 8080 PRINT BO$
  208. 8090 RETURN
  209. 8100 :
  210. 9000 REM SUBROUTINE STANDVENSTERS
  211. 9010 :
  212. 9020 FOR I=0 TO 1
  213. 9030 HO=30:VE=1+11*I:GOSUB 110:PRINT"+--------+"
  214. 9040 VE=VE+1:GOSUB 110
  215. 9050 PRINT"!Speler ";CHR$(65+I);"!"
  216. 9060 VE=VE+1:GOSUB 110:PRINT"!        !"
  217. 9070 VE=VE+1:GOSUB 110:PRINT"! Stand: !"
  218. 9080 FOR II=1 TO 3
  219. 9090 VE=VE+1:GOSUB 110:PRINT"!        !"
  220. 9100 NEXT II
  221. 9110 VE=VE+1:GOSUB 110:PRINT"+--------+"
  222. 9120 NEXT I
  223. 9130 RETURN
  224. 9140 :
  225. 10000 SP$="                                       "
  226. 10010 DIM GT(91)
  227. 10020 TF=30:REM TIJDFACTOR, KIES
  228. 10030 :REM MEER BIJ SNELLE-
  229. 10040 :REM MINDER BIJ LANGZAME-
  230. 10050 :REM   COMPUTERS
  231. 10060 GOSUB 100
  232. 10070 PRINT"        D   E   L   E   R   S"
  233. 10080 GOSUB 11020
  234. 10090 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  235. 10100 PRINT" Een leerzaam spel voor twee personen"
  236. 10110 GOSUB 11020
  237. 10120 PRINT:PRINT:PRINT:PRINT
  238. 10130 PRINT" Wil je uitleg ?"
  239. 10140 PRINT:PRINT"                (antwoord met J of N )"
  240. 10150 GOSUB 4020:REM FLUSH BUFFER
  241. 10160 GOSUB 5020:IF IN$=""THEN 10160
  242. 10170 IN$=CHR$(KR)
  243. 10180 IF IN$="n"OR IN$="N"THEN 1050
  244. 10190 IF IN$<>"j"AND IN$<>"J"THEN 10160
  245. 10200 GOSUB 100:GOSUB 20020:GOSUB 100:GI=25:GOTO 1220
  246. 10210 GOTO 1050:REM PROGRAMMASTART
  247. 10220 :
  248. 11000 :REM SR WACHT TOT IN$
  249. 11010 :
  250. 11020 FOR I=1 TO 100
  251. 11030 GOSUB 200:IF IN$<>""THEN I=100
  252. 11040 NEXT I
  253. 11050 RETURN
  254. 11060 :
  255. 20000 :SRUITLEG
  256. 20010 :
  257. 20020 RESTORE:CO=1
  258. 20030 GOSUB 4020:REM FLUSH BUFFER
  259. 20040 READ P$
  260. 20050 IF P$="*"THEN FOR I=1 TO 1000:NEXT I:GOSUB 100:GOTO 20040
  261. 20060 GOSUB 200:IF IN$=""THEN 20080
  262. 20070 RETURN
  263. 20080 IF P$<>"$"THEN 20140
  264. 20090 FOR I=1 TO 800:NEXT I
  265. 20100 GOSUB 8020:REM PRINT SCHEMA
  266. 20110 GI=91:GOSUB 3000:REM VUL HET
  267. 20120 FOR I=1 TO 2000:NEXT I
  268. 20130 GOTO 20040
  269. 20140 IF P$="#"THEN RETURN
  270. 20150 FOR I=1 TO LEN(P$)
  271. 20160 T$=MID$(P$,I,1)
  272. 20170 IF T$="&"THEN PRINT:GOTO 20210
  273. 20180 IF T$="*"THEN GOSUB 120:GOTO 20210
  274. 20190 IF T$="="THEN GOSUB 110:GOTO 20210
  275. 20200 :PRINT T$;
  276. 20210 :FOR II=1 TO TF:NEXT II
  277. 20220 NEXT I
  278. 20230 FOR II=1 TO 200:NEXT II:PRINT:GOTO 20040
  279. 20240 :
  280. 30000 DATA"          D E L E R S  "
  281. 30010 DATA"&&Een spel voor twee personen."
  282. 30020 DATA"&De speler die aan de beurt is mag een"
  283. 30030 DATA"getal kiezen uit het schema."
  284. 30040 DATA"&&Maar je hebt het spel nog niet gespeeld"
  285. 30050 DATA"dus ik kan je beter het schema eens"
  286. 30060 DATA"laten zien ..."
  287. 30070 DATA"&&Een ogenblikje,"
  288. 30080 DATA"$"  :REM SCHEMA
  289. 30090 DATA"*"
  290. 30100 DATA"&&Gezien ?"
  291. 30110 DATA"&Je zag in het schema dus alle getallen"
  292. 30120 DATA"van 2 tot 91."
  293. 30130 DATA"&De speler die aan de beurt is mag een"
  294. 30140 DATA"getal kiezen uit het schema."
  295. 30150 DATA"&En krijgt dan net zoveel punten als dat"
  296. 30160 DATA"getal is,"
  297. 30170 DATA"&&&&&Dus als hij 60 kiest krijgt hij ook 60"
  298. 30180 DATA"punten."
  299. 30190 DATA"&&Maar....."
  300. 30200 DATA"*"
  301. 30210 DATA"Het is nog wat ingewikkelder."
  302. 30220 DATA"&Als je bijvoorbeeld het getal 60 kiest,"
  303. 30230 DATA"&dan heb ik al snel uitgezocht dat 60"
  304. 30240 DATA"een aantal delers heeft,"
  305. 30250 DATA"&Namelijk:   2, 3, 4, 5, 6, 10, 12, 15,"
  306. 30260 DATA"20 en 30"
  307. 30270 DATA"&Opgeteld is dat 107."
  308. 30280 DATA"&Dat betekent dan dat de andere speler"
  309. 30290 DATA"107 punten er bij krijgt."
  310. 30300 DATA"*"
  311. 30310 DATA"Dan is er nog iets...."
  312. 30320 DATA"&&Terwijl je aan het denken bent welk"
  313. 30330 DATA"getal je zult kiezen,   "
  314. 30340 DATA"tikt de tijd verder.   "
  315. 30350 DATA"Elke seconde een seconde erbij..... "
  316. 30360 DATA"&    *1","    =2","    =3","    =4"
  317. 30370 DATA"    =5","    =6","    =7","    =8"
  318. 30380 DATA"    = "
  319. 30390 DATA"&&Je ziet de tijd dus in het beeld."
  320. 30400 DATA"Elke seconde denktijd levert eveneens  "
  321. 30410 DATA"een punt voor de ander op."
  322. 30420 DATA"                                            "
  323. 30430 DATA"*"
  324. 30440 DATA"Samengevat:"
  325. 30450 DATA"&Wie aan de beurt is krijgt als punten"
  326. 30460 DATA"het gekozen getal,       "
  327. 30470 DATA"&&de ander krijgt als punten het aantal"
  328. 30480 DATA"seconden bedenktijd,      "
  329. 30490 DATA"&plus de som van alle delers in het"
  330. 30500 DATA"gekozen getal.          "
  331. 30510 DATA"&Maar dat geldt alleen voor de delers"
  332. 30520 DATA"die nog in het schema staan :"
  333. 30521 REM  10020-10050  EVEN AAN ?
  334. 30522 REM  MIJNE, PAST U DAN REGELS
  335. 30523 REM  OF LANGZAMER LOOPT DAN DE
  336. 30524 REM  ALS UW COMPUTER SNELLER
  337. 30525 REM
  338. 30526 REM  AANGEPAST VOOR BASICODE-2
  339. 30527 REM  DEZE VERSIE DD. 821227
  340. 30528 REM
  341. 30529 REM        EINDHOVEN
  342. 30530 REM       J. HAUBRICH
  343. 30531 REM
  344. 30532 REM    EEN PROGRAMMA VAN:
  345. 30533 REM
  346. 30534 REM    D  E  L  E  R  S
  347. 30535 REM
  348. 30536 REM  ORIGINELE VERSIE DD 820127
  349. 30540 DATA"&zodra een getal is gekozen of als deler"
  350. 30550 DATA"is weggegeven, verdwijnt het.                 "
  351. 30560 DATA"*"
  352. 30570 DATA"Ja, en dan nog iets."
  353. 30580 DATA"                                   "
  354. 30590 DATA"&Af en toe moet je een getal aan mij","opgeven,"
  355. 30600 DATA"dat doe je door de cijfers een voor een"
  356. 30610 DATA"aan te tikken,"
  357. 30620 DATA"                           "
  358. 30630 DATA"en na het laatste cijfer op de <RETURN>"
  359. 30640 DATA"toets te drukken."
  360. 30650 DATA"                           "
  361. 30660 DATA"Als je wat moet intikken, dan geef ik"
  362. 30670 DATA"dat aan als volgt:"
  363. 30680 DATA"&   *x"
  364. 30690 DATA"=o","=x","=o","=x","=o","=x"
  365. 30700 DATA"=o","=x","=o","=x","=o","=x"
  366. 30710 DATA"   =x"
  367. 30720 DATA"= "
  368. 30730 DATA"Gesnapt ?  "
  369. 30740 DATA"&als het teken knippert dan wacht ik"
  370. 30750 DATA"totdat je een toets aanraakt."
  371. 30760 DATA"&&Vergeet niet, als laatste op de"
  372. 30770 DATA" <RETURN> toets te drukken."
  373. 30780 DATA"*"
  374. 30790 DATA"Waarschijnlijk is het nog niet allemaal"
  375. 30800 DATA"helemaal duidelijk, maar dat geeft niet."
  376. 30810 DATA"&&&&Als dat nodig is help ik je wel."
  377. 30820 DATA"&&&We zullen maar gewoon beginnen."
  378. 30830 DATA"                          "
  379. 30840 DATA"#"   :REM EINDE DATA
  380. 30850 DATA"%"
  381. 30860 :
  382. ullen maar gewoon