home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RUN Flagazine: Run 2
/
run2.zip
/
NIM.BAS
< prev
next >
Wrap
BASIC Source File
|
2014-09-03
|
3KB
|
71 lines
100 REM HET SPEL NIM - GWBASIC MONO - (C) NICO BAAIJENS
110 CLS:KEY OFF:COLOR 10,0:W=1:DIM A(5),B(100,10),D(2):RANDOMIZE TIMER
120 LOCATE 3,1:PRINT STRING$(80,196);:LOCATE 24,1:PRINT STRING$(80,196);
130 LOCATE 1,38:PRINT "NIM":LOCATE 2,27: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 640
230 GOTO 340
240 C=0:FOR I=1 TO N:IF A(I)=0 THEN 260 ELSE C=C+1
250 IF C=3 THEN 300 ELSE D(C)=I
260 NEXT I
270 IF C=2 THEN 330 ELSE IF A(D(1))>1 THEN 290
280 GOSUB 790:LOCATE 13,32:PRINT "PC heeft verloren";:END
290 GOSUB 790:LOCATE 13,32:PRINT "PC heeft gewonnen";:END
300 C=0:FOR I=1 TO N:IF A(I)>1 THEN 340
310 IF A(I)=0 THEN 320 ELSE C=C+1
320 NEXT I:IF C/2<>INT(C/2) THEN 280
330 IF A(D(1))=1 THEN 290 ELSE IF A(D(2))=1 THEN 290
340 FOR I=1 TO N:E=A(I):FOR J=0 TO 10:F=E/2:B(I,J)=2*(F-INT(F))
350 E=INT(F):NEXT J,I
360 FOR J=10 TO 0 STEP -1:C=O:H=0:FOR I=1 TO N:IF B(I,J)=0 THEN 380
370 C=C+1:IF A(I)<=H THEN 380 ELSE H=A(I):G=I
380 NEXT I
390 IF C/2<>INT(C/2) THEN 460
400 NEXT J
410 E=INT(N*RND(1)+1)
420 IF A(E)=0 THEN 410
430 F=INT(A(E)*RND(1)+1)
440 A(E)=A(E)-F
450 GOTO 600
460 A(G)=0:FOR J=0 TO 10:B(G,J)=0:C=0
470 FOR I=1 TO N:IF B(I,J)=0 THEN 490
480 C=C+1
490 NEXT I
500 A(G)=A(G)+2*(C/2-INT(C/2))*2^J
510 NEXT J
520 IF W=1 THEN 600
530 C=0:FOR I=1 TO N
540 IF A(I)>1 THEN 600
550 IF A(I)=0 THEN 570
560 C=C+1
570 NEXT I
580 IF C/2<>INT(C/2) THEN 600
590 A(G)=1-A(G)
600 GOSUB 760
610 IF W=2 THEN 640
620 GOSUB 710
630 IF Z=1 THEN GOSUB 710:GOTO 290
640 GOSUB 790:LOCATE 25,1:PRINT "Welke rij?";
650 I$=INKEY$:IF I$="" THEN 650
660 IF I$="1" OR I$="2" OR I$="3" OR I$="4" THEN 670 ELSE BEEP:GOTO 640
670 X=VAL(I$):GOSUB 790:LOCATE 25,1:PRINT "Hoeveel lucifers?";
680 I$=INKEY$:IF I$="" THEN 680 ELSE Y=VAL(I$)
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
700 A(X)=A(X)-Y:GOSUB 710:GOSUB 760:IF Z=1 THEN 280 ELSE 230
710 Z=0:FOR I=1 TO N:IF A(I)=0 THEN 730
720 RETURN
730 NEXT I
740 Z=1
750 RETURN
760 RY=-1:G%=0:FOR A%=1 TO 4:RY=RY+5:FOR B%=0 TO 4
770 LOCATE RY+B%,25+5*A(A%):PRINT STRING$(5*(7-A(A%)),32):NEXT B%,A%:RETURN
780 GOSUB 790:LOCATE 25,1:PRINT "Kan niet...";:FOR E=1 TO 3000:NEXT:RETURN
790 LOCATE 25,1:PRINT SPACE$(79);:RETURN