home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine Extra: Special 3 / run-special-3.zip / PENTO.BAS < prev    next >
BASIC Source File  |  1989-11-24  |  3KB  |  66 lines

  1. 100 REM Pentomino GWBASIC Monochroom
  2. 110 DEFINT A-Z:DIM V(77),S(240),N(60),T(12),U(12),S2(60)
  3. 120 DIM TEKEN(15):FOR I=0 TO 15:READ TEKEN(I):NEXT:COLOR 14,0
  4. 130 DATA 32,0,0,188,0,187,186,185,0,205,200,202,201,203,204,206
  5. 140 L=6:N=2:CLS:KEY OFF:FOR V=7 TO 70 STEP 7:V(V)=-1:NEXT
  6. 150 FOR V=71 TO 76:V(V)=-1:NEXT:FOR I=1 TO 240:READ S(I):NEXT
  7. 160 FOR I=0 TO 60:READ N(I):NEXT:FOR I=1 TO 60:READ S2(I):NEXT
  8. 170 V=1:TIME$="00:00:00":U$=TIME$
  9. 180 IF V(V)<>0 THEN V=V+1:GOTO 180
  10. 185 LOCATE 1,78: GOSUB 310
  11. 190 IF V=77 THEN 280 ELSE IF V(V+1)*V(V+7)<>0 THEN 290
  12. 200 S=N(S):I$=INKEY$:IF I$<>"" THEN END
  13. 210 LOCATE 1,1:PRINT TIME$:IF S=61 THEN 290 ELSE IF U(S2(S))=-1 THEN 200
  14. 220 Z=S*4-3:IF V(V+S(Z))<>0 THEN S=S+1:GOTO 210
  15. 230 IF V(V+S(Z+1))<>0 THEN S=S+1:GOTO 210
  16. 240 IF V(V+S(Z+2))<>0 THEN S=S+1:GOTO 210
  17. 250 IF V(V+S(Z+3))<>0 THEN S=S+1:GOTO 210
  18. 260 V(V)=S:FOR I=Z TO Z+3:V(V+S(I))=S:NEXT
  19. 270 P=P+1:T(P)=V:U(S2(S))=-1:S=0:GOTO 180
  20. 280 BEEP:U$=TIME$:LOCATE 1,25:O=O+1:PRINT U$;" Oplossing:";O;:GOSUB 310
  21. 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
  22. 300 U(S2(S))=0:S=S+1:IF P>-1 THEN 210
  23. 310 PRINT:PRINT:A$=STRING$(L,205):PRINT CHR$(201);A$;:FOR X=1 TO 57 STEP 7
  24. 320 IF V(X)<>V(X+7) THEN PRINT CHR$(203);ELSE PRINT CHR$(205);
  25. 330 PRINT A$;:NEXT:PRINT CHR$(187)
  26. 340 FOR START=1 TO 5:FOR M=1 TO N:PRINT CHR$(186);SPC(L);
  27. 350 FOR X=START TO START+56 STEP 7
  28. 360 IF V(X)<>V(X+7) THEN PRINT CHR$(186);ELSE PRINT " ";
  29. 370 PRINT SPC(L);:NEXT:PRINT CHR$(186):NEXT
  30. 380 IF V(START)<>V(START+1) THEN PRINT CHR$(204);ELSE PRINT CHR$(186);
  31. 390 FOR X=START TO START+56 STEP 7
  32. 400 T=0:IF V(X)<>V(X+1) THEN T=T+1:PRINT STRING$(L,205);ELSE PRINT SPC(L);
  33. 410 IF V(X)<>V(X+7) THEN T=T+2
  34. 420 IF V(X+1)<>V(X+8) THEN T=T+4
  35. 430 IF V(X+7)<>V(X+8) THEN T=T+8
  36. 440 PRINT CHR$(TEKEN(T));
  37. 450 NEXT:IF V(START+63)<>V(START+64) THEN PRINT STRING$(L,205);CHR$(185)            ELSE PRINT SPC(L);CHR$(186)
  38. 460 NEXT:FOR M=1 TO N:PRINT CHR$(186);SPC(L);:FOR X=6 TO 62 STEP 7
  39. 470 IF V(X)<>V(X+7) THEN PRINT CHR$(186);ELSE PRINT " ";
  40. 480 PRINT SPC(L);:NEXT:PRINT CHR$(186):NEXT
  41. 490 A$=STRING$(L,205):PRINT CHR$(200);A$;:FOR X=6 TO 62 STEP 7
  42. 500 IF V(X)<>V(X+7) THEN PRINT CHR$(202);ELSE PRINT CHR$(205);
  43. 510 PRINT A$;:NEXT:PRINT CHR$(188):RETURN
  44. 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
  45. 530 DATA 4,7,14,21,28,1,2,8,15,5,6,7,14,7,8,9,14,7,13,14,15
  46. 540 DATA 7,8,15,22,7,13,14,20,1,2,6,7,1,2,9,10
  47. 550 DATA 7,14,15,22,6,7,13,20,1,5,6,7,1,8,9,10,1,2,7,14
  48. 560 DATA 6,7,14,15,7,8,13,14,6,7,8,13,6,7,8,15
  49. 570 DATA 1,8,9,15,1,6,7,14,5,6,7,13,7,8,9,15
  50. 580 DATA 1,8,15,16,1,7,13,14,5,6,7,12,7,8,9,16
  51. 590 DATA 7,8,15,16,6,7,12,13,1,6,7,13,1,8,9,16
  52. 600 DATA 7,14,15,21,7,13,14,21,1,2,3,8,1,2,3,9
  53. 610 DATA 6,7,14,21,7,8,14,21,5,6,7,8,6,7,8,9
  54. 620 DATA 1,7,8,15,1,7,8,14,1,6,7,8,1,7,8,9
  55. 630 DATA 7,8,14,15,6,7,13,14,1,2,7,8,1,2,8,9
  56. 640 DATA 7,14,21,22,7,14,20,21,1,2,3,7,1,2,3,10
  57. 650 DATA 1,8,15,22,1,7,14,21,4,5,6,7,7,8,9,10
  58. 660 DATA 1,2,6,6,6,6,8,8,12,12,12,12,20,20,20,20,20,20,20,20
  59. 670 DATA 21,29,29,29,29,29,29,29,29,33,33,33,33,37,37,37,37
  60. 680 DATA 45,45,45,45,45,45,45,45,53,53,53,53,53,53,53,53
  61. 690 DATA 61,61,61,61,61,61,61,61
  62. 700 DATA 1,2,2,2,2,3,3,4,4,4,4,5,5,5,5,5,5,5,5,6
  63. 710 DATA 7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9
  64. 720 DATA 10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11
  65. 730 DATA 12,12,12,12,12,12,12,12
  66.