home *** CD-ROM | disk | FTP | other *** search
/ Amiga Special: Spiele Hits / Hits-CD.iso / aminet / spiele / 8queens.lha / 8Queens (.txt) next >
AmigaBASIC Source Code  |  1997-06-08  |  5KB  |  239 lines

  1.   CLS
  2.   REM ***************************************************************
  3.   REM ***************************************************************
  4.   REM ***************************************************************
  5.   REM **** 8 Damen Problem                   © 1997 Klaus Häfner ****
  6.   REM **** 1299852 Stellungen werden gecheckt auf touch-free     ****
  7.   REM ***************************************************************
  8.   DIM brett(8,8)
  9.   GOSUB drawbrett
  10.   d1x=1:d2x=2:d3x=3:d4x=4:d5x=5:d6x=6:d7x=7:d8x=8
  11.   d1y=8:d2y=8:d3y=8:d4y=8:d5y=8:d6y=8:d7y=8:d8y=8
  12.   stell=0
  13.   z$=TIME$
  14.   GOSUB drawfigures
  15.   LOCATE 14,1
  16.   PRINT "Getestete Stellungen         :"
  17.   PRINT "Treffer in dieser Stellung   :"
  18.   PRINT "Zeit                         :"
  19.   PRINT "Startzeit                    :"
  20.   REM ***************************************************************
  21.   REM Hauptschleife *************************************************  
  22. teil1:
  23.   FOR dame1=8 TO 1 STEP -1
  24.   d1y=dame1
  25.   GOSUB teil2
  26.   NEXT dame1
  27.   GOTO schluss
  28. teil2:
  29.   FOR dame2=8 TO 1 STEP -1
  30.   d2y=dame2
  31.   GOSUB teil3
  32.   NEXT dame2
  33.   RETURN
  34. teil3:
  35.   FOR dame3=8 TO 1 STEP -1
  36.   d3y=dame3
  37.   GOSUB teil4
  38.   NEXT dame3
  39.   RETURN
  40. teil4:
  41.   FOR dame4=8 TO 1 STEP -1
  42.   d4y=dame4
  43.   GOSUB checkit
  44.   GOSUB killfigures
  45.   GOSUB drawfigures
  46.   IF hit=0 THEN GOTO schluss
  47.   GOSUB teil5
  48.   NEXT dame4
  49.   RETURN
  50. teil5:
  51.   FOR dame5=8 TO 1 STEP -1
  52.   d5y=dame5
  53.   GOSUB teil6
  54.   NEXT dame5
  55.   RETURN
  56. teil6:
  57.   FOR dame6=8 TO 1 STEP -1
  58.   d6y=dame6
  59.   GOSUB teil7
  60.   NEXT dame6
  61.   RETURN
  62. teil7:
  63.   FOR dame7=8 TO 1 STEP -1
  64.   d7y=dame7
  65.   GOSUB teil8
  66.   NEXT dame7
  67.   RETURN
  68. teil8:
  69.   FOR dame8=8 TO 1 STEP -1
  70.   d8y=dame8
  71.   GOSUB checkit
  72.   GOSUB killfigures
  73.   GOSUB drawfigures
  74.   IF hit=0 THEN GOTO schluss
  75.   stell=stell+1
  76.   LOCATE 14,31:PRINT stell
  77.   LOCATE 15,31:PRINT hit
  78.   LOCATE 16,32:PRINT TIME$
  79.   LOCATE 17,32:PRINT z$
  80.   NEXT dame8
  81.   RETURN
  82. REM ***************************************************************
  83. REM programmende **************************************************
  84. schluss:
  85.   END
  86. drawbrett:
  87.     FOR loop=10 TO 90 STEP 10
  88.     LINE (110,loop)-(270,loop)
  89.     NEXT loop
  90.     FOR loop=110 TO 270  STEP 20
  91.     LINE (loop,10)-(loop,90)
  92.     NEXT loop
  93.     RETURN
  94. drawfigures:
  95. REM Stellungsmerker löschen
  96.     FOR loop=1 TO 8
  97.     FOR lips=1 TO 8
  98.     brett(loop,lips)=0
  99.     NEXT lips,loop
  100. REM Figuren ins feld "circlen"
  101.     cx=d1x
  102.     cy=d1y
  103.     GOSUB throwit
  104.     cx=d2x
  105.     cy=d2y
  106.     GOSUB throwit
  107.     cx=d3x
  108.     cy=d3y
  109.     GOSUB throwit
  110.     cx=d4x
  111.     cy=d4y
  112.     GOSUB throwit
  113.     cx=d5x
  114.     cy=d5y
  115.     GOSUB throwit
  116.     cx=d6x
  117.     cy=d6y
  118.     GOSUB throwit
  119.     cx=d7x
  120.     cy=d7y
  121.     GOSUB throwit
  122.     cx=d8x
  123.     cy=d8y
  124.     GOSUB throwit
  125.     RETURN
  126. throwit:
  127.     brett(cx,cy)=1    
  128.     x=(cx*20)+100
  129.     y=(cy*10)+5
  130.     CIRCLE (x,y),6,2
  131.     RETURN
  132. REM ****************************************************************
  133. checkit:
  134.     hit=0
  135.     FOR loop=1 TO 8:REM X
  136.     FOR lips=1 TO 8:REM Y
  137.     IF brett(loop,lips)=1 THEN GOSUB checkit2
  138.     NEXT lips,loop
  139.     RETURN
  140. checkit2:
  141.     cx=loop:cy=lips
  142. REM ********************* rechts unten checken
  143. checkru: 
  144.     cx=cx+1
  145.     cy=cy+1
  146.     IF cx>8 THEN GOTO checkr
  147.     IF cy>8 THEN GOTO checkr
  148.     IF brett(cx,cy)=1 THEN hit=hit+1:GOTO checkdone
  149.     GOTO checkru
  150. REM ********************* rechts checken
  151. checkr:
  152.     cx=loop:cy=lips
  153. checkr2:
  154.     cx=cx+1 
  155.     IF cx>8 THEN GOTO checkro
  156.     IF brett(cx,cy)=1 THEN hit=hit+1:GOTO checkdone
  157.     GOTO checkr2
  158. REM ********************* rechts oben checken
  159. checkro:
  160.     cx=loop:cy=lips
  161. checkro2:
  162.     cx=cx+1
  163.     cy=cy-1
  164.     IF cx>8 THEN GOTO checklo
  165.     IF cy<1 THEN GOTO checklo
  166.     IF brett(cx,cy)=1 THEN hit=hit+1:GOTO checkdone
  167.     GOTO checkro2
  168. REM ********************* links oben checken
  169. checklo:
  170.     cx=loop:cy=lips
  171. checklo2:
  172.     cx=cx-1
  173.     cy=cy-1
  174.     IF cx<1 THEN GOTO checkl
  175.     IF cy<1 THEN GOTO checkl
  176.     IF brett(cx,cy)=1 THEN hit=hit+1:GOTO checkdone
  177.     GOTO checklo2
  178. REM ********************* links checken
  179. checkl:
  180.     cx=loop:cy=lips
  181. checkl2:
  182.     cx=cx-1
  183.     IF cx<1 THEN GOTO checklu
  184.     IF brett(cx,cy)=1 THEN hit=hit+1:GOTO checkdone
  185.     GOTO checkl2
  186. REM ********************* links unten checken
  187. checklu:
  188.     cx=loop:cy=lips
  189. checklu2:
  190.     cx=cx-1
  191.     cy=cy+1
  192.     IF cx<1 THEN GOTO checkdone
  193.     IF cy>8 THEN GOTO checkdone
  194.     IF brett(cx,cy)=1 THEN hit=hit+1:GOTO checkdone
  195.     GOTO checklu2
  196. REM ********************* Fertig mit checken!!!!
  197. checkdone:
  198.     RETURN
  199. killfigures:
  200.     cx=d1x
  201.     cy=d1y
  202.     GOSUB throwit2
  203.     cx=d2x
  204.     cy=d2y
  205.     GOSUB throwit2
  206.     cx=d3x
  207.     cy=d3y
  208.     GOSUB throwit2
  209.     cx=d4x
  210.     cy=d4y
  211.     GOSUB throwit2
  212.     cx=d5x
  213.     cy=d5y
  214.     GOSUB throwit2
  215.     cx=d6x
  216.     cy=d6y
  217.     GOSUB throwit2
  218.     cx=d7x
  219.     cy=d7y
  220.     GOSUB throwit2
  221.     cx=d8x
  222.     cy=d8y
  223.     GOSUB throwit2
  224.     RETURN
  225. throwit2:
  226.     cy=cy+1
  227.     x=(cx*20)+100
  228.     y=(cy*10)+5
  229.     CIRCLE (x,y),6,0
  230.     IF cy=9 THEN GOTO throwit3
  231.     RETURN
  232. throwit3:
  233.     cy=1
  234.     x=(cx*20)+100
  235.     y=(cy*10)+5
  236.     CIRCLE (x,y),6,0
  237.     RETURN
  238.           
  239.