home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine: Run 2 / run2.zip / NIM.BAS < prev    next >
BASIC Source File  |  2014-09-03  |  3KB  |  71 lines

  1. 100 REM HET SPEL NIM - GWBASIC MONO - (C) NICO BAAIJENS
  2. 110 CLS:KEY OFF:COLOR 10,0:W=1:DIM A(5),B(100,10),D(2):RANDOMIZE TIMER
  3. 120 LOCATE 3,1:PRINT STRING$(80,196);:LOCATE 24,1:PRINT STRING$(80,196);
  4. 130 LOCATE 1,38:PRINT "NIM":LOCATE 2,27:PRINT "Pak de laatste rij en win!"
  5. 140 FOR Z=1 TO 23:LOCATE Z,1:PRINT CHR$(179):LOCATE Z,80:PRINT CHR$(179);:NEXT
  6. 150 LOCATE 24,1:PRINT CHR$(192);:LOCATE 24,80:PRINT CHR$(217);:COLOR 14,0
  7. 160 N=4:A(1)=7:A(2)=5:A(3)=3:A(4)=1:V=7:WW=4:FOR Z=1 TO 4
  8. 170 LOCATE Z*5+1,15:PRINT "RIJ";Z:NEXT Z:FOR Z=1 TO 4:FOR A=1 TO V:L=L+5
  9. 180 LOCATE WW,20+L:COLOR 12,0:PRINT CHR$(254):NEXT:COLOR 14,0:L=0:FOR A=1 TO 3
  10. 190 FOR B=1 TO V:L=L+5:LOCATE WW+A,20+L:PRINT CHR$(179):NEXT B:L=0:NEXT A
  11. 200 L=0:V=V-2:WW=WW+5:NEXT Z
  12. 210 SOUND 1250,2:LOCATE 25,1:PRINT "Begint u eerst? (j/n) ";
  13. 220 I$=INKEY$:IF I$="" THEN 220 ELSE IF INSTR("JjNn",I$)<3 THEN 640
  14. 230 GOTO 340
  15. 240 C=0:FOR I=1 TO N:IF A(I)=0 THEN 260 ELSE C=C+1
  16. 250 IF C=3 THEN 300 ELSE D(C)=I
  17. 260 NEXT I
  18. 270 IF C=2 THEN 330 ELSE IF A(D(1))>1 THEN 290
  19. 280 GOSUB 790:LOCATE 13,32:PRINT "PC heeft verloren";:END
  20. 290 GOSUB 790:LOCATE 13,32:PRINT "PC heeft gewonnen";:END
  21. 300 C=0:FOR I=1 TO N:IF A(I)>1 THEN 340
  22. 310 IF A(I)=0 THEN 320 ELSE C=C+1
  23. 320 NEXT I:IF C/2<>INT(C/2) THEN 280
  24. 330 IF A(D(1))=1 THEN 290 ELSE IF A(D(2))=1 THEN 290
  25. 340 FOR I=1 TO N:E=A(I):FOR J=0 TO 10:F=E/2:B(I,J)=2*(F-INT(F))
  26. 350 E=INT(F):NEXT J,I
  27. 360 FOR J=10 TO 0 STEP -1:C=O:H=0:FOR I=1 TO N:IF B(I,J)=0 THEN 380
  28. 370 C=C+1:IF A(I)<=H THEN 380 ELSE H=A(I):G=I
  29. 380 NEXT I
  30. 390 IF C/2<>INT(C/2) THEN 460
  31. 400 NEXT J
  32. 410 E=INT(N*RND(1)+1)
  33. 420 IF A(E)=0 THEN 410
  34. 430 F=INT(A(E)*RND(1)+1)
  35. 440 A(E)=A(E)-F
  36. 450 GOTO 600
  37. 460 A(G)=0:FOR J=0 TO 10:B(G,J)=0:C=0
  38. 470 FOR I=1 TO N:IF B(I,J)=0 THEN 490
  39. 480 C=C+1
  40. 490 NEXT I
  41. 500 A(G)=A(G)+2*(C/2-INT(C/2))*2^J
  42. 510 NEXT J
  43. 520 IF W=1 THEN 600
  44. 530 C=0:FOR I=1 TO N
  45. 540 IF A(I)>1 THEN 600
  46. 550 IF A(I)=0 THEN 570
  47. 560 C=C+1
  48. 570 NEXT I
  49. 580 IF C/2<>INT(C/2) THEN 600
  50. 590 A(G)=1-A(G)
  51. 600 GOSUB 760
  52. 610 IF W=2 THEN 640
  53. 620 GOSUB 710
  54. 630 IF Z=1 THEN GOSUB 710:GOTO 290
  55. 640 GOSUB 790:LOCATE 25,1:PRINT "Welke rij?";
  56. 650 I$=INKEY$:IF I$="" THEN 650
  57. 660 IF I$="1" OR I$="2" OR I$="3" OR I$="4" THEN 670 ELSE BEEP:GOTO 640
  58. 670 X=VAL(I$):GOSUB 790:LOCATE 25,1:PRINT "Hoeveel lucifers?";
  59. 680 I$=INKEY$:IF I$="" THEN 680 ELSE Y=VAL(I$)
  60. 690 IF X>N OR X<1 OR X<>INT(X) OR Y>A(X) OR Y<1 OR Y<>INT(Y) THEN SOUND 500,1:GOSUB 780:GOTO 640
  61. 700 A(X)=A(X)-Y:GOSUB 710:GOSUB 760:IF Z=1 THEN 280 ELSE 230
  62. 710 Z=0:FOR I=1 TO N:IF A(I)=0 THEN 730
  63. 720 RETURN
  64. 730 NEXT I
  65. 740 Z=1
  66. 750 RETURN
  67. 760 RY=-1:G%=0:FOR A%=1 TO 4:RY=RY+5:FOR B%=0 TO 4
  68. 770 LOCATE RY+B%,25+5*A(A%):PRINT STRING$(5*(7-A(A%)),32):NEXT B%,A%:RETURN
  69. 780 GOSUB 790:LOCATE 25,1:PRINT "Kan niet...";:FOR E=1 TO 3000:NEXT:RETURN
  70. 790 LOCATE 25,1:PRINT SPACE$(79);:RETURN
  71.