home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / extensions / jd / progs / logikraetsel.amos / logikraetsel.amosSourceCode
AMOS Source Code  |  1994-02-02  |  20KB  |  569 lines

  1. Set Buffer 50
  2. Screen Open 0,680,257,4,Hires : Limit Mouse 112,42 To 447,298
  3. Flash Off : Palette ,$444,$7BF,$FC4 : Colour 0,Colour(1) : Colour Back Colour(1) : Curs Off 
  4. Reserve Zone 250 : Dim A(5,5,5,5),W(4),BEZ$(5),BLOCK1$(5),BLOCK2$(5),BLOCK3$(5),BLOCK4$(5),BLOCK5$(5)
  5. Goto FIRST
  6. '
  7. RESTART:
  8. MX=0
  9. Reset Zone 
  10. Cls 
  11. For X=1 To 5
  12.    BEZ$(X)="" : BLOCK1$(X)="" : BLOCK2$(X)="" : BLOCK3$(X)="" : BLOCK4$(X)="" : BLOCK5$(X)=""
  13. Next 
  14. For V=1 To 5
  15.    For W=1 To 5
  16.       For X=1 To 5
  17.          For Y=1 To 5
  18.             A(V,W,X,Y)=0
  19.          Next 
  20.       Next 
  21.    Next 
  22. Next 
  23. FIRST:
  24. Gosub AUSGABE
  25. Gosub DATIN
  26. '
  27. ' Zuweisungen und Rahmenausgabe
  28. '
  29. If MX=0
  30.    For X=1 To 5
  31.       FELD1$=Left$(BLOCK1$(X),8)
  32.       FELD2$=Left$(BLOCK5$(X),8)
  33.       FELD3$=Left$(BLOCK4$(X),8)
  34.       FELD4$=Left$(BLOCK3$(X),8)
  35.       Text 4,((X-1)*8)+54, Extension_22_011A(FELD1$,8,-1)
  36.       Text 4,((X-1)*8)+103, Extension_22_011A(FELD2$,8,-1)
  37.       Text 4,((X-1)*8)+150, Extension_22_011A(FELD3$,8,-1)
  38.       Text 4,((X-1)*8)+199, Extension_22_011A(FELD4$,8,-1)
  39.    Next 
  40. End If 
  41. If MX=1
  42.    For X=1 To 5
  43.       FELD1$=Left$(BLOCK1$(X),8)
  44.       FELD2$=Left$(BLOCK4$(X),8)
  45.       FELD3$=Left$(BLOCK3$(X),8)
  46.       Text 4,((X-1)*8)+54, Extension_22_011A(FELD1$,8,-1)
  47.       Text 4,((X-1)*8)+103, Extension_22_011A(FELD2$,8,-1)
  48.       Text 4,((X-1)*8)+150, Extension_22_011A(FELD3$,8,-1)
  49.    Next 
  50. End If 
  51. For X=1 To 5
  52.    FELD1$= Extension_22_011A(Left$(BLOCK2$(X),4),4,-1)
  53.    FELD2$= Extension_22_011A(Left$(BLOCK3$(X),4),4,-1)
  54.    FELD3$= Extension_22_011A(Left$(BLOCK4$(X),4),4,-1)
  55.    FELD4$= Extension_22_011A(Left$(BLOCK5$(X),4),4,-1)
  56.    For Y=1 To 4
  57.       Text((X-1)*16)+88,(Y*8)+5,Mid$(FELD1$,Y,1)
  58.       Text((X-1)*16)+176,(Y*8)+5,Mid$(FELD2$,Y,1)
  59.       Text((X-1)*16)+265,(Y*8)+5,Mid$(FELD3$,Y,1)
  60.       Text((X-1)*16)+352,(Y*8)+5,Mid$(FELD4$,Y,1)
  61.    Next 
  62. Next 
  63. If MX=0 Then W(2)=4 : W(3)=3 : W(4)=2
  64. If MX=1 Then W(2)=3 : W(3)=2
  65. Gosub _SETZONEN
  66. Gosub AUSGABE
  67. HELP=0
  68. Timer=0
  69. '
  70. ' Hauptteil  
  71. '
  72. MAIN:
  73. MZ=Mouse Zone
  74. If Key State(68) Then Gosub AUSGABE
  75. If Key State(69) Then Goto RESTART
  76. If Key State(95) Then HELP=1 : Goto LOP
  77. If MZ=0 Then Goto MAIN
  78. X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  79. TX=X Text(X) : TY=Y Text(Y)
  80. If Extension_22_0080(TX,10,19)=1 and Extension_22_032A(TX)=0 Then TX=TX-1
  81. If Extension_22_0080(TX,21,30)=1 and Extension_22_032A(TX)=1 Then TX=TX-1
  82. If Extension_22_0080(TX,32,41)=1 and Extension_22_032A(TX)=0 Then TX=TX-1
  83. If Extension_22_0080(TX,43,52)=1 and Extension_22_032A(TX)=1 Then TX=TX-1
  84. Locate TX,TY
  85. If Key State(70) Then Gosub FELDNR : Goto DEL
  86. If Mouse Key=1 Then Gosub FELDNR : Goto _SET_PLUS
  87. If Mouse Key=2 Then Gosub FELDNR : Goto _SET_MINUS
  88. Goto MAIN
  89. '
  90. ' Berechne Punkt in Dimensionierung
  91. '
  92. FELDNR:
  93. If Extension_22_0080(Y,48,87)=1 Then PV=1
  94. If Extension_22_0080(Y,96,135)=1 Then PV=2
  95. If Extension_22_0080(Y,144,183)=1 Then PV=3
  96. If Extension_22_0080(Y,192,231)=1 Then PV=4
  97. If Extension_22_0080(X,82,160)=1 Then PW=1
  98. If Extension_22_0080(X,170,248)=1 Then PW=2
  99. If Extension_22_0080(X,258,336)=1 Then PW=3
  100. If Extension_22_0080(X,346,424)=1 Then PW=4
  101. If TX=10 or TX=21 or TX=32 or TX=43 Then PY=1
  102. If TX=12 or TX=23 or TX=34 or TX=45 Then PY=2
  103. If TX=14 or TX=25 or TX=36 or TX=47 Then PY=3
  104. If TX=16 or TX=27 or TX=38 or TX=49 Then PY=4
  105. If TX=18 or TX=29 or TX=40 or TX=51 Then PY=5
  106. If TY=6 or TY=12 or TY=18 or TY=24 Then PX=1
  107. If TY=7 or TY=13 or TY=19 or TY=25 Then PX=2
  108. If TY=8 or TY=14 or TY=20 or TY=26 Then PX=3
  109. If TY=9 or TY=15 or TY=21 or TY=27 Then PX=4
  110. If TY=10 or TY=16 or TY=22 or TY=28 Then PX=5
  111. Return 
  112. '
  113. ' l�sche Punkt 
  114. '
  115. DEL:
  116. Locate TX,TY
  117. Print " ."
  118. A(PV,PW,PX,PY)=0
  119. Goto MAIN
  120. '
  121. ' setze Flags
  122. '
  123. ' positiv
  124. _SET_PLUS:
  125. Locate TX,TY
  126. Print " X"
  127. If A(PV,PW,PX,PY)=0 Then A(PV,PW,PX,PY)=1 : Else Bell 
  128. While Mouse Key<>0 : Wend 
  129. Goto MAIN
  130. ' negativ
  131. _SET_MINUS:
  132. Locate TX,TY
  133. Print " -"
  134. If A(PV,PW,PX,PY)=0 Then A(PV,PW,PX,PY)=-1 : Else Bell 
  135. While Mouse Key<>0 : Wend 
  136. Goto MAIN
  137. '
  138. ' Berechnungen 
  139. '
  140. LOP:
  141. Clear Key 
  142. Change Mouse 3
  143. K=0
  144. For V=1 To 4-MX
  145.    For W=1 To 4-MX
  146.       For X=1 To 5
  147.          For Y=1 To 5
  148.             If A(V,W,X,Y)=1 Then For Z=1 To 5 : A(V,W,X,Z)=-1 : A(V,W,Z,Y)=-1 : Next : A(V,W,X,Y)=1
  149.          Next 
  150.       Next 
  151.    Next 
  152. Next 
  153. Gosub AUSGABE
  154. If MX=1 Then Goto SKIPMAIN
  155. For Y=1 To 5
  156.    For X=1 To 5
  157.       For W=1 To 4
  158.          For V=1 To 4
  159.             For Z=1 To 5-V
  160.                For Q=1 To 5
  161.                   If A(V,W,X,Y)=0 Then Goto NO2
  162.                   If V=Z and W(V)=W and X=Q Then Goto NO1
  163.                   If W(V)>5-V Then Goto NO1
  164.                   If W(V)=0 Then Goto NO1
  165.                   If A(V,W(V),X,Q)=0 and A(V,W,X,Y)=-1 and A(Z,W,Q,Y)=1 Then A(V,W(V),X,Q)=-1 : K=1 : Goto NO1
  166.                   If A(V,W(V),X,Q)=0 and A(V,W,X,Y)=1 and A(Z,W,Q,Y)=-1 Then A(V,W(V),X,Q)=-1 : K=1 : Goto NO1
  167.                   If A(V,W(V),X,Q)=0 and A(V,W,X,Y)=1 and A(Z,W,Q,Y)=1 Then A(V,W(V),X,Q)=1 : K=1
  168.                   NO1:
  169.                   If W(Z)>5-V Then Goto NO2
  170.                   If W(Z)=0 Then Goto NO2
  171.                   If W=Z Then Goto NO2
  172.                   If A(W(Z),W,Q,Y)=0 and A(V,W,X,Y)=-1 and A(V,Z,X,Q)=1 Then A(W(Z),W,Q,Y)=-1 : K=1
  173.                   If A(W(Z),W,Q,Y)=0 and A(V,W,X,Y)=1 and A(V,Z,X,Q)=-1 Then A(W(Z),W,Q,Y)=-1 : K=1
  174.                   If A(W(Z),W,Q,Y)=0 and A(V,W,X,Y)=1 and A(V,Z,X,Q)=1 Then A(W(Z),W,Q,Y)=1 : K=1
  175.                   Goto NONO2
  176.                   NO2:
  177.                   If V=Z and W(V)=W and X=Q Then Goto NO12
  178.                   If W(V)>5-V Then Goto NO12
  179.                   If W(V)=0 Then Goto NO12
  180.                   If A(V,W(V),X,Q)=-1 and A(V,W,X,Y)=0 and A(Z,W,Q,Y)=1 Then A(V,W,X,Y)=-1 : K=1 : Goto NO12
  181.                   If A(V,W(V),X,Q)=1 and A(V,W,X,Y)=0 and A(Z,W,Q,Y)=-1 Then A(V,W,X,Y)=-1 : K=1 : Goto NO12
  182.                   If A(V,W(V),X,Q)=1 and A(V,W,X,Y)=0 and A(Z,W,Q,Y)=1 Then A(V,W,X,Y)=1 : K=1
  183.                   NO12:
  184.                   If W(Z)>5-V Then Goto NONO2
  185.                   If W(Z)=0 Then Goto NONO2
  186.                   If W=Z Then Goto NONO2
  187.                   If A(W(Z),W,Q,Y)=-1 and A(V,W,X,Y)=0 and A(V,Z,X,Q)=1 Then A(V,W,X,Y)=-1 : K=1 : Goto NONO2
  188.                   If A(W(Z),W,Q,Y)=1 and A(V,W,X,Y)=0 and A(V,Z,X,Q)=-1 Then A(V,W,X,Y)=-1 : K=1 : Goto NONO2
  189.                   If A(W(Z),W,Q,Y)=1 and A(V,W,X,Y)=0 and A(V,Z,X,Q)=1 Then A(V,W,X,Y)=1 : K=1 : Goto NONO2
  190.                   NONO2:
  191.                Next 
  192.             Next 
  193.          Next 
  194.       Next 
  195.       For W=2 To 4
  196.          For Z=1 To 5
  197.             If A(1,1,X,Z)<>0 Then Goto NO8
  198.             If A(1,W,X,Y)=-1 and A(W(W),1,Y,Z)=1 Then A(1,1,X,Z)=-1 : K=1
  199.             If A(1,W,X,Y)=1 and A(W(W),1,Y,Z)=-1 Then A(1,1,X,Z)=-1 : K=1
  200.             If A(1,W,X,Y)=1 and A(W(W),1,Y,Z)=1 Then A(1,1,X,Z)=1 : K=1
  201.             NO8:
  202.          Next 
  203.       Next 
  204.       For V=1 To 4
  205.          For W=1 To 4
  206.             For Z=1 To 5-V
  207.                For Q=1 To 5
  208.                   If A(V,W,X,Y)=0 Then Goto NO4
  209.                   If A(V,Z,X,Y)=0 Then Goto NO4
  210.                   If W=Z and Y=Q Then Goto NO4
  211.                   For R=1 To 5
  212.                      If A(Q,Z,R,Y)<>0 Then Goto NO10
  213.                      If A(V,W,X,Y)=1 and A(V,Z,X,Y)=1 and A(Q,W,R,Y)=-1 Then A(Q,Z,R,Y)=-1 : K=1 : Goto NO10
  214.                      If A(V,W,X,Y)=1 and A(V,Z,X,Y)=1 and A(Q,W,R,Y)=1 Then A(Q,Z,R,Y)=1 : K=1
  215.                      NO10:
  216.                   Next 
  217.                   NO9:
  218.                   If A(V,Z,X,Q)=0 Then Goto NO4
  219.                   If W(Z)>5-V Then Goto NO4
  220.                   If W(Z)=0 Then Goto NO4
  221.                   For R=1 To 4
  222.                      For S=1 To 5
  223.                         If A(V,W(R),X,S)<>0 Then Goto NO4
  224.                         If R=V Then Goto NO5
  225.                         If W(R)=0 or W(R)>4 Then Goto NO5
  226.                         If A(R,Z,S,Q)=1 and A(V,Z,X,Q)=-1 Then A(V,W(R),X,S)=-1 : K=1 : Goto NO5
  227.                         If A(R,Z,S,Q)=1 and A(V,Z,X,Q)=1 Then A(V,W(R),X,S)=1 : K=1
  228.                         NO5:
  229.                       Next 
  230.                   Next 
  231.                   NO4:
  232.                Next 
  233.             Next 
  234.             For Z=1 To 5-W
  235.                For Q=1 To 5
  236.                   If A(V,W,X,Y)=0 Then Goto NO3
  237.                   If A(V,W(Z),X,Q)<>0 Then Goto NO3
  238.                   If V=Z Then Goto NO3
  239.                   If W(Z)>5-V Then Goto NO3
  240.                   If W(Z)=0 Then Goto NO3
  241.                   If A(V,W,X,Y)=1 and A(Z,W,Q,Y)=-1 Then A(V,W(Z),X,Q)=-1 : K=1 : Goto NO3
  242.                   If A(V,W,X,Y)=1 and A(Z,W,Q,Y)=1 Then A(V,W(Z),X,Q)=1 : K=1
  243.                   NO3:
  244.                Next 
  245.             Next 
  246.          Next 
  247.       Next 
  248.       For W=2 To 5-W
  249.          If A(1,W,X,Y)=0 Then Goto NO6
  250.          If A(1,1,X,Y)<>0 Then Goto NO6
  251.          For R=1 To 4
  252.             For S=1 To 5
  253.                If R=W Then Goto NO7
  254.                If A(R,1,X,Y)=1 and A(R,W,X,Y)=-1 Then A(1,1,X,Y)=-1 : K=1 : Goto NO7
  255.                If A(R,1,X,Y)=1 and A(R,W,X,Y)=1 Then A(1,1,X,Y)=1 : K=1
  256.                NO7:
  257.             Next 
  258.          Next 
  259.          NO6:
  260.       Next 
  261.       If A(2,2,X,Y)<1 or A(2,3,X,Y)<1 Then Goto NO11
  262.       For Q=1 To 5
  263.          If A(1,1,X,Q)<>0 and A(W(W(2)),1,X,Y)<>0 Then Goto NON11
  264.          If A(1,W(2),Q,X)=-1 and A(1,1,X,Q)=0 Then A(1,1,X,Q)=-1 : K=1
  265.          If A(1,W(2),Q,X)=-1 and A(W(W(2)),1,X,Y)=0 Then A(W(W(2)),1,X,Y)=-1 : K=1
  266.          NON11:
  267.       Next 
  268.       NO11:
  269.    Next 
  270. Next 
  271. If K=1 Then Gosub AUSGABE
  272. For X=1 To 5
  273.    For Y=1 To 5
  274.       For V=1 To 4
  275.          For W=1 To 4
  276.             For Z=1 To 4
  277.                For Q=1 To 5
  278.                   If W(Z)=0 Then Goto NON0
  279.                   If A(V,W(Z),X,Q)=0 and A(V,W,X,Y)=-1 and A(Z,W,Q,Y)=1 Then A(V,W(Z),X,Q)=-1 : K=2
  280.                   If A(V,W(Z),X,Q)=0 and A(V,W,X,Y)=1 and A(Z,W,Q,Y)=-1 Then A(V,W(Z),X,Q)=-1 : K=2
  281.                   If A(V,W(Z),X,Q)=0 and A(V,W,X,Y)=1 and A(Z,W,Q,Y)=1 Then A(V,W(Z),X,Q)=1 : K=2
  282.                   NON0:
  283.                Next 
  284.             Next 
  285.          Next 
  286.       Next 
  287.    Next 
  288. Next 
  289. If K=2 Then Gosub AUSGABE
  290. Goto SKIPMAIN2
  291. SKIPMAIN:
  292. For V=2 To 3
  293.    For X=1 To 5
  294.       For Y=1 To 5
  295.          For Q=1 To 5
  296.             If A(1,1,X,Y)=0 Then Goto NO_11
  297.             If A(1,1,X,Y)=1 and A(1,V,X,Q)=-1 and A(W(V),1,Q,Y)=0 Then A(W(V),1,Q,Y)=-1 : K=1
  298.             If A(1,1,X,Y)=1 and A(V,1,Q,Y)=-1 and A(1,W(V),X,Q)=0 Then A(1,W(V),X,Q)=-1 : K=1
  299.             If A(1,1,X,Y)=-1 and A(1,V,X,Q)=1 and A(W(V),1,Q,Y)=0 Then A(W(V),1,Q,Y)=-1 : K=1
  300.             If A(1,1,X,Y)=-1 and A(V,1,Q,Y)=1 and A(1,W(V),X,Q)=0 Then A(1,W(V),X,Q)=-1 : K=1
  301.             If A(1,1,X,Y)=1 and A(1,V,X,Q)=1 and A(W(V),1,Q,Y)=0 Then A(W(V),1,Q,Y)=1 : K=1
  302.             If A(1,1,X,Y)=1 and A(V,1,Q,Y)=1 and A(1,W(V),X,Q)=0 Then A(1,W(V),X,Q)=1 : K=1
  303.             NO_11:
  304.             If A(W(V),Q,Q,Y)=0 Then Goto NO_WV1
  305.             If A(W(V),1,Q,Y)=1 and A(1,V,X,Q)=-1 and A(1,1,X,Y)=0 Then A(1,1,X,Y)=-1 : K=1
  306.             If A(W(V),1,Q,Y)=-1 and A(1,V,X,Q)=1 and A(1,1,X,Y)=0 Then A(1,1,X,Y)=-1 : K=1
  307.             If A(W(V),1,Q,Y)=1 and A(1,V,X,Q)=1 and A(1,1,X,Y)=0 Then A(1,1,X,Y)=1 : K=1
  308.             If A(W(V),1,Q,Y)=1 and A(1,1,X,Y)=-1 and A(1,V,X,Q)=0 Then A(1,V,X,Q)=-1 : K=1
  309.             If A(W(V),1,Q,Y)=-1 and A(1,1,X,Y)=1 and A(1,V,X,Q)=0 Then A(1,V,X,Q)=-1 : K=1
  310.             If A(W(V),1,Q,Y)=1 and A(1,1,X,Y)=1 and A(1,V,X,Q)=0 Then A(1,V,X,Q)=1 : K=1
  311.             NO_WV1:
  312.             If A(1,W(V),X,Q)=0 Then Goto NO_1WV
  313.             If A(1,W(V),X,Q)=1 and A(V,1,Q,Y)=-1 and A(1,1,X,Y)=0 Then A(1,1,X,Y)=-1 : K=1
  314.             If A(1,W(V),X,Q)=-1 and A(V,1,Q,Y)=1 and A(1,1,X,Y)=0 Then A(1,1,X,Y)=-1 : K=1
  315.             If A(1,W(V),X,Q)=1 and A(V,1,Q,Y)=1 and A(1,1,X,Y)=0 Then A(1,1,X,Y)=1 : K=1
  316.             If A(1,W(V),X,Q)=1 and A(1,1,X,Y)=-1 and A(V,1,Q,Y)=0 Then A(V,1,Q,Y)=-1 : K=1
  317.             If A(1,W(V),X,Q)=-1 and A(1,1,X,Y)=1 and A(V,1,Q,Y)=0 Then A(V,1,Q,Y)=-1 : K=1
  318.             If A(1,W(V),X,Q)=1 and A(1,1,X,Y)=1 and A(V,1,Q,Y)=0 Then A(V,1,Q,Y)=1 : K=1
  319.             NO_1WV:
  320.          Next 
  321.       Next 
  322.    Next 
  323. Next 
  324. If K=1 Then Gosub AUSGABE
  325. For X=1 To 5
  326.    For Y=1 To 5
  327.       For Q=1 To 5
  328.          If A(1,2,X,Y)=0 Then Goto NO_12
  329.          If A(1,2,X,Y)=1 and A(1,3,X,Q)=1 and A(2,2,Q,Y)=0 Then A(2,2,Q,Y)=1 : K=2
  330.          If A(1,2,X,Y)=1 and A(2,2,Q,Y)=1 and A(1,3,X,Q)=0 Then A(1,3,X,Q)=1 : K=2
  331.          If A(1,2,X,Y)=-1 and A(1,3,X,Q)=1 and A(2,2,Q,Y)=0 Then A(2,2,Q,Y)=-1 : K=2
  332.          If A(1,2,X,Y)=-1 and A(2,2,Q,Y)=1 and A(1,3,X,Q)=0 Then A(1,3,X,Q)=-1 : K=2
  333.          If A(1,2,X,Y)=1 and A(1,3,X,Q)=-1 and A(2,2,Q,Y)=0 Then A(2,2,Q,Y)=-1 : K=2
  334.          If A(1,2,X,Y)=1 and A(2,2,Q,Y)=-1 and A(1,3,X,Q)=0 Then A(1,3,X,Q)=-1 : K=2
  335.          NO_12:
  336.          If A(1,3,X,Q)=0 Then Goto NO_13
  337.          If A(1,3,X,Q)=1 and A(2,2,Q,Y)=1 and A(1,2,X,Y)=0 Then A(1,2,X,Y)=1 : K=2
  338.          If A(1,3,X,Q)=-1 and A(2,2,Q,Y)=1 and A(1,2,X,Y)=0 Then A(1,2,X,Y)=-1 : K=2
  339.          If A(1,3,X,Q)=1 and A(2,2,Q,Y)=-1 and A(1,2,X,Y)=0 Then A(1,2,X,Y)=-1 : K=2
  340.          NO_13:
  341.          If A(2,1,X,Y)=0 Then Goto NO_21
  342.          If A(2,1,X,Y)=1 and A(3,1,Q,Y)=1 and A(2,2,X,Q)=0 Then A(2,2,X,Q)=1 : K=2
  343.          If A(2,1,X,Y)=1 and A(2,2,X,Q)=1 and A(3,1,Q,Y)=0 Then A(3,1,Q,Y)=1 : K=2
  344.          If A(2,1,X,Y)=-1 and A(3,1,Q,Y)=1 and A(2,2,X,Q)=0 Then A(2,2,X,Q)=-1 : K=2
  345.          If A(2,1,X,Y)=-1 and A(2,2,X,Q)=1 and A(3,1,Q,Y)=0 Then A(3,1,Q,Y)=-1 : K=2
  346.          If A(2,1,X,Y)=1 and A(3,1,Q,Y)=-1 and A(2,2,X,Q)=0 Then A(2,2,X,Q)=-1 : K=2
  347.          If A(2,1,X,Y)=1 and A(2,2,X,Q)=-1 and A(3,1,Q,Y)=0 Then A(3,1,Q,Y)=-1 : K=2
  348.          NO_21:
  349.          If A(3,1,Q,Y)=0 Then Goto NO_31
  350.          If A(3,1,Q,Y)=1 and A(2,2,X,Q)=1 and A(2,1,X,Y)=0 Then A(2,1,X,Y)=1 : K=2
  351.          If A(3,1,Q,Y)=-1 and A(2,2,X,Q)=1 and A(2,1,X,Y)=0 Then A(2,1,X,Y)=-1 : K=2
  352.          If A(3,1,Q,Y)=1 and A(2,2,X,Q)=-1 and A(2,1,X,Y)=0 Then A(2,1,X,Y)=-1 : K=2
  353.          NO_31:
  354.       Next 
  355.    Next 
  356. Next 
  357. If K=2 Then Gosub AUSGABE
  358. SKIPMAIN2:
  359. For V=1 To 4-MX
  360.    For W=1 To 4-MX
  361.       For X=1 To 5
  362.          Q=0
  363.          For Y=1 To 5
  364.             If A(V,W,X,Y)=-1 Then Q=Q+1
  365.          Next 
  366.          If Q<>4 Then Goto SKIP1
  367.          For Y=1 To 5
  368.             If A(V,W,X,Y)=0 Then A(V,W,X,Y)=1 : K=3
  369.          Next 
  370.          SKIP1:
  371.       Next 
  372.       For Y=1 To 5
  373.          Q=0
  374.          For X=1 To 5
  375.             If A(V,W,X,Y)=-1 Then Q=Q+1
  376.          Next 
  377.          If Q<>4 Then Goto SKIP2
  378.          For X=1 To 5
  379.             If A(V,W,X,Y)=0 Then A(V,W,X,Y)=1 : K=3
  380.          Next 
  381.          SKIP2:
  382.       Next 
  383.    Next 
  384. Next 
  385. If K=3 Then Gosub AUSGABE
  386. If K>0 Then Goto LOP
  387. Change Mouse 1
  388. Goto MAIN
  389. '
  390. ' Ausgabe der Berechnungen und Statistik 
  391. '
  392. AUSGABE:
  393. Locate 9,5 : For Q1=1 To 11*(4-MX)+1 : Print "-"; : Next : Print 
  394. For Z1=1 To 4-MX
  395.    Locate 9,Y Curs : Print "|";
  396.    For X1=1 To 5
  397.       For W1=1 To 5-Z1-MX
  398.          For Y1=1 To 5
  399.             If A(Z1,W1,X1,Y1)=0 Then Print " .";
  400.             If A(Z1,W1,X1,Y1)=1 Then Print " X";
  401.             If A(Z1,W1,X1,Y1)=-1 Then Print " -";
  402.          Next 
  403.          Print "|";
  404.       Next 
  405.       Print : Locate 9,Y Curs : Print "|";
  406.    Next 
  407.    For Q1=1 To 11*(5-Z1-MX) : Print "-"; : Next : Print 
  408. Next 
  409. Locate 9,Y Curs-1
  410. For X1=1 To 4-MX
  411.    Print "-" : Locate 9,Y Curs-7
  412. Next 
  413. ' Statistik
  414. Locate 10*MX+32,21
  415. For X1=1 To 10*(5-MX)+1
  416.    Print "-";
  417. Next 
  418. Locate 10*MX+32,22 : Print "|";
  419. For X1=1 To 5-MX
  420.    Print "         |";
  421. Next 
  422. For X1=1 To 5-MX
  423.    Locate 10*MX+X1*10+23,22
  424.    BEZ$(X1)=Left$(BEZ$(X1),8)
  425.    Print Extension_22_011A(BEZ$(X1),8,1)
  426. Next 
  427. Locate 10*MX+32,23 : Print "|";
  428. For X1=1 To 10*(5-MX)-1
  429.    Print "-";
  430. Next 
  431. Print "|"
  432. Locate 10*MX+32,29
  433. For X1=1 To 10*(5-MX)+1
  434.    Print "-";
  435. Next 
  436. For X1=1 To 5
  437.    Locate 10*MX+32,23+X1 : Print "|";BLOCK1$(X1)
  438. Next 
  439. E=5
  440. For X1=1 To 5
  441.    For Y1=1 To 5
  442.       AUSGABE$="" : If A(1,1,X1,Y1)=1 Then AUSGABE$=BLOCK2$(Y1) : E=E+1
  443.       AUSGABE$=Left$(AUSGABE$,8) : AUSGABE$= Extension_22_011A(AUSGABE$,8,1)
  444.       Locate 10*MX+42,23+X1 : Print "|";AUSGABE$
  445.       AUSGABE$="" : If A(1,2,X1,Y1)=1 Then AUSGABE$=BLOCK3$(Y1) : E=E+1
  446.       AUSGABE$=Left$(AUSGABE$,8) : AUSGABE$= Extension_22_011A(AUSGABE$,8,1)
  447.       Locate 10*MX+52,23+X1 : Print "|";AUSGABE$
  448.       AUSGABE$="" : If A(1,3,X1,Y1)=1 Then AUSGABE$=BLOCK4$(Y1) : E=E+1
  449.       AUSGABE$=Left$(AUSGABE$,8) : AUSGABE$= Extension_22_011A(AUSGABE$,8,1)
  450.       Locate 10*MX+62,23+X1 : Print "|";AUSGABE$
  451.       If MX=1 Then Goto NOOUT
  452.       AUSGABE$="" : If A(1,4,X1,Y1)=1 Then AUSGABE$=BLOCK5$(Y1) : E=E+1
  453.       AUSGABE$=Left$(AUSGABE$,8) : AUSGABE$= Extension_22_011A(AUSGABE$,8,1)
  454.       Locate 10*MX+72,23+X1 : Print "|";AUSGABE$
  455.       NOOUT:
  456.       Locate 82,23+X1 : Print "|"
  457.    Next 
  458. Next 
  459. If E=5*(5-MX) Then Goto OK
  460. Return 
  461. '
  462. ' Setze Mauszonen
  463. '
  464. _SETZONEN:
  465. KX0=81 : KY1=48
  466. NR=0
  467. For V=0 To 3-MX
  468.    Q=3-V-MX
  469.    For W=0 To 4
  470.       KX1=KX0 : KY2=KY1+7 : KX2=KX1+15
  471.       For Y=0 To Q
  472.          For X=1 To 5
  473.             NR=NR+1
  474.             Set Zone NR,KX1,KY1 To KX2,KY2
  475.             KX1=KX2+1 : KX2=KX1+15
  476.          Next 
  477.          KX1=KX2-7 : KX2=KX1+15
  478.       Next 
  479.       KX1=KX0 : KY1=KY2+1
  480.    Next 
  481.    KY1=KY2+9
  482. Next 
  483. Return 
  484. '
  485. ' R�tsel gel�st
  486. '
  487. OK:
  488. Change Mouse 1 : Bell 
  489. S=Timer/50
  490. If S>60 Then M=S/60 : S=S mod 60
  491. Locate 35,19 : Pen 3 : Print "Du hast";M;" Minuten und";S;" Sekunden gebraucht!"
  492. If HELP=1 Then Locate 35,20 : Print "Das n�chste Mal versuchst Du es aber alleine!"
  493. Pen 2 : Clear Key : Extension_22_0266 : If Key State(69) Then End 
  494. Goto RESTART
  495. '
  496. ' Dateneingabe 
  497. '
  498. DATIN:
  499. Curs On 
  500. For X=1 To 5
  501.    GIN1:
  502.    Locate X*10+23,22 : Inverse On : Print "         " : Locate X*10+23,22
  503.    BEZ$(X)= Extension_22_024E("",9) : Inverse Off : Locate X*10+23,22 : Print Extension_22_011A(BEZ$(X),9,1)
  504.    If X=1 Then If BEZ$(1)="" Then End 
  505.    If X=1 Then If BEZ$(1)="4" Then AUTO=4 : X=5 : Goto AUT
  506.    If X=1 Then If BEZ$(1)="5" Then AUTO=5 : X=5 : Goto AUT
  507.    If X=5 Then If BEZ$(5)="" Then Locate X*10+23,22 : Print "         " : MX=1
  508.    If X<5 Then If BEZ$(X)="" Then Goto GIN1
  509.    AUT:
  510. Next 
  511. If AUTO>0 Then Goto AUTOM
  512. For X=1 To 5
  513.    GIN2:
  514.    Locate 33,23+X : Inverse On : Print "         " : Locate 33,23+X
  515.    BLOCK1$(X)= Extension_22_024E("",9) : Inverse Off : Locate 33,23+X : Print Extension_22_011A(BLOCK1$(X),9,1)
  516.    If BLOCK1$(X)="" Then Goto GIN2
  517. Next 
  518. For X=1 To 5
  519.    GIN3:
  520.    Locate 43,23+X : Inverse On : Print "         " : Locate 43,23+X
  521.    BLOCK2$(X)= Extension_22_024E("",9) : Inverse Off : Locate 43,23+X : Print Extension_22_011A(BLOCK2$(X),9,1)
  522.    If BLOCK2$(X)="" Then Goto GIN3
  523. Next 
  524. For X=1 To 5
  525.    GIN4:
  526.    Locate 53,23+X : Inverse On : Print "         " : Locate 53,23+X
  527.    BLOCK3$(X)= Extension_22_024E("",9) : Inverse Off : Locate 53,23+X : Print Extension_22_011A(BLOCK3$(X),9,1)
  528.    If BLOCK3$(X)="" Then Goto GIN4
  529. Next 
  530. For X=1 To 5
  531.    GIN5:
  532.    Locate 63,23+X : Inverse On : Print "         " : Locate 63,23+X
  533.    BLOCK4$(X)= Extension_22_024E("",9) : Inverse Off : Locate 63,23+X : Print Extension_22_011A(BLOCK4$(X),9,1)
  534.    If BLOCK4$(X)="" Then Goto GIN5
  535. Next 
  536. If BEZ$(5)="" Then Goto NOIN
  537. For X=1 To 5
  538.    GIN6:
  539.    Locate 73,23+X : Inverse On : Print "         " : Locate 73,23+X
  540.    BLOCK5$(X)= Extension_22_024E("",9) : Inverse Off : Locate 73,23+X : Print Extension_22_011A(BLOCK5$(X),9,1)
  541.    If BLOCK5$(X)="" Then Goto GIN6
  542. Next 
  543. NOIN:
  544. Curs Off : Cls 
  545. Return 
  546. AUTOM:
  547. If AUTO=4
  548.    For X=1 To 5
  549.       BEZ$(X)="Feld"+Str$(X)
  550.       BLOCK1$(X)="a"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK1$(X)
  551.       BLOCK2$(X)="b"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK2$(X)
  552.       BLOCK3$(X)="c"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK3$(X)
  553.       BLOCK4$(X)="d"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK4$(X)
  554.    Next 
  555.    MX=1
  556. End If 
  557. If AUTO=5
  558.    For X=1 To 5
  559.       BEZ$(X)="Feld"+Str$(X)
  560.       BLOCK1$(X)="a"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK1$(X)
  561.       BLOCK2$(X)="b"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK2$(X)
  562.       BLOCK3$(X)="c"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK3$(X)
  563.       BLOCK4$(X)="d"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK4$(X)
  564.       BLOCK5$(X)="e"+(Str$(X)-" ") : Locate 33,23+X : Print BLOCK5$(X)
  565.    Next 
  566. End If 
  567. AUTO=0
  568. Curs Off : Cls 
  569. Return