home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RUN Flagazine Extra: Special 3
/
run-special-3.zip
/
PENTO.BAS
< prev
next >
Wrap
BASIC Source File
|
1989-11-24
|
3KB
|
66 lines
100 REM Pentomino GWBASIC Monochroom
110 DEFINT A-Z:DIM V(77),S(240),N(60),T(12),U(12),S2(60)
120 DIM TEKEN(15):FOR I=0 TO 15:READ TEKEN(I):NEXT:COLOR 14,0
130 DATA 32,0,0,188,0,187,186,185,0,205,200,202,201,203,204,206
140 L=6:N=2:CLS:KEY OFF:FOR V=7 TO 70 STEP 7:V(V)=-1:NEXT
150 FOR V=71 TO 76:V(V)=-1:NEXT:FOR I=1 TO 240:READ S(I):NEXT
160 FOR I=0 TO 60:READ N(I):NEXT:FOR I=1 TO 60:READ S2(I):NEXT
170 V=1:TIME$="00:00:00":U$=TIME$
180 IF V(V)<>0 THEN V=V+1:GOTO 180
185 LOCATE 1,78: GOSUB 310
190 IF V=77 THEN 280 ELSE IF V(V+1)*V(V+7)<>0 THEN 290
200 S=N(S):I$=INKEY$:IF I$<>"" THEN END
210 LOCATE 1,1:PRINT TIME$:IF S=61 THEN 290 ELSE IF U(S2(S))=-1 THEN 200
220 Z=S*4-3:IF V(V+S(Z))<>0 THEN S=S+1:GOTO 210
230 IF V(V+S(Z+1))<>0 THEN S=S+1:GOTO 210
240 IF V(V+S(Z+2))<>0 THEN S=S+1:GOTO 210
250 IF V(V+S(Z+3))<>0 THEN S=S+1:GOTO 210
260 V(V)=S:FOR I=Z TO Z+3:V(V+S(I))=S:NEXT
270 P=P+1:T(P)=V:U(S2(S))=-1:S=0:GOTO 180
280 BEEP:U$=TIME$:LOCATE 1,25:O=O+1:PRINT U$;" Oplossing:";O;:GOSUB 310
290 V=T(P):P=P-1:S=V(V):Z=S*4-3:FOR I=Z TO Z+3:V(V+S(I))=0:NEXT:V(V)=0
300 U(S2(S))=0:S=S+1:IF P>-1 THEN 210
310 PRINT:PRINT:A$=STRING$(L,205):PRINT CHR$(201);A$;:FOR X=1 TO 57 STEP 7
320 IF V(X)<>V(X+7) THEN PRINT CHR$(203);ELSE PRINT CHR$(205);
330 PRINT A$;:NEXT:PRINT CHR$(187)
340 FOR START=1 TO 5:FOR M=1 TO N:PRINT CHR$(186);SPC(L);
350 FOR X=START TO START+56 STEP 7
360 IF V(X)<>V(X+7) THEN PRINT CHR$(186);ELSE PRINT " ";
370 PRINT SPC(L);:NEXT:PRINT CHR$(186):NEXT
380 IF V(START)<>V(START+1) THEN PRINT CHR$(204);ELSE PRINT CHR$(186);
390 FOR X=START TO START+56 STEP 7
400 T=0:IF V(X)<>V(X+1) THEN T=T+1:PRINT STRING$(L,205);ELSE PRINT SPC(L);
410 IF V(X)<>V(X+7) THEN T=T+2
420 IF V(X+1)<>V(X+8) THEN T=T+4
430 IF V(X+7)<>V(X+8) THEN T=T+8
440 PRINT CHR$(TEKEN(T));
450 NEXT:IF V(START+63)<>V(START+64) THEN PRINT STRING$(L,205);CHR$(185) ELSE PRINT SPC(L);CHR$(186)
460 NEXT:FOR M=1 TO N:PRINT CHR$(186);SPC(L);:FOR X=6 TO 62 STEP 7
470 IF V(X)<>V(X+7) THEN PRINT CHR$(186);ELSE PRINT " ";
480 PRINT SPC(L);:NEXT:PRINT CHR$(186):NEXT
490 A$=STRING$(L,205):PRINT CHR$(200);A$;:FOR X=6 TO 62 STEP 7
500 IF V(X)<>V(X+7) THEN PRINT CHR$(202);ELSE PRINT CHR$(205);
510 PRINT A$;:NEXT:PRINT CHR$(188):RETURN
520 DATA 6,7,8,14,1,7,14,15,2,7,8,9,1,8,14,15,1,2,7,9,1,2,3
530 DATA 4,7,14,21,28,1,2,8,15,5,6,7,14,7,8,9,14,7,13,14,15
540 DATA 7,8,15,22,7,13,14,20,1,2,6,7,1,2,9,10
550 DATA 7,14,15,22,6,7,13,20,1,5,6,7,1,8,9,10,1,2,7,14
560 DATA 6,7,14,15,7,8,13,14,6,7,8,13,6,7,8,15
570 DATA 1,8,9,15,1,6,7,14,5,6,7,13,7,8,9,15
580 DATA 1,8,15,16,1,7,13,14,5,6,7,12,7,8,9,16
590 DATA 7,8,15,16,6,7,12,13,1,6,7,13,1,8,9,16
600 DATA 7,14,15,21,7,13,14,21,1,2,3,8,1,2,3,9
610 DATA 6,7,14,21,7,8,14,21,5,6,7,8,6,7,8,9
620 DATA 1,7,8,15,1,7,8,14,1,6,7,8,1,7,8,9
630 DATA 7,8,14,15,6,7,13,14,1,2,7,8,1,2,8,9
640 DATA 7,14,21,22,7,14,20,21,1,2,3,7,1,2,3,10
650 DATA 1,8,15,22,1,7,14,21,4,5,6,7,7,8,9,10
660 DATA 1,2,6,6,6,6,8,8,12,12,12,12,20,20,20,20,20,20,20,20
670 DATA 21,29,29,29,29,29,29,29,29,33,33,33,33,37,37,37,37
680 DATA 45,45,45,45,45,45,45,45,53,53,53,53,53,53,53,53
690 DATA 61,61,61,61,61,61,61,61
700 DATA 1,2,2,2,2,3,3,4,4,4,4,5,5,5,5,5,5,5,5,6
710 DATA 7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9
720 DATA 10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11
730 DATA 12,12,12,12,12,12,12,12