home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RUN Flagazine Extra: Special 2
/
run-special-2.zip
/
NIM.BAS
< prev
next >
Wrap
BASIC Source File
|
1992-05-31
|
3KB
|
78 lines
100 REM HET SPEL NIM - GWBASIC MONO - (C) NICO BAAIJENS
110 W=1:DIM A(5),B(100,10),D(2):RANDOMIZE TIMER:CLS:KEY OFF
120 COLOR 15,12:LOCATE 3,1:PRINT STRING$(80,196);:LOCATE 24,1:PRINT STRING$(80,196);
130 COLOR 1,3:LOCATE 1,38:PRINT "NIM":LOCATE 2,27:COLOR 15,12:PRINT "Pak de laatste rij en win!"
140 FOR Z=1 TO 23:LOCATE Z,1:PRINT CHR$(179):LOCATE Z,80:PRINT CHR$(179);:NEXT
150 LOCATE 24,1:PRINT CHR$(192);:LOCATE 24,80:PRINT CHR$(217);:COLOR 14,0
160 N=4:A(1)=7:A(2)=5:A(3)=3:A(4)=1:V=7:WW=4:FOR Z=1 TO 4
170 LOCATE Z*5+1,15:PRINT "RIJ";Z:NEXT Z:FOR Z=1 TO 4:FOR A=1 TO V:L=L+5
180 LOCATE WW,20+L:COLOR 12,0:PRINT CHR$(254):NEXT:COLOR 14,0:L=0:FOR A=1 TO 3
190 FOR B=1 TO V:L=L+5:LOCATE WW+A,20+L:PRINT CHR$(179):NEXT B:L=0:NEXT A
200 L=0:V=V-2:WW=WW+5:NEXT Z
210 SOUND 1250,2:LOCATE 25,1:PRINT "Begint u eerst? (j/n) ";
220 I$=INKEY$:IF I$="" THEN 220 ELSE IF INSTR("JjNn",I$)<3 THEN 700
230 GOTO 380
240 C=0:FOR I=1 TO N:IF A(I)=0 THEN 270 ELSE C=C+1
250 IF C=3 THEN 310 ELSE D(C)=I
270 NEXT I
280 IF C=2 THEN 370 ELSE IF A(D(1))>1 THEN 300
290 GOSUB 880:LOCATE 13,32:PRINT "PC heeft verloren";:SP=SP+1
291 LOCATE 23,3:PRINT "Stand: ";PC;" - ";SP:GOTO 1000
300 GOSUB 880:LOCATE 13,32:PRINT "PC heeft gewonnen";:PC=PC+1
301 LOCATE 23,3:PRINT "Stand: ";PC;" - ";SP:GOTO 1000
310 C=0:FOR I=1 TO N:IF A(I)>1 THEN 380
320 IF A(I)=0 THEN 340 ELSE C=C+1
340 NEXT I:IF C/2<>INT(C/2) THEN 290
370 IF A(D(1))=1 THEN 300 ELSE IF A(D(2))=1 THEN 300
380 SOUND 250,3:GOSUB 880:SOUND 1000,2:LOCATE 25,1:PRINT "Mijn beurt...";
381 FOR I=1 TO N:E=A(I):FOR J=0 TO 10:F=E/2:B(I,J)=2*(F-INT(F))
390 E=INT(F):NEXT J,I
400 FOR J=10 TO 0 STEP -1:C=O:H=0:FOR I=1 TO N:IF B(I,J)=0 THEN 440
420 C=C+1:IF A(I)<=H THEN 440 ELSE H=A(I):G=I
440 NEXT I
450 IF C/2<>INT(C/2) THEN 520
460 NEXT J
470 E=INT(N*RND(1)+1)
480 IF A(E)=0 THEN 470
490 F=INT(A(E)*RND(1)+1)
500 A(E)=A(E)-F
510 GOTO 660
520 A(G)=0:FOR J=0 TO 10:B(G,J)=0:C=0
530 FOR I=1 TO N:IF B(I,J)=0 THEN 550
540 C=C+1
550 NEXT I
560 A(G)=A(G)+2*(C/2-INT(C/2))*2^J
570 NEXT J
580 IF W=1 THEN 660
590 C=0:FOR I=1 TO N
600 IF A(I)>1 THEN 660
610 IF A(I)=0 THEN 630
620 C=C+1
630 NEXT I
640 IF C/2<>INT(C/2) THEN 660
650 A(G)=1-A(G)
660 GOSUB 850
670 IF W=2 THEN 700
680 GOSUB 800
690 IF Z=1 THEN GOSUB 800:GOTO 300
700 GOSUB 880:LOCATE 25,1:PRINT "Uw beurt... Welke rij?";
710 I$=INKEY$:IF I$="" THEN 710
720 IF I$="1" OR I$="2" OR I$="3" OR I$="4" THEN 730 ELSE BEEP:GOTO 700
730 X=VAL(I$):GOSUB 880:LOCATE 25,1:PRINT "Hoeveel lucifers?";
740 I$=INKEY$:IF I$="" THEN 740 ELSE Y=VAL(I$)
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
760 A(X)=A(X)-Y:GOSUB 800:GOSUB 850:IF Z=1 THEN 290 ELSE 230
800 Z=0:FOR I=1 TO N:IF A(I)=0 THEN 820
810 RETURN
820 NEXT I
830 Z=1
840 RETURN
850 RY=-1:G%=0:FOR A%=1 TO 4:RY=RY+5:FOR B%=0 TO 4
860 LOCATE RY+B%,25+5*A(A%):PRINT STRING$(5*(7-A(A%)),32):NEXT B%,A%:RETURN
870 GOSUB 880:LOCATE 25,1:PRINT "Kan niet...";:FOR E=1 TO 3000:NEXT:RETURN
880 LOCATE 25,1:PRINT SPACE$(80);:RETURN
1000 GOSUB 880:LOCATE 25,1:PRINT "Nog eens proberen? (j/n)";
1001 I$=INKEY$:IF I$="" THEN 1001
1002 IF INSTR("JjNn",I$)>2 THEN 1010 ELSE LOCATE 13,32:PRINT SPACE$(17):GOSUB 880:GOTO 160
1010 CLS:END