home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine Extra: Special 2 / run-special-2.zip / NIM.BAS < prev    next >
BASIC Source File  |  1992-05-31  |  3KB  |  78 lines

  1. 100 REM HET SPEL NIM - GWBASIC MONO - (C) NICO BAAIJENS
  2. 110 W=1:DIM A(5),B(100,10),D(2):RANDOMIZE TIMER:CLS:KEY OFF
  3. 120 COLOR 15,12:LOCATE 3,1:PRINT STRING$(80,196);:LOCATE 24,1:PRINT STRING$(80,196);
  4. 130 COLOR 1,3:LOCATE 1,38:PRINT "NIM":LOCATE 2,27:COLOR 15,12: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 700
  14. 230 GOTO 380
  15. 240 C=0:FOR I=1 TO N:IF A(I)=0 THEN 270 ELSE C=C+1
  16. 250 IF C=3 THEN 310 ELSE D(C)=I
  17. 270 NEXT I
  18. 280 IF C=2 THEN 370 ELSE IF A(D(1))>1 THEN 300
  19. 290 GOSUB 880:LOCATE 13,32:PRINT "PC heeft verloren";:SP=SP+1
  20. 291 LOCATE 23,3:PRINT "Stand: ";PC;" - ";SP:GOTO 1000
  21. 300 GOSUB 880:LOCATE 13,32:PRINT "PC heeft gewonnen";:PC=PC+1
  22. 301 LOCATE 23,3:PRINT "Stand: ";PC;" - ";SP:GOTO 1000
  23. 310 C=0:FOR I=1 TO N:IF A(I)>1 THEN 380
  24. 320 IF A(I)=0 THEN 340 ELSE C=C+1
  25. 340 NEXT I:IF C/2<>INT(C/2) THEN 290
  26. 370 IF A(D(1))=1 THEN 300 ELSE IF A(D(2))=1 THEN 300
  27. 380 SOUND 250,3:GOSUB 880:SOUND 1000,2:LOCATE 25,1:PRINT "Mijn beurt...";
  28. 381 FOR I=1 TO N:E=A(I):FOR J=0 TO 10:F=E/2:B(I,J)=2*(F-INT(F))
  29. 390 E=INT(F):NEXT J,I
  30. 400 FOR J=10 TO 0 STEP -1:C=O:H=0:FOR I=1 TO N:IF B(I,J)=0 THEN 440
  31. 420 C=C+1:IF A(I)<=H THEN 440 ELSE H=A(I):G=I
  32. 440 NEXT I
  33. 450 IF C/2<>INT(C/2) THEN 520
  34. 460 NEXT J
  35. 470 E=INT(N*RND(1)+1)
  36. 480 IF A(E)=0 THEN 470
  37. 490 F=INT(A(E)*RND(1)+1)
  38. 500 A(E)=A(E)-F
  39. 510 GOTO 660
  40. 520 A(G)=0:FOR J=0 TO 10:B(G,J)=0:C=0
  41. 530 FOR I=1 TO N:IF B(I,J)=0 THEN 550
  42. 540 C=C+1
  43. 550 NEXT I
  44. 560 A(G)=A(G)+2*(C/2-INT(C/2))*2^J
  45. 570 NEXT J
  46. 580 IF W=1 THEN 660
  47. 590 C=0:FOR I=1 TO N
  48. 600 IF A(I)>1 THEN 660
  49. 610 IF A(I)=0 THEN 630
  50. 620 C=C+1
  51. 630 NEXT I
  52. 640 IF C/2<>INT(C/2) THEN 660
  53. 650 A(G)=1-A(G)
  54. 660 GOSUB 850
  55. 670 IF W=2 THEN 700
  56. 680 GOSUB 800
  57. 690 IF Z=1 THEN GOSUB 800:GOTO 300
  58. 700 GOSUB 880:LOCATE 25,1:PRINT "Uw beurt... Welke rij?";
  59. 710 I$=INKEY$:IF I$="" THEN 710
  60. 720 IF I$="1" OR I$="2" OR I$="3" OR I$="4" THEN 730 ELSE BEEP:GOTO 700
  61. 730 X=VAL(I$):GOSUB 880:LOCATE 25,1:PRINT "Hoeveel lucifers?";
  62. 740 I$=INKEY$:IF I$="" THEN 740 ELSE Y=VAL(I$)
  63. 750 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 870:GOTO 700
  64. 760 A(X)=A(X)-Y:GOSUB 800:GOSUB 850:IF Z=1 THEN 290 ELSE 230
  65. 800 Z=0:FOR I=1 TO N:IF A(I)=0 THEN 820
  66. 810 RETURN
  67. 820 NEXT I
  68. 830 Z=1
  69. 840 RETURN
  70. 850 RY=-1:G%=0:FOR A%=1 TO 4:RY=RY+5:FOR B%=0 TO 4
  71. 860 LOCATE RY+B%,25+5*A(A%):PRINT STRING$(5*(7-A(A%)),32):NEXT B%,A%:RETURN
  72. 870 GOSUB 880:LOCATE 25,1:PRINT "Kan niet...";:FOR E=1 TO 3000:NEXT:RETURN
  73. 880 LOCATE 25,1:PRINT SPACE$(80);:RETURN
  74. 1000 GOSUB 880:LOCATE 25,1:PRINT "Nog eens proberen? (j/n)";
  75. 1001 I$=INKEY$:IF I$="" THEN 1001
  76. 1002 IF INSTR("JjNn",I$)>2 THEN 1010 ELSE LOCATE 13,32:PRINT SPACE$(17):GOSUB 880:GOTO 160
  77. 1010 CLS:END
  78.