DECLARE SUB compgo2 (h%)\r
DECLARE SUB compgo (h%)\r
DECLARE SUB humngo (h%)\r
-DEFINT A-Z\r
+DefInt A-Z\r
\r
DECLARE SUB thinkc ()\r
DECLARE SUB thinkh ()\r
DECLARE SUB mklau ()\r
DECLARE SUB showr (x, y)\r
DECLARE SUB show ()\r
-DIM SHARED font(0 TO 7, 0 TO 7, 0 TO 255)\r
-DIM SHARED siz, fi, ri, rs\r
-DIM SHARED stri$\r
-DIM SHARED humx1, humy1, humx2, humy2\r
-DIM SHARED sug, smax\r
-DIM SHARED npos AS LONG\r
-DIM SHARED cx1, cy1, cx2, cy2\r
-\r
-siz = 6 ' Board size\r
+Dim Shared font(0 To 7, 0 To 7, 0 To 255)\r
+Dim Shared siz, fi, ri, rs\r
+Dim Shared stri$\r
+Dim Shared humx1, humy1, humx2, humy2\r
+Dim Shared sug, smax\r
+Dim Shared npos As Long\r
+Dim Shared cx1, cy1, cx2, cy2\r
+\r
+siz = 6 ' Board size\r
fi = 0\r
ri = 2\r
-smax = 3 ' thinking depth\r
+smax = 3 ' thinking depth\r
\r
\r
-DIM SHARED lau(-1 TO siz + 2, -1 TO siz + 2)\r
+Dim Shared lau(-1 To siz + 2, -1 To siz + 2)\r
\r
start\r
mklau\r
show\r
playg\r
\r
-SUB cmd (a$)\r
-\r
-mitus = 0\r
-DIM sona$(1 TO 10)\r
-FOR b = 1 TO 10\r
-sona$(b) = ""\r
-NEXT b\r
-\r
-d = 1\r
-e = 1\r
-FOR b = 1 TO LEN(a$)\r
-c$ = RIGHT$(LEFT$(a$, b), 1)\r
-IF c$ = " " THEN\r
-IF e = 0 THEN d = d + 1: e = 1\r
-GOTO 4\r
-END IF\r
-e = 0\r
-sona$(d) = sona$(d) + c$\r
-4\r
-NEXT b\r
-IF e = 1 THEN d = d - 1\r
-mitus = d\r
-\r
-\r
-SELECT CASE sona$(1)\r
-CASE "m"\r
-IF humx1 > 0 THEN msg "move replaced", 14\r
-\r
-humx1 = ASC(LEFT$(sona$(2), 1)) - 64\r
-IF humx1 > 32 THEN humx1 = humx1 - 32\r
-humy1 = VAL(RIGHT$(sona$(2), LEN(sona$(2)) - 1))\r
-humx2 = ASC(LEFT$(sona$(3), 1)) - 64\r
-IF humx2 > 32 THEN humx2 = humx2 - 32\r
-humy2 = VAL(RIGHT$(sona$(3), LEN(sona$(2)) - 1))\r
-\r
-CASE "h"\r
-msg "h - display help screen", 14\r
-msg "q - to quit", 14\r
-msg "m <from> <to> - make move", 14\r
-msg "n - no. positions processed", 14\r
-\r
-CASE "q"\r
-SYSTEM\r
-\r
-CASE "n"\r
-b$ = "positions processed:" + STR$(npos)\r
-msg b$, 14\r
-\r
-END SELECT\r
-\r
-END SUB\r
-\r
-SUB compgo (h)\r
-IF sug > smax THEN h = 0: GOTO 6\r
-sug = sug + 1\r
-npos = npos + 1\r
-freet\r
-IF sug = 1 THEN h1 = -2000 ELSE h1 = -1000\r
-\r
-'cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1\r
-b = 0\r
-c = 0\r
-m = 0\r
-FOR y = 1 TO siz ' check for eating\r
-FOR x = 1 TO siz\r
-IF lau(x, y) = 1 THEN\r
-8\r
-IF (lau(x - 1, y + 1) = 2) AND (lau(x - 2, y + 2) = 0) THEN\r
-SWAP lau(x, y), lau(x - 2, y + 2)\r
-lau(x - 1, y + 1) = 0\r
-compki m1, h2, x - 2, y + 2\r
-lau(x - 1, y + 1) = 2\r
-SWAP lau(x, y), lau(x - 2, y + 2)\r
-m1 = m1 + 1\r
-IF m1 > m THEN m = m1: h1 = -1000\r
-IF m1 = m THEN\r
-IF h2 + 1 > h1 THEN\r
-h1 = h2 + 1\r
-IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y + 2\r
-END IF\r
-END IF\r
-b = 1\r
-END IF\r
-\r
-\r
-IF (lau(x + 1, y + 1) = 2) AND (lau(x + 2, y + 2) = 0) THEN\r
-SWAP lau(x, y), lau(x + 2, y + 2)\r
-lau(x + 1, y + 1) = 0\r
-compki m1, h2, x + 2, y + 2\r
-lau(x + 1, y + 1) = 2\r
-SWAP lau(x, y), lau(x + 2, y + 2)\r
-m1 = m1 + 1\r
-IF m1 > m THEN m = m1: h1 = -1000\r
-IF m1 = m THEN\r
-IF h2 + 1 > h1 THEN\r
-h1 = h2 + 1\r
-IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y + 2\r
-END IF\r
-END IF\r
-b = 1\r
-END IF\r
-\r
-\r
-IF (lau(x - 1, y - 1) = 2) AND (lau(x - 2, y - 2) = 0) THEN\r
-SWAP lau(x, y), lau(x - 2, y - 2)\r
-lau(x - 1, y - 1) = 0\r
-compki m1, h2, x - 2, y - 2\r
-lau(x - 1, y - 1) = 2\r
-SWAP lau(x, y), lau(x - 2, y - 2)\r
-m1 = m1 + 1\r
-IF m1 > m THEN m = m1: h1 = -1000\r
-IF m1 = m THEN\r
-IF h2 + 1 > h1 THEN\r
-h1 = h2 + 1\r
-IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y - 2\r
-END IF\r
-END IF\r
-b = 1\r
-END IF\r
-\r
-\r
-IF (lau(x + 1, y - 1) = 2) AND (lau(x + 2, y - 2) = 0) THEN\r
-SWAP lau(x, y), lau(x + 2, y - 2)\r
-lau(x + 1, y - 1) = 0\r
-compki m1, h2, x + 2, y - 2\r
-lau(x + 1, y - 1) = 2\r
-SWAP lau(x, y), lau(x + 2, y - 2)\r
-m1 = m1 + 1\r
-IF m1 > m THEN m = m1: h1 = -1000\r
-IF m1 = m THEN\r
-IF h2 + 1 > h1 THEN\r
-h1 = h2 + 1\r
-IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y - 2\r
-END IF\r
-END IF\r
-b = 1\r
-END IF\r
-\r
-\r
-\r
-\r
-\r
-IF c = 1 THEN GOTO 9\r
-END IF\r
-NEXT x\r
-NEXT y\r
-\r
-9\r
-IF (b = 1) AND (npos = 1) THEN\r
-cx3 = (cx1 + cx2) / 2\r
-cy3 = (cy1 + cy2) / 2\r
-lau(cx3, cy3) = 0\r
-showr cx3, cy3\r
-\r
-SWAP lau(cx1, cy1), lau(cx2, cy2)\r
-showr cx1, cy1\r
-showr cx2, cy2\r
-msg "NJAM!", 10\r
-x = cx2\r
-y = cy2\r
-c = 1\r
-b = 0\r
-GOTO 8\r
-END IF\r
-IF c = 1 THEN\r
-cx1 = 1: cy1 = 1: cx2 = 1: cy2 = 1\r
-GOTO 10\r
-END IF\r
-\r
-IF sug = 1 THEN\r
-msg "l��a ei saa", 4\r
-msg STR$(h1), 4\r
-END IF\r
-\r
-FOR y = 1 TO siz ' unuseful move\r
-FOR x = 1 TO siz\r
-IF lau(x, y) = 1 THEN\r
-IF lau(x - 1, y + 1) = 0 THEN\r
-SWAP lau(x, y), lau(x - 1, y + 1)\r
-humngo h2\r
-SWAP lau(x, y), lau(x - 1, y + 1)\r
-IF h2 > h1 THEN\r
-h1 = h2\r
-IF sug = 1 THEN cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1\r
-END IF\r
-END IF\r
-\r
-IF lau(x + 1, y + 1) = 0 THEN\r
-SWAP lau(x, y), lau(x + 1, y + 1)\r
-humngo h2\r
-SWAP lau(x, y), lau(x + 1, y + 1)\r
-IF h2 > h1 THEN\r
-h1 = h2\r
-IF sug = 1 THEN cx1 = x: cy1 = y: cx2 = x + 1: cy2 = y + 1\r
-END IF\r
-END IF\r
-\r
-END IF\r
-NEXT x\r
-NEXT y\r
-h = h1\r
-10\r
-sug = sug - 1\r
-6\r
-END SUB\r
-\r
-SUB compki (m, h, x1, y1)\r
-h1 = 0\r
-\r
-FOR y = 1 TO siz\r
-FOR x = 1 TO siz\r
-NEXT x\r
-NEXT y\r
-h = h1\r
-\r
-END SUB\r
-\r
-SUB freet\r
-a$ = INKEY$\r
-IF a$ = "" THEN\r
-ELSE\r
-IF a$ = CHR$(8) THEN\r
-IF LEN(stri$) > 0 THEN\r
-stri$ = LEFT$(stri$, LEN(stri$) - 1): GOTO 3\r
-END IF\r
-END IF\r
-IF a$ = CHR$(13) THEN\r
-IF LEN(stri$) > 0 THEN\r
-msg stri$, 7\r
-cmd stri$\r
-stri$ = ""\r
-END IF\r
-GOTO 3\r
-END IF\r
-stri$ = stri$ + a$\r
-3\r
-LINE (400, 468)-(639, 479), 1, BF\r
-prn 405, 469, 14, stri$\r
-END IF\r
-END SUB\r
-\r
-SUB getfnt\r
-SCREEN 13\r
-FOR a = 0 TO 255\r
-IF (a > 5) AND (a < 17) THEN GOTO 2\r
-LOCATE 1, 1\r
-PRINT CHR$(a)\r
-2\r
-FOR y = 0 TO 7\r
-FOR x = 0 TO 7\r
-font(x, y, a) = POINT(x, y)\r
-NEXT x\r
-NEXT y\r
-NEXT a\r
-\r
-END SUB\r
-\r
-SUB humngo (h)\r
-npos = npos + 1\r
-h1 = 1000\r
-\r
-FOR y = siz TO 1 STEP -1\r
-FOR x = siz TO 1 STEP -1\r
-IF lau(x, y) = 2 THEN\r
-IF lau(x - 1, y - 1) = 0 THEN\r
-SWAP lau(x, y), lau(x - 1, y - 1)\r
-compgo h2\r
-SWAP lau(x, y), lau(x - 1, y - 1)\r
-IF h2 < h1 THEN h1 = h2\r
-END IF\r
-\r
-IF lau(x + 1, y - 1) = 0 THEN\r
-SWAP lau(x, y), lau(x + 1, y - 1)\r
-compgo h2\r
-SWAP lau(x, y), lau(x + 1, y - 1)\r
-IF h2 < h1 THEN h1 = h2\r
-END IF\r
-\r
-\r
-IF (lau(x - 1, y - 1) = 1) AND (lau(x - 2, y - 2) = 0) THEN\r
-SWAP lau(x, y), lau(x - 2, y - 2)\r
-lau(x - 1, y - 1) = 0\r
-humngo h2\r
-lau(x - 1, y - 1) = 1\r
-SWAP lau(x, y), lau(x - 2, y - 2)\r
-IF h2 - 1 < h1 THEN h1 = h2 - 1\r
-END IF\r
-\r
-IF (lau(x + 1, y - 1) = 1) AND (lau(x + 2, y - 2) = 0) THEN\r
-SWAP lau(x, y), lau(x + 2, y - 2)\r
-lau(x + 1, y - 1) = 0\r
-humngo h2\r
-lau(x + 1, y - 1) = 1\r
-SWAP lau(x, y), lau(x + 2, y - 2)\r
-IF h2 - 1 < h1 THEN h1 = h2 - 1\r
-END IF\r
-\r
-\r
-\r
-\r
-END IF\r
-NEXT x\r
-NEXT y\r
-h = h1\r
-END SUB\r
-\r
-SUB mklau\r
-FOR y = -1 TO siz + 2\r
-FOR x = -1 TO siz + 2\r
-lau(x, y) = -1\r
-NEXT x\r
-NEXT y\r
-\r
-FOR y = 1 TO siz\r
-FOR x = 1 TO siz\r
-lau(x, y) = 0\r
-NEXT x\r
-NEXT y\r
-\r
-FOR y = 1 TO ri\r
-FOR x = 1 TO siz\r
-IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN\r
-lau(x, y) = 1\r
-END IF\r
-NEXT x\r
-NEXT y\r
-\r
-FOR y = siz - ri + 1 TO siz\r
-FOR x = 1 TO siz\r
-IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN\r
-lau(x, y) = 2\r
-END IF\r
-NEXT x\r
-NEXT y\r
-\r
-END SUB\r
-\r
-SUB msg (a$, c)\r
-DIM buf(1 TO 10000)\r
-FOR x = 400 TO 630 STEP 40\r
-GET (x, 8)-(x + 39, 467), buf(1)\r
-PUT (x, 0), buf(1), PSET\r
-NEXT x\r
-LINE (400, 460)-(639, 467), 0, BF\r
-prn 405, 460, c, a$\r
-END SUB\r
-\r
-SUB playg\r
-'GOTO 7\r
-1\r
-thinkc\r
-show\r
-7\r
-thinkh\r
-show\r
-GOTO 1\r
-\r
-\r
-END SUB\r
-\r
-SUB prn (x, y, c, a$)\r
-x1 = x\r
-y1 = y\r
-FOR a = 1 TO LEN(a$)\r
-b = ASC(RIGHT$(LEFT$(a$, a), 1))\r
-FOR y2 = 0 TO 7\r
-FOR x2 = 0 TO 7\r
-IF font(x2, y2, b) > 0 THEN PSET (x2 + x1, y2 + y1), c\r
-NEXT x2\r
-NEXT y2\r
-x1 = x1 + 8\r
-NEXT a\r
-END SUB\r
-\r
-SUB show\r
-FOR y = 1 TO siz\r
-FOR x = 1 TO siz\r
-showr x, y\r
-NEXT x\r
-NEXT y\r
-\r
-sp = rs / 2\r
-FOR x = 1 TO siz\r
-prn ((x - 1) * rs + 12 + sp), 2, 10, CHR$(64 + x)\r
-prn ((x - 1) * rs + 12 + sp), siz * rs + 11, 10, CHR$(64 + x)\r
-NEXT x\r
-\r
-FOR y = 1 TO siz\r
-a$ = STR$(y)\r
-a$ = RIGHT$(a$, LEN(a$) - 1)\r
-prn 15 - (LEN(a$) * 8), (y - 1) * rs + sp + 7, 10, a$\r
-prn (siz * rs + 16), (y - 1) * rs + sp + 7, 10, a$\r
-NEXT y\r
-\r
-\r
-END SUB\r
-\r
-SUB showr (x, y)\r
-IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN c = 8 ELSE c = 7\r
-x1 = (x - 1) * rs + 15\r
-y1 = (y - 1) * rs + 10\r
-LINE (x1, y1)-(x1 + rs - 1, y1 + rs - 1), c, BF\r
-IF lau(x, y) > 0 THEN\r
-sp = rs / 2\r
-IF lau(x, y) = 1 THEN c1 = 15 ELSE c1 = 14\r
-CIRCLE (x1 + sp, y1 + sp), sp - 1, c1\r
-PAINT (x1 + sp, y1 + sp), c1\r
-END IF\r
-END SUB\r
-\r
-SUB start\r
-getfnt\r
-SCREEN 12\r
-LINE (399, 0)-(399, 479), 13\r
-msg "type 'h' for help", 14\r
-\r
-rs = INT(370 / siz)\r
-\r
-\r
-END SUB\r
-\r
-SUB thinkc\r
-msg "computer turn", 14\r
-sug = 0\r
-npos = 0\r
-cx1 = -1\r
-\r
-compgo h\r
-cmd "n"\r
-IF cx1 = -1 THEN msg "you won!", 10: msg "--------", 10: SYSTEM\r
-\r
-IF h <= -2 THEN msg "oh no...", 10\r
-IF h = -1 THEN msg "oops!", 10\r
-IF h = 1 THEN msg "yess! I will eat soon!", 10\r
-IF h >= 2 THEN msg "HA HA HA YOU ARE IN TROUBLE!", 10\r
-\r
-\r
-IF ABS(cx1 - cx2) = 2 THEN\r
-cx3 = (cx1 + cx2) / 2\r
-cy3 = (cy1 + cy2) / 2\r
-lau(cx3, cy3) = 0\r
-showr cx3, cy3\r
-END IF\r
-\r
-SWAP lau(cx1, cy1), lau(cx2, cy2)\r
-showr cx1, cy1\r
-showr cx2, cy2\r
-\r
-END SUB\r
-\r
-SUB thinkh\r
-msg "your turn", 14\r
-5\r
-freet\r
-IF humx1 = 0 THEN GOTO 5\r
-SWAP lau(humx2, humy2), lau(humx1, humy1)\r
-showr humx1, humy1\r
-showr humx2, humy2\r
-IF ABS(humx1 - humx2) = 2 THEN\r
-cx3 = (humx1 + humx2) / 2\r
-cy3 = (humy1 + humy2) / 2\r
-lau(cx3, cy3) = 0\r
-showr cx3, cy3\r
-END IF\r
-\r
-humx1 = 0\r
-END SUB\r
+Sub cmd (a$)\r
+\r
+ mitus = 0\r
+ Dim sona$(1 To 10)\r
+ For b = 1 To 10\r
+ sona$(b) = ""\r
+ Next b\r
+\r
+ d = 1\r
+ e = 1\r
+ For b = 1 To Len(a$)\r
+ c$ = Right$(Left$(a$, b), 1)\r
+ If c$ = " " Then\r
+ If e = 0 Then d = d + 1: e = 1\r
+ GoTo 4\r
+ End If\r
+ e = 0\r
+ sona$(d) = sona$(d) + c$\r
+ 4\r
+ Next b\r
+ If e = 1 Then d = d - 1\r
+ mitus = d\r
+\r
+\r
+ Select Case sona$(1)\r
+ Case "m"\r
+ If humx1 > 0 Then msg "move replaced", 14\r
+\r
+ humx1 = Asc(Left$(sona$(2), 1)) - 64\r
+ If humx1 > 32 Then humx1 = humx1 - 32\r
+ humy1 = Val(Right$(sona$(2), Len(sona$(2)) - 1))\r
+ humx2 = Asc(Left$(sona$(3), 1)) - 64\r
+ If humx2 > 32 Then humx2 = humx2 - 32\r
+ humy2 = Val(Right$(sona$(3), Len(sona$(2)) - 1))\r
+\r
+ Case "h"\r
+ msg "h - display help screen", 14\r
+ msg "q - to quit", 14\r
+ msg "m <from> <to> - make move", 14\r
+ msg "n - no. positions processed", 14\r
+\r
+ Case "q"\r
+ System\r
+\r
+ Case "n"\r
+ b$ = "positions processed:" + Str$(npos)\r
+ msg b$, 14\r
+\r
+ End Select\r
+\r
+End Sub\r
+\r
+Sub compgo (h)\r
+ If sug > smax Then h = 0: GoTo 6\r
+ sug = sug + 1\r
+ npos = npos + 1\r
+ freet\r
+ If sug = 1 Then h1 = -2000 Else h1 = -1000\r
+\r
+ 'cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1\r
+ b = 0\r
+ c = 0\r
+ m = 0\r
+ For y = 1 To siz ' check for eating\r
+ For x = 1 To siz\r
+ If lau(x, y) = 1 Then\r
+ 8\r
+ If (lau(x - 1, y + 1) = 2) And (lau(x - 2, y + 2) = 0) Then\r
+ Swap lau(x, y), lau(x - 2, y + 2)\r
+ lau(x - 1, y + 1) = 0\r
+ compki m1, h2, x - 2, y + 2\r
+ lau(x - 1, y + 1) = 2\r
+ Swap lau(x, y), lau(x - 2, y + 2)\r
+ m1 = m1 + 1\r
+ If m1 > m Then m = m1: h1 = -1000\r
+ If m1 = m Then\r
+ If h2 + 1 > h1 Then\r
+ h1 = h2 + 1\r
+ If npos = 1 Then cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y + 2\r
+ End If\r
+ End If\r
+ b = 1\r
+ End If\r
+\r
+\r
+ If (lau(x + 1, y + 1) = 2) And (lau(x + 2, y + 2) = 0) Then\r
+ Swap lau(x, y), lau(x + 2, y + 2)\r
+ lau(x + 1, y + 1) = 0\r
+ compki m1, h2, x + 2, y + 2\r
+ lau(x + 1, y + 1) = 2\r
+ Swap lau(x, y), lau(x + 2, y + 2)\r
+ m1 = m1 + 1\r
+ If m1 > m Then m = m1: h1 = -1000\r
+ If m1 = m Then\r
+ If h2 + 1 > h1 Then\r
+ h1 = h2 + 1\r
+ If npos = 1 Then cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y + 2\r
+ End If\r
+ End If\r
+ b = 1\r
+ End If\r
+\r
+\r
+ If (lau(x - 1, y - 1) = 2) And (lau(x - 2, y - 2) = 0) Then\r
+ Swap lau(x, y), lau(x - 2, y - 2)\r
+ lau(x - 1, y - 1) = 0\r
+ compki m1, h2, x - 2, y - 2\r
+ lau(x - 1, y - 1) = 2\r
+ Swap lau(x, y), lau(x - 2, y - 2)\r
+ m1 = m1 + 1\r
+ If m1 > m Then m = m1: h1 = -1000\r
+ If m1 = m Then\r
+ If h2 + 1 > h1 Then\r
+ h1 = h2 + 1\r
+ If npos = 1 Then cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y - 2\r
+ End If\r
+ End If\r
+ b = 1\r
+ End If\r
+\r
+\r
+ If (lau(x + 1, y - 1) = 2) And (lau(x + 2, y - 2) = 0) Then\r
+ Swap lau(x, y), lau(x + 2, y - 2)\r
+ lau(x + 1, y - 1) = 0\r
+ compki m1, h2, x + 2, y - 2\r
+ lau(x + 1, y - 1) = 2\r
+ Swap lau(x, y), lau(x + 2, y - 2)\r
+ m1 = m1 + 1\r
+ If m1 > m Then m = m1: h1 = -1000\r
+ If m1 = m Then\r
+ If h2 + 1 > h1 Then\r
+ h1 = h2 + 1\r
+ If npos = 1 Then cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y - 2\r
+ End If\r
+ End If\r
+ b = 1\r
+ End If\r
+\r
+\r
+\r
+\r
+\r
+ If c = 1 Then GoTo 9\r
+ End If\r
+ Next x\r
+ Next y\r
+\r
+ 9\r
+ If (b = 1) And (npos = 1) Then\r
+ cx3 = (cx1 + cx2) / 2\r
+ cy3 = (cy1 + cy2) / 2\r
+ lau(cx3, cy3) = 0\r
+ showr cx3, cy3\r
+\r
+ Swap lau(cx1, cy1), lau(cx2, cy2)\r
+ showr cx1, cy1\r
+ showr cx2, cy2\r
+ msg "NJAM!", 10\r
+ x = cx2\r
+ y = cy2\r
+ c = 1\r
+ b = 0\r
+ GoTo 8\r
+ End If\r
+ If c = 1 Then\r
+ cx1 = 1: cy1 = 1: cx2 = 1: cy2 = 1\r
+ GoTo 10\r
+ End If\r
+\r
+ If sug = 1 Then\r
+ msg "l��a ei saa", 4\r
+ msg Str$(h1), 4\r
+ End If\r
+\r
+ For y = 1 To siz ' unuseful move\r
+ For x = 1 To siz\r
+ If lau(x, y) = 1 Then\r
+ If lau(x - 1, y + 1) = 0 Then\r
+ Swap lau(x, y), lau(x - 1, y + 1)\r
+ humngo h2\r
+ Swap lau(x, y), lau(x - 1, y + 1)\r
+ If h2 > h1 Then\r
+ h1 = h2\r
+ If sug = 1 Then cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1\r
+ End If\r
+ End If\r
+\r
+ If lau(x + 1, y + 1) = 0 Then\r
+ Swap lau(x, y), lau(x + 1, y + 1)\r
+ humngo h2\r
+ Swap lau(x, y), lau(x + 1, y + 1)\r
+ If h2 > h1 Then\r
+ h1 = h2\r
+ If sug = 1 Then cx1 = x: cy1 = y: cx2 = x + 1: cy2 = y + 1\r
+ End If\r
+ End If\r
+\r
+ End If\r
+ Next x\r
+ Next y\r
+ h = h1\r
+ 10\r
+ sug = sug - 1\r
+ 6\r
+End Sub\r
+\r
+Sub compki (m, h, x1, y1)\r
+ h1 = 0\r
+\r
+ For y = 1 To siz\r
+ For x = 1 To siz\r
+ Next x\r
+ Next y\r
+ h = h1\r
+\r
+End Sub\r
+\r
+Sub freet\r
+ a$ = InKey$\r
+ If a$ = "" Then\r
+ Else\r
+ If a$ = Chr$(8) Then\r
+ If Len(stri$) > 0 Then\r
+ stri$ = Left$(stri$, Len(stri$) - 1): GoTo 3\r
+ End If\r
+ End If\r
+ If a$ = Chr$(13) Then\r
+ If Len(stri$) > 0 Then\r
+ msg stri$, 7\r
+ cmd stri$\r
+ stri$ = ""\r
+ End If\r
+ GoTo 3\r
+ End If\r
+ stri$ = stri$ + a$\r
+ 3\r
+ Line (400, 468)-(639, 479), 1, BF\r
+ prn 405, 469, 14, stri$\r
+ End If\r
+End Sub\r
+\r
+Sub getfnt\r
+ Screen 13\r
+ For a = 0 To 255\r
+ If (a > 5) And (a < 17) Then GoTo 2\r
+ Locate 1, 1\r
+ Print Chr$(a)\r
+ 2\r
+ For y = 0 To 7\r
+ For x = 0 To 7\r
+ font(x, y, a) = Point(x, y)\r
+ Next x\r
+ Next y\r
+ Next a\r
+\r
+End Sub\r
+\r
+Sub humngo (h)\r
+ npos = npos + 1\r
+ h1 = 1000\r
+\r
+ For y = siz To 1 Step -1\r
+ For x = siz To 1 Step -1\r
+ If lau(x, y) = 2 Then\r
+ If lau(x - 1, y - 1) = 0 Then\r
+ Swap lau(x, y), lau(x - 1, y - 1)\r
+ compgo h2\r
+ Swap lau(x, y), lau(x - 1, y - 1)\r
+ If h2 < h1 Then h1 = h2\r
+ End If\r
+\r
+ If lau(x + 1, y - 1) = 0 Then\r
+ Swap lau(x, y), lau(x + 1, y - 1)\r
+ compgo h2\r
+ Swap lau(x, y), lau(x + 1, y - 1)\r
+ If h2 < h1 Then h1 = h2\r
+ End If\r
+\r
+\r
+ If (lau(x - 1, y - 1) = 1) And (lau(x - 2, y - 2) = 0) Then\r
+ Swap lau(x, y), lau(x - 2, y - 2)\r
+ lau(x - 1, y - 1) = 0\r
+ humngo h2\r
+ lau(x - 1, y - 1) = 1\r
+ Swap lau(x, y), lau(x - 2, y - 2)\r
+ If h2 - 1 < h1 Then h1 = h2 - 1\r
+ End If\r
+\r
+ If (lau(x + 1, y - 1) = 1) And (lau(x + 2, y - 2) = 0) Then\r
+ Swap lau(x, y), lau(x + 2, y - 2)\r
+ lau(x + 1, y - 1) = 0\r
+ humngo h2\r
+ lau(x + 1, y - 1) = 1\r
+ Swap lau(x, y), lau(x + 2, y - 2)\r
+ If h2 - 1 < h1 Then h1 = h2 - 1\r
+ End If\r
+\r
+\r
+\r
+\r
+ End If\r
+ Next x\r
+ Next y\r
+ h = h1\r
+End Sub\r
+\r
+Sub mklau\r
+ For y = -1 To siz + 2\r
+ For x = -1 To siz + 2\r
+ lau(x, y) = -1\r
+ Next x\r
+ Next y\r
+\r
+ For y = 1 To siz\r
+ For x = 1 To siz\r
+ lau(x, y) = 0\r
+ Next x\r
+ Next y\r
+\r
+ For y = 1 To ri\r
+ For x = 1 To siz\r
+ If (x + y + fi) / 2 = Int((x + y + fi) / 2) Then\r
+ lau(x, y) = 1\r
+ End If\r
+ Next x\r
+ Next y\r
+\r
+ For y = siz - ri + 1 To siz\r
+ For x = 1 To siz\r
+ If (x + y + fi) / 2 = Int((x + y + fi) / 2) Then\r
+ lau(x, y) = 2\r
+ End If\r
+ Next x\r
+ Next y\r
+\r
+End Sub\r
+\r
+Sub msg (a$, c)\r
+ Dim buf(1 To 10000)\r
+ For x = 400 To 630 Step 40\r
+ Get (x, 8)-(x + 39, 467), buf(1)\r
+ Put (x, 0), buf(1), PSet\r
+ Next x\r
+ Line (400, 460)-(639, 467), 0, BF\r
+ prn 405, 460, c, a$\r
+End Sub\r
+\r
+Sub playg\r
+ 'GOTO 7\r
+ 1\r
+ thinkc\r
+ show\r
+ 7\r
+ thinkh\r
+ show\r
+ GoTo 1\r
+\r
+\r
+End Sub\r
+\r
+Sub prn (x, y, c, a$)\r
+ x1 = x\r
+ y1 = y\r
+ For a = 1 To Len(a$)\r
+ b = Asc(Right$(Left$(a$, a), 1))\r
+ For y2 = 0 To 7\r
+ For x2 = 0 To 7\r
+ If font(x2, y2, b) > 0 Then PSet (x2 + x1, y2 + y1), c\r
+ Next x2\r
+ Next y2\r
+ x1 = x1 + 8\r
+ Next a\r
+End Sub\r
+\r
+Sub show\r
+ For y = 1 To siz\r
+ For x = 1 To siz\r
+ showr x, y\r
+ Next x\r
+ Next y\r
+\r
+ sp = rs / 2\r
+ For x = 1 To siz\r
+ prn ((x - 1) * rs + 12 + sp), 2, 10, Chr$(64 + x)\r
+ prn ((x - 1) * rs + 12 + sp), siz * rs + 11, 10, Chr$(64 + x)\r
+ Next x\r
+\r
+ For y = 1 To siz\r
+ a$ = Str$(y)\r
+ a$ = Right$(a$, Len(a$) - 1)\r
+ prn 15 - (Len(a$) * 8), (y - 1) * rs + sp + 7, 10, a$\r
+ prn (siz * rs + 16), (y - 1) * rs + sp + 7, 10, a$\r
+ Next y\r
+\r
+\r
+End Sub\r
+\r
+Sub showr (x, y)\r
+ If (x + y + fi) / 2 = Int((x + y + fi) / 2) Then c = 8 Else c = 7\r
+ x1 = (x - 1) * rs + 15\r
+ y1 = (y - 1) * rs + 10\r
+ Line (x1, y1)-(x1 + rs - 1, y1 + rs - 1), c, BF\r
+ If lau(x, y) > 0 Then\r
+ sp = rs / 2\r
+ If lau(x, y) = 1 Then c1 = 15 Else c1 = 14\r
+ Circle (x1 + sp, y1 + sp), sp - 1, c1\r
+ Paint (x1 + sp, y1 + sp), c1\r
+ End If\r
+End Sub\r
+\r
+Sub start\r
+ getfnt\r
+ Screen 12\r
+ Line (399, 0)-(399, 479), 13\r
+ msg "type 'h' for help", 14\r
+\r
+ rs = Int(370 / siz)\r
+\r
+\r
+End Sub\r
+\r
+Sub thinkc\r
+ msg "computer turn", 14\r
+ sug = 0\r
+ npos = 0\r
+ cx1 = -1\r
+\r
+ compgo h\r
+ cmd "n"\r
+ If cx1 = -1 Then msg "you won!", 10: msg "--------", 10: System\r
+\r
+ If h <= -2 Then msg "oh no...", 10\r
+ If h = -1 Then msg "oops!", 10\r
+ If h = 1 Then msg "yess! I will eat soon!", 10\r
+ If h >= 2 Then msg "HA HA HA YOU ARE IN TROUBLE!", 10\r
+\r
+\r
+ If Abs(cx1 - cx2) = 2 Then\r
+ cx3 = (cx1 + cx2) / 2\r
+ cy3 = (cy1 + cy2) / 2\r
+ lau(cx3, cy3) = 0\r
+ showr cx3, cy3\r
+ End If\r
+\r
+ Swap lau(cx1, cy1), lau(cx2, cy2)\r
+ showr cx1, cy1\r
+ showr cx2, cy2\r
+\r
+End Sub\r
+\r
+Sub thinkh\r
+ msg "your turn", 14\r
+ 5\r
+ freet\r
+ If humx1 = 0 Then GoTo 5\r
+ Swap lau(humx2, humy2), lau(humx1, humy1)\r
+ showr humx1, humy1\r
+ showr humx2, humy2\r
+ If Abs(humx1 - humx2) = 2 Then\r
+ cx3 = (humx1 + humx2) / 2\r
+ cy3 = (humy1 + humy2) / 2\r
+ lau(cx3, cy3) = 0\r
+ showr cx3, cy3\r
+ End If\r
+\r
+ humx1 = 0\r
+End Sub\r