+$ExeIcon:'dicend.ico'
+_Icon
+_Title "Dice endgames"
+Rem Let scr& = _NewImage(800, 600, 256)
+Rem Screen scr&
+Rem _FullScreen
+Screen 12
+DefInt A-Z
+Randomize Timer
+
+declare sub dice1 as type integer
+declare sub dice2 as type integer
+declare sub dice3 as type integer
+declare sub dice4 as type integer
+declare sub dice5 as type integer
+declare sub dice6 as type integer
+declare sub dice7 as type integer
+declare sub dice8 as type integer
+declare sub dice9 as type integer
+declare sub dice0 as type integer
+declare sub number1 as type integer
+declare sub number2 as type integer
+declare sub number3 as type integer
+declare sub number4 as type integer
+declare sub number5 as type integer
+declare sub number6 as type integer
+declare sub number7 as type integer
+declare sub number8 as type integer
+declare sub number9 as type integer
+declare sub number0 as type integer
+declare sub numberA as type integer
+declare sub numberB as type integer
+declare sub numberC as type integer
+declare sub numberD as type integer
+declare sub numberE as type integer
+declare sub numberF as type integer
+declare sub numberG as type integer
+declare sub numberH as type integer
+declare sub numberI as type integer
+declare sub numberJ as type integer
+declare sub letter1 as type integer
+declare sub letter2 as type integer
+declare sub letter3 as type integer
+declare sub letter4 as type integer
+declare sub letter5 as type integer
+declare sub letter6 as type integer
+declare sub letter7 as type integer
+declare sub letter8 as type integer
+declare sub letter9 as type integer
+declare sub letter0 as type integer
+declare sub letterA as type integer
+declare sub letterB as type integer
+declare sub letterC as type integer
+declare sub letterD as type integer
+declare sub letterE as type integer
+declare sub letterF as type integer
+declare sub letterG as type integer
+declare sub letterH as type integer
+declare sub letterI as type integer
+declare sub letterJ as type integer
+declare sub king as type integer
+declare sub queen as type integer
+declare sub bishop as type integer
+declare sub knight as type integer
+declare sub rook as type integer
+declare sub pawn as type integer
+declare sub cannon as type integer
+declare sub lance as type integer
+declare sub general as type integer
+declare sub tokin as type integer
+declare sub dragon as type integer
+declare sub horse as type integer
+declare sub dame as type integer
+declare sub checker as type integer
+declare sub cells as type integer
+declare sub dices as type integer
+declare sub chessboard as type integer
+declare sub makrukboard as type integer
+declare sub xiangqiboard as type integer
+declare sub shogiboard as type integer
+declare sub draughtsboard as type integer
+declare sub chess as type string
+declare sub makruk as type string
+declare sub xiangqi as type string
+declare sub shogi as type string
+declare sub draughts as type string
+declare sub chessfen as type string
+declare sub makrukfen as type string
+declare sub xiangqifen as type string
+declare sub shogifen as type string
+declare sub draughtsfen as type string
+
+Common Shared x, y, cd1, cd2, cn, cl, cf, cb1, cb2, cb3, cb4, cb5 As Integer
+Common Shared dc1, dc2, dc3, dc4, dc5, dc6, w1, b1, w2, b2, w3, b3, w4, b4, fw1, fb1, fw2, fb2, fw3, fb3, fw4, fb4, row, col, index, count As Integer
+Common Shared fw1x, fw1y, fb1x, fb1y, fw2x, fw2y, fb2x, fb2y, fw3x, fw3y, fb3x, fb3y, fw4x, fw4y, fb4x, fb4y As Integer
+Common Shared fig1w, fig1b, fig2w, fig2b, fig3w, fig3b, fig4w, fig4b, mas1, mas2, mas3, mas4, mas5, mas6, mas7, mas8, mas9, mas0, lin1, lin2, lin3, lin4, lin5, lin6, lin7, lin8, lin9, lin0, fen As String
+Let cd1 = 2: Let cd2 = 15: Let cn = 7: Let cl = 14: Let cf = 1: Let cb1 = 7: Let cb2 = 6: Let cb3 = 3: Let cb4 = 13: Let cb5 = 9
+
+Dim Shared board(8, 8) As Integer
+Let index = 100
+For row = 1 To 8: For col = 1 To 8
+ Let board(row, col) = index + 1
+ Let index = index + 1
+Next col: Next row
+
+Dim Shared xiabo(10, 9) As Integer
+Let index = 100
+For row = 1 To 10: For col = 1 To 9
+ Let xiabo(row, col) = index + 1
+ Let index = index + 1
+Next col: Next row
+
+Dim Shared shobo(9, 9) As Integer
+Let index = 100
+For row = 1 To 9: For col = 1 To 9
+ Let shobo(row, col) = index + 1
+ Let index = index + 1
+Next col: Next row
+
+Dim Shared drabo(10, 10) As Integer
+Let index = 100
+For row = 1 To 10: For col = 1 To 10
+ Let drabo(row, col) = index + 1
+ Let index = index + 1
+Next col: Let index = index + 1: Next row
+
+Line (2, 2)-(122, 4), 14, BF: Line -(120, 338), 14, BF: Line -(2, 336), 14, BF: Line -(4, 2), 14, BF
+Line (4, 42)-(120, 44), 14, BF: Paint (20, 20), 8, 14
+Line (128, 2)-(248, 4), 14, BF: Line -(246, 338), 14, BF: Line -(128, 336), 14, BF: Line -(130, 2), 14, BF
+Line (130, 42)-(246, 44), 14, BF: Paint (160, 20), 8, 14
+Line (254, 2)-(394, 4), 14, BF: Line -(392, 386), 14, BF: Line -(254, 384), 14, BF: Line -(256, 2), 14, BF
+Line (256, 42)-(392, 44), 14, BF: Paint (300, 20), 8, 14
+Line (400, 2)-(637, 4), 14, BF: Line -(635, 338), 14, BF: Line -(400, 336), 14, BF: Line -(402, 2), 14, BF
+Line (402, 42)-(635, 44), 14, BF: Paint (440, 20), 8, 14
+Line (2, 344)-(248, 346), 14, BF: Line -(246, 432), 14, BF: Line -(2, 430), 14, BF: Line -(4, 344), 14, BF
+Line (4, 378)-(246, 376), 14, BF: Paint (20, 360), 8, 14
+Color 14, 8: Locate 2, 4: Print "1 - Chess": Locate 2, 19: Print "2 - Makruk": Locate 2, 36: Print "3 - Xiangqi": Locate 2, 61: Print "4 - Shogi": Locate 23, 10: Print "5 - Draughts"
+Color 12, 0: Locate 23, 52: Print "Press number to select game": Locate 24, 59: Print "or Esc to exit"
+
+Color 11, 0
+Let x = 10: For y = 50 To 300 Step 48
+ Call cells
+Next y
+Let x = 10: Let y = 50: Call king
+Let x = 10: Let y = y + 48: Call queen
+Let x = 10: Let y = y + 48: Call bishop
+Let x = 10: Let y = y + 48: Call knight
+Let x = 10: Let y = y + 48: Call rook
+Let x = 10: Let y = y + 48: Call pawn
+Locate 5, 9: Print "King": Locate 8, 9: Print "Queen"
+Locate 11, 9: Print "Bishop": Locate 14, 9: Print "Knight"
+Locate 17, 9: Print "Rook": Locate 20, 9: Print "Pawn"
+Let x = 136: For y = 50 To 300 Step 48
+ Call cells
+Next y
+Let x = 136: Let y = 50: Call king
+Let x = 136: Let y = y + 48: Call queen
+Let x = 136: Let y = y + 48: Call bishop
+Let x = 136: Let y = y + 48: Call knight
+Let x = 136: Let y = y + 48: Call rook
+Let x = 136: Let y = y + 48: Call checker
+Locate 5, 25: Print "Lord": Locate 8, 25: Print "Seed"
+Locate 11, 25: Print "Noble": Locate 14, 25: Print "Horse"
+Locate 17, 25: Print "Boat": Locate 20, 25: Print "Shell"
+Let x = 262: For y = 50 To 350 Step 48
+ Call cells
+Next y
+Let x = 262: Let y = 50: Call king
+Let x = 262: Let y = y + 48: Call queen
+Let x = 262: Let y = y + 48: Call bishop
+Let x = 262: Let y = y + 48: Call knight
+Let x = 262: Let y = y + 48: Call rook
+Let x = 262: Let y = y + 48: Call cannon
+Let x = 262: Let y = y + 48: Call pawn
+Locate 5, 41: Print "General": Locate 8, 41: Print "Advisor"
+Locate 11, 41: Print "Elephant": Locate 14, 41: Print "Horse"
+Locate 17, 41: Print "Chariot": Locate 20, 41: Print "Cannon"
+Locate 23, 41: Print "Soldier"
+Let x = 408: For y = 50 To 300 Step 48
+ Call cells
+Next y
+Let x = 528: For y = 50 To 250 Step 48
+ Call cells
+Next y
+Let x = 408: Let y = 50: Call king
+Let x = 408: Let y = y + 48: Call queen
+Let x = 408: Let y = y + 48: Call general
+Let x = 408: Let y = y + 48: Call bishop
+Let x = 408: Let y = y + 48: Call knight
+Let x = 408: Let y = y + 48: Call rook
+Let x = 528: Let y = 50: Call lance
+Let x = 528: Let y = y + 48: Call pawn
+Let x = 528: Let y = y + 48: Call horse
+Let x = 528: Let y = y + 48: Call dragon
+Let x = 528: Let y = y + 48: Call tokin
+Locate 5, 59: Print "King": Locate 8, 59: Print "Gold"
+Locate 11, 59: Print "Silver": Locate 14, 59: Print "Bishop"
+Locate 17, 59: Print "Knight": Locate 20, 59: Print "Rook"
+Locate 5, 74: Print "Lance": Locate 8, 74: Print "Pawn"
+Locate 11, 74: Print "Horse": Locate 14, 74: Print "Dragon"
+Locate 17, 74: Print "Tokin"
+Let x = 10: Let y = 384
+Call cells: Call checker
+Let x = 136: Let y = 384
+Call cells: Call dame
+Locate 26, 9: Print "Checker": Locate 26, 25: Print "Dame"
+
+Do
+ Select Case InKey$
+ Case Is = Chr$(49)
+ Cls
+ Call message
+ Call chessboard
+ Call dices
+ Call chess
+ Case Is = Chr$(50)
+ Cls
+ Call message
+ Call makrukboard
+ Call dices
+ Call makruk
+ Case Is = Chr$(51)
+ Cls
+ Call message
+ Call xiangqiboard
+ Call dices
+ Call xiangqi
+ Case Is = Chr$(52)
+ Cls
+ Call message
+ Call shogiboard
+ Call dices
+ Call shogi
+ Case Is = Chr$(53)
+ Cls
+ Call message
+ Call draughtsboard
+ Call dices
+ Call draughts
+ Case Is = Chr$(27)
+ Exit Do
+ End Select
+Loop
+End
+
+Sub dice1
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (16 + x, 16 + y)-(24 + x, 24 + y), cd2, BF
+End Sub
+
+Sub dice2
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice3
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (16 + x, 16 + y)-(24 + x, 24 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice4
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (4 + x, 4 + y)-(12 + x, 12 + y), cd2, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+ Line (28 + x, 28 + y)-(36 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice5
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (4 + x, 4 + y)-(12 + x, 12 + y), cd2, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (16 + x, 16 + y)-(24 + x, 24 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+ Line (28 + x, 28 + y)-(36 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice6
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (4 + x, 4 + y)-(12 + x, 12 + y), cd2, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (4 + x, 16 + y)-(12 + x, 24 + y), cd2, BF
+ Line (28 + x, 16 + y)-(36 + x, 24 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+ Line (28 + x, 28 + y)-(36 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice7
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (4 + x, 4 + y)-(12 + x, 12 + y), cd2, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (4 + x, 16 + y)-(12 + x, 24 + y), cd2, BF
+ Line (16 + x, 16 + y)-(24 + x, 24 + y), cd2, BF
+ Line (28 + x, 16 + y)-(36 + x, 24 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+ Line (28 + x, 28 + y)-(36 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice8
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (4 + x, 4 + y)-(12 + x, 12 + y), cd2, BF
+ Line (16 + x, 4 + y)-(24 + x, 12 + y), cd2, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (4 + x, 16 + y)-(12 + x, 24 + y), cd2, BF
+ Line (28 + x, 16 + y)-(36 + x, 24 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+ Line (16 + x, 28 + y)-(24 + x, 36 + y), cd2, BF
+ Line (28 + x, 28 + y)-(36 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice9
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (4 + x, 4 + y)-(12 + x, 12 + y), cd2, BF
+ Line (16 + x, 4 + y)-(24 + x, 12 + y), cd2, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (4 + x, 16 + y)-(12 + x, 24 + y), cd2, BF
+ Line (16 + x, 16 + y)-(24 + x, 24 + y), cd2, BF
+ Line (28 + x, 16 + y)-(36 + x, 24 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+ Line (16 + x, 28 + y)-(24 + x, 36 + y), cd2, BF
+ Line (28 + x, 28 + y)-(36 + x, 36 + y), cd2, BF
+End Sub
+
+Sub dice0
+ Line (x, y)-(40 + x, 40 + y), cd1, BF
+ Line (4 + x, 4 + y)-(12 + x, 12 + y), cd2, BF
+ Line (28 + x, 4 + y)-(36 + x, 12 + y), cd2, BF
+ Line (4 + x, 16 + y)-(12 + x, 24 + y), cd2, BF
+ Line (28 + x, 16 + y)-(36 + x, 24 + y), cd2, BF
+ Line (4 + x, 28 + y)-(12 + x, 36 + y), cd2, BF
+ Line (28 + x, 28 + y)-(36 + x, 36 + y), cd2, BF
+ Line (16 + x, 1 + y)-(24 + x, 9 + y), cd2, BF
+ Line (16 + x, 11 + y)-(24 + x, 19 + y), cd2, BF
+ Line (16 + x, 21 + y)-(24 + x, 29 + y), cd2, BF
+ Line (16 + x, 31 + y)-(24 + x, 39 + y), cd2, BF
+End Sub
+
+Sub number1
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+ Line (5 + x, 8 + y)-(6 + x, 1 + y), cn, BF
+ Line (4 + x, 2 + y)-(1 + x, 5 + y), cn
+ Line (4 + x, 3 + y)-(1 + x, 6 + y), cn
+End Sub
+
+Sub number2
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+ Line (1 + x, 8 + y)-(2 + x, 7 + y), cn, BF
+ Line (10 + x, 4 + y)-(9 + x, 3 + y), cn, BF
+End Sub
+
+Sub number3
+ Line (2 + x, 2 + y)-(9 + x, 1 + y), cn, BF
+ Line (2 + x, 10 + y)-(9 + x, 9 + y), cn, BF
+ Line (5 + x, 5 + y)-(9 + x, 6 + y), cn, BF
+ Line (9 + x, 2 + y)-(10 + x, 4 + y), cn, BF
+ Line (9 + x, 7 + y)-(10 + x, 9 + y), cn, BF
+End Sub
+
+Sub number4
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 1 + y)-(2 + x, 4 + y), cn, BF
+ Line (9 + x, 1 + y)-(10 + x, 10 + y), cn, BF
+End Sub
+
+Sub number5
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+ Line (10 + x, 8 + y)-(9 + x, 7 + y), cn, BF
+ Line (2 + x, 4 + y)-(1 + x, 3 + y), cn, BF
+End Sub
+
+Sub number6
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+ Line (10 + x, 8 + y)-(9 + x, 7 + y), cn, BF
+ Line (1 + x, 8 + y)-(2 + x, 3 + y), cn, BF
+End Sub
+
+Sub number7
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+ Line (10 + x, 3 + y)-(3 + x, 10 + y), cn
+ Line (9 + x, 3 + y)-(2 + x, 10 + y), cn
+ Line (8 + x, 3 + y)-(1 + x, 10 + y), cn
+End Sub
+
+Sub number8
+ Line (2 + x, 2 + y)-(9 + x, 1 + y), cn, BF
+ Line (2 + x, 10 + y)-(9 + x, 9 + y), cn, BF
+ Line (2 + x, 6 + y)-(9 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(2 + x, 4 + y), cn, BF
+ Line (1 + x, 7 + y)-(2 + x, 9 + y), cn, BF
+ Line (9 + x, 2 + y)-(10 + x, 4 + y), cn, BF
+ Line (9 + x, 7 + y)-(10 + x, 9 + y), cn, BF
+End Sub
+
+Sub number9
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+ Line (10 + x, 8 + y)-(9 + x, 3 + y), cn, BF
+ Line (2 + x, 4 + y)-(1 + x, 3 + y), cn, BF
+End Sub
+
+Sub number0
+ Line (2 + x, 2 + y)-(9 + x, 1 + y), cn, BF
+ Line (2 + x, 10 + y)-(9 + x, 9 + y), cn, BF
+ Line (1 + x, 2 + y)-(2 + x, 9 + y), cn, BF
+ Line (9 + x, 2 + y)-(10 + x, 9 + y), cn, BF
+End Sub
+
+Sub numberA
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(2 + x, 10 + y), cn, BF
+ Line (9 + x, 2 + y)-(10 + x, 10 + y), cn, BF
+ Line (2 + x, 2 + y)-(9 + x, 1 + y), cn, BF
+End Sub
+
+Sub numberB
+ Line (1 + x, 1 + y)-(2 + x, 10 + y), cn, BF
+ Line (1 + x, 10 + y)-(9 + x, 9 + y), cn, BF
+ Line (1 + x, 6 + y)-(9 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(9 + x, 1 + y), cn, BF
+ Line (9 + x, 2 + y)-(10 + x, 4 + y), cn, BF
+ Line (9 + x, 7 + y)-(10 + x, 9 + y), cn, BF
+End Sub
+
+Sub numberC
+ Line (1 + x, 1 + y)-(2 + x, 10 + y), cn, BF
+ Line (1 + x, 1 + y)-(10 + x, 2 + y), cn, BF
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+End Sub
+
+Sub numberD
+ Line (2 + x, 2 + y)-(9 + x, 1 + y), cn, BF
+ Line (2 + x, 10 + y)-(9 + x, 9 + y), cn, BF
+ Line (1 + x, 1 + y)-(2 + x, 10 + y), cn, BF
+ Line (9 + x, 2 + y)-(10 + x, 9 + y), cn, BF
+End Sub
+
+Sub numberE
+ Line (1 + x, 1 + y)-(2 + x, 10 + y), cn, BF
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+End Sub
+
+Sub numberF
+ Line (1 + x, 1 + y)-(2 + x, 10 + y), cn, BF
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+End Sub
+
+Sub numberG
+ Line (1 + x, 10 + y)-(10 + x, 9 + y), cn, BF
+ Line (8 + x, 6 + y)-(6 + x, 5 + y), cn, BF
+ Line (1 + x, 2 + y)-(10 + x, 1 + y), cn, BF
+ Line (10 + x, 8 + y)-(9 + x, 5 + y), cn, BF
+ Line (1 + x, 8 + y)-(2 + x, 3 + y), cn, BF
+End Sub
+
+Sub numberH
+ Line (1 + x, 6 + y)-(10 + x, 5 + y), cn, BF
+ Line (1 + x, 1 + y)-(2 + x, 10 + y), cn, BF
+ Line (9 + x, 1 + y)-(10 + x, 10 + y), cn, BF
+End Sub
+
+Sub numberI
+ Line (3 + x, 2 + y)-(8 + x, 1 + y), cn, BF
+ Line (3 + x, 10 + y)-(8 + x, 9 + y), cn, BF
+ Line (5 + x, 3 + y)-(6 + x, 8 + y), cn, BF
+End Sub
+
+Sub numberJ
+ Line (1 + x, 6 + y)-(2 + x, 9 + y), cn, BF
+ Line (9 + x, 1 + y)-(10 + x, 9 + y), cn, BF
+ Line (2 + x, 9 + y)-(9 + x, 10 + y), cn, BF
+End Sub
+
+Sub letter1
+ Line (4 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (18 + x, 31 + y)-(22 + x, 4 + y), cl, BF
+ Line (17 + x, 4 + y)-(4 + x, 17 + y), cl
+ Line (17 + x, 5 + y)-(5 + x, 17 + y), cl
+ Line (17 + x, 6 + y)-(6 + x, 17 + y), cl
+ Line (17 + x, 7 + y)-(7 + x, 17 + y), cl
+End Sub
+
+Sub letter2
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (4 + x, 18 + y)-(36 + x, 22 + y), cl, BF
+ Line (4 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (32 + x, 9 + y)-(36 + x, 17 + y), cl, BF
+ Line (4 + x, 23 + y)-(8 + x, 31 + y), cl, BF
+End Sub
+
+Sub letter3
+ Line (4 + x, 4 + y)-(34 + x, 8 + y), cl, BF
+ Line (4 + x, 36 + y)-(34 + x, 32 + y), cl, BF
+ Line (36 + x, 23 + y)-(32 + x, 34 + y), cl, BF
+ Line (32 + x, 6 + y)-(36 + x, 17 + y), cl, BF
+ Line (18 + x, 18 + y)-(34 + x, 22 + y), cl, BF
+ Line (30 + x, 17 + y)-(31 + x, 17 + y), cl
+ Line (30 + x, 23 + y)-(31 + x, 23 + y), cl
+ Line (30 + x, 9 + y)-(31 + x, 9 + y), cl
+ Line (30 + x, 31 + y)-(31 + x, 31 + y), cl
+ PSet (31 + x, 10 + y), cl: PSet (31 + x, 30 + y), cl
+ PSet (31 + x, 16 + y), cl: PSet (31 + x, 24 + y), cl
+ PSet (35 + x, 18 + y), cl: PSet (35 + x, 22 + y), cl
+ PSet (35 + x, 5 + y), cl: PSet (35 + x, 35 + y), cl
+End Sub
+
+Sub letter4
+ Line (4 + x, 4 + y)-(8 + x, 17 + y), cl, BF
+ Line (32 + x, 4 + y)-(36 + x, 36 + y), cl, BF
+ Line (4 + x, 18 + y)-(34 + x, 22 + y), cl, BF
+End Sub
+
+Sub letter5
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (4 + x, 18 + y)-(36 + x, 22 + y), cl, BF
+ Line (4 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (4 + x, 9 + y)-(8 + x, 17 + y), cl, BF
+ Line (32 + x, 23 + y)-(36 + x, 31 + y), cl, BF
+End Sub
+
+Sub letter6
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (4 + x, 18 + y)-(36 + x, 22 + y), cl, BF
+ Line (4 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (4 + x, 9 + y)-(8 + x, 31 + y), cl, BF
+ Line (32 + x, 23 + y)-(36 + x, 31 + y), cl, BF
+End Sub
+
+Sub letter7
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (8 + x, 36 + y)-(35 + x, 9 + y), cl
+ Line (7 + x, 36 + y)-(34 + x, 9 + y), cl
+ Line (6 + x, 36 + y)-(33 + x, 9 + y), cl
+ Line (5 + x, 36 + y)-(32 + x, 9 + y), cl
+End Sub
+
+Sub letter8
+ Line (8 + x, 23 + y)-(4 + x, 34 + y), cl, BF
+ Line (4 + x, 6 + y)-(8 + x, 17 + y), cl, BF
+ Line (6 + x, 4 + y)-(34 + x, 8 + y), cl, BF
+ Line (6 + x, 36 + y)-(34 + x, 32 + y), cl, BF
+ Line (36 + x, 23 + y)-(32 + x, 34 + y), cl, BF
+ Line (32 + x, 6 + y)-(36 + x, 17 + y), cl, BF
+ Line (6 + x, 18 + y)-(34 + x, 22 + y), cl, BF
+ Line (30 + x, 17 + y)-(31 + x, 17 + y), cl
+ Line (30 + x, 23 + y)-(31 + x, 23 + y), cl
+ Line (10 + x, 17 + y)-(9 + x, 17 + y), cl
+ Line (10 + x, 23 + y)-(9 + x, 23 + y), cl
+ Line (9 + x, 31 + y)-(10 + x, 31 + y), cl
+ Line (30 + x, 31 + y)-(31 + x, 31 + y), cl
+ Line (9 + x, 9 + y)-(10 + x, 9 + y), cl
+ Line (30 + x, 9 + y)-(31 + x, 9 + y), cl
+ PSet (35 + x, 5 + y), cl: PSet (35 + x, 35 + y), cl
+ PSet (5 + x, 5 + y), cl: PSet (5 + x, 35 + y), cl
+ PSet (9 + x, 30 + y), cl: PSet (31 + x, 30 + y), cl
+ PSet (9 + x, 10 + y), cl: PSet (31 + x, 10 + y), cl
+ PSet (5 + x, 18 + y), cl: PSet (5 + x, 22 + y), cl
+ PSet (9 + x, 16 + y), cl: PSet (9 + x, 24 + y), cl
+ PSet (31 + x, 16 + y), cl: PSet (31 + x, 24 + y), cl
+ PSet (35 + x, 18 + y), cl: PSet (35 + x, 22 + y), cl
+End Sub
+
+Sub letter9
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (4 + x, 18 + y)-(36 + x, 22 + y), cl, BF
+ Line (4 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (32 + x, 9 + y)-(36 + x, 31 + y), cl, BF
+End Sub
+
+Sub letter0
+ Line (6 + x, 4 + y)-(34 + x, 8 + y), cl, BF
+ Line (6 + x, 36 + y)-(34 + x, 32 + y), cl, BF
+ Line (4 + x, 6 + y)-(8 + x, 34 + y), cl, BF
+ Line (36 + x, 6 + y)-(32 + x, 34 + y), cl, BF
+ Line (9 + x, 9 + y)-(10 + x, 9 + y), cl
+ Line (30 + x, 9 + y)-(31 + x, 9 + y), cl
+ Line (9 + x, 31 + y)-(10 + x, 31 + y), cl
+ Line (30 + x, 31 + y)-(31 + x, 31 + y), cl
+ Line (9 + x, 9 + y)-(10 + x, 9 + y), cl
+ Line (30 + x, 9 + y)-(31 + x, 9 + y), cl
+ PSet (35 + x, 5 + y), cl: PSet (35 + x, 35 + y), cl
+ PSet (5 + x, 5 + y), cl: PSet (5 + x, 35 + y), cl
+ PSet (9 + x, 30 + y), cl: PSet (31 + x, 30 + y), cl
+ PSet (9 + x, 10 + y), cl: PSet (31 + x, 10 + y), cl
+End Sub
+
+Sub letterA
+ Line (4 + x, 6 + y)-(8 + x, 36 + y), cl, BF
+ Line (32 + x, 6 + y)-(36 + x, 36 + y), cl, BF
+ Line (4 + x, 18 + y)-(34 + x, 22 + y), cl, BF
+ Line (6 + x, 4 + y)-(34 + x, 8 + y), cl, BF
+ Line (30 + x, 9 + y)-(31 + x, 9 + y), cl
+ Line (9 + x, 9 + y)-(10 + x, 9 + y), cl
+ PSet (9 + x, 10 + y), cl: PSet (31 + x, 10 + y), cl
+ PSet (5 + x, 5 + y), cl: PSet (35 + x, 5 + y), cl
+End Sub
+
+Sub letterB
+ Line (4 + x, 9 + y)-(8 + x, 31 + y), cl, BF
+ Line (4 + x, 4 + y)-(34 + x, 8 + y), cl, BF
+ Line (4 + x, 36 + y)-(34 + x, 32 + y), cl, BF
+ Line (36 + x, 23 + y)-(32 + x, 34 + y), cl, BF
+ Line (32 + x, 6 + y)-(36 + x, 17 + y), cl, BF
+ Line (9 + x, 18 + y)-(34 + x, 22 + y), cl, BF
+ Line (30 + x, 17 + y)-(31 + x, 17 + y), cl
+ Line (30 + x, 23 + y)-(31 + x, 23 + y), cl
+ Line (30 + x, 9 + y)-(31 + x, 9 + y), cl
+ Line (30 + x, 31 + y)-(31 + x, 31 + y), cl
+ PSet (31 + x, 10 + y), cl: PSet (31 + x, 30 + y), cl
+ PSet (31 + x, 16 + y), cl: PSet (31 + x, 24 + y), cl
+ PSet (35 + x, 18 + y), cl: PSet (35 + x, 22 + y), cl
+ PSet (35 + x, 5 + y), cl: PSet (35 + x, 35 + y), cl
+End Sub
+
+Sub letterC
+ Line (6 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (6 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (4 + x, 6 + y)-(8 + x, 34 + y), cl, BF
+ Line (9 + x, 9 + y)-(10 + x, 9 + y), cl
+ Line (9 + x, 31 + y)-(10 + x, 31 + y), cl
+ PSet (9 + x, 10 + y), cl: PSet (9 + x, 30 + y), cl
+ PSet (5 + x, 5 + y), cl: PSet (5 + x, 35 + y), cl
+End Sub
+
+Sub letterD
+ Line (4 + x, 4 + y)-(34 + x, 8 + y), cl, BF
+ Line (4 + x, 36 + y)-(34 + x, 32 + y), cl, BF
+ Line (4 + x, 4 + y)-(8 + x, 36 + y), cl, BF
+ Line (32 + x, 6 + y)-(36 + x, 34 + y), cl, BF
+ Line (30 + x, 9 + y)-(31 + x, 9 + y), cl
+ Line (30 + x, 31 + y)-(31 + x, 31 + y), cl
+ PSet (31 + x, 10 + y), cl: PSet (31 + x, 30 + y), cl
+ PSet (35 + x, 5 + y), cl: PSet (35 + x, 35 + y), cl
+End Sub
+
+Sub letterE
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (4 + x, 18 + y)-(36 + x, 22 + y), cl, BF
+ Line (4 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (4 + x, 4 + y)-(8 + x, 36 + y), cl, BF
+End Sub
+
+Sub letterF
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (4 + x, 18 + y)-(36 + x, 22 + y), cl, BF
+ Line (4 + x, 4 + y)-(8 + x, 36 + y), cl, BF
+End Sub
+
+Sub letterG
+ Line (4 + x, 4 + y)-(36 + x, 8 + y), cl, BF
+ Line (20 + x, 18 + y)-(36 + x, 22 + y), cl, BF
+ Line (4 + x, 36 + y)-(36 + x, 32 + y), cl, BF
+ Line (4 + x, 9 + y)-(8 + x, 31 + y), cl, BF
+ Line (32 + x, 23 + y)-(36 + x, 31 + y), cl, BF
+End Sub
+
+Sub letterH
+ Line (4 + x, 4 + y)-(8 + x, 36 + y), cl, BF
+ Line (32 + x, 4 + y)-(36 + x, 36 + y), cl, BF
+ Line (4 + x, 18 + y)-(34 + x, 22 + y), cl, BF
+End Sub
+
+Sub letterI
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cl, BF
+ Line (18 + x, 31 + y)-(22 + x, 9 + y), cl, BF
+ Line (8 + x, 8 + y)-(32 + x, 3 + y), cl, BF
+End Sub
+
+Sub letterJ
+ Line (6 + x, 36 + y)-(34 + x, 32 + y), cl, BF
+ Line (32 + x, 4 + y)-(36 + x, 34 + y), cl, BF
+ Line (4 + x, 18 + y)-(8 + x, 34 + y), cl, BF
+ Line (9 + x, 31 + y)-(10 + x, 31 + y), cl
+ Line (30 + x, 31 + y)-(31 + x, 31 + y), cl
+ PSet (9 + x, 30 + y), cl: PSet (31 + x, 30 + y), cl
+ PSet (5 + x, 35 + y), cl: PSet (35 + x, 35 + y), cl
+End Sub
+
+Sub king
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (12 + x, 31 + y)-(28 + x, 31 + y), cf
+ Line (13 + x, 30 + y)-(27 + x, 30 + y), cf
+ Line (14 + x, 29 + y)-(26 + x, 29 + y), cf
+ Line (15 + x, 28 + y)-(25 + x, 28 + y), cf
+ Line (16 + x, 27 + y)-(24 + x, 10 + y), cf, BF
+ Line (15 + x, 24 + y)-(25 + x, 24 + y), cf
+ Line (14 + x, 23 + y)-(26 + x, 23 + y), cf
+ Line (13 + x, 22 + y)-(27 + x, 22 + y), cf
+ Line (12 + x, 21 + y)-(28 + x, 21 + y), cf
+ Line (11 + x, 20 + y)-(29 + x, 20 + y), cf
+ Line (10 + x, 19 + y)-(30 + x, 19 + y), cf
+ Line (9 + x, 18 + y)-(31 + x, 18 + y), cf
+ Line (8 + x, 17 + y)-(32 + x, 17 + y), cf
+ Line (7 + x, 16 + y)-(33 + x, 16 + y), cf
+ Line (6 + x, 15 + y)-(34 + x, 15 + y), cf
+ Line (5 + x, 14 + y)-(35 + x, 14 + y), cf
+ Line (4 + x, 13 + y)-(36 + x, 12 + y), cf, BF
+ Line (4 + x, 11 + y)-(14 + x, 10 + y), cf, BF
+ Line (5 + x, 9 + y)-(13 + x, 9 + y), cf
+ Line (6 + x, 8 + y)-(12 + x, 8 + y), cf
+ Line (7 + x, 7 + y)-(11 + x, 7 + y), cf
+ Line (26 + x, 11 + y)-(36 + x, 10 + y), cf, BF
+ Line (27 + x, 9 + y)-(35 + x, 9 + y), cf
+ Line (28 + x, 8 + y)-(34 + x, 8 + y), cf
+ Line (29 + x, 7 + y)-(33 + x, 7 + y), cf
+ Line (17 + x, 9 + y)-(23 + x, 8 + y), cf, BF
+ Line (18 + x, 7 + y)-(22 + x, 6 + y), cf, BF
+ Line (19 + x, 5 + y)-(21 + x, 4 + y), cf, BF
+End Sub
+
+Sub queen
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (9 + x, 31 + y)-(31 + x, 31 + y), cf
+ Line (10 + x, 30 + y)-(30 + x, 30 + y), cf
+ Line (11 + x, 29 + y)-(29 + x, 29 + y), cf
+ Line (12 + x, 28 + y)-(28 + x, 14 + y), cf, BF
+ Line (11 + x, 24 + y)-(29 + x, 24 + y), cf
+ Line (10 + x, 23 + y)-(30 + x, 23 + y), cf
+ Line (9 + x, 22 + y)-(31 + x, 22 + y), cf
+ Line (8 + x, 21 + y)-(32 + x, 21 + y), cf
+ Line (7 + x, 20 + y)-(33 + x, 20 + y), cf
+ Line (6 + x, 19 + y)-(34 + x, 18 + y), cf, BF
+ Line (6 + x, 17 + y)-(7 + x, 10 + y), cf, BF
+ Line (5 + x, 11 + y)-(8 + x, 14 + y), cf, BF
+ Line (4 + x, 12 + y)-(9 + x, 13 + y), cf, BF
+ Line (34 + x, 17 + y)-(33 + x, 10 + y), cf, BF
+ Line (35 + x, 11 + y)-(32 + x, 14 + y), cf, BF
+ Line (36 + x, 12 + y)-(31 + x, 13 + y), cf, BF
+ Line (12 + x, 13 + y)-(13 + x, 6 + y), cf, BF
+ Line (11 + x, 7 + y)-(14 + x, 10 + y), cf, BF
+ Line (10 + x, 8 + y)-(15 + x, 9 + y), cf, BF
+ Line (27 + x, 13 + y)-(28 + x, 6 + y), cf, BF
+ Line (26 + x, 7 + y)-(29 + x, 10 + y), cf, BF
+ Line (25 + x, 8 + y)-(30 + x, 9 + y), cf, BF
+ Line (19 + x, 13 + y)-(21 + x, 4 + y), cf, BF
+ Line (18 + x, 5 + y)-(22 + x, 8 + y), cf, BF
+ Line (17 + x, 6 + y)-(23 + x, 7 + y), cf, BF
+End Sub
+
+Sub bishop
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (18 + x, 31 + y)-(22 + x, 6 + y), cf, BF
+ Line (19 + x, 5 + y)-(21 + x, 4 + y), cf, BF
+ Line (12 + x, 31 + y)-(28 + x, 31 + y), cf
+ Line (13 + x, 30 + y)-(27 + x, 30 + y), cf
+ Line (14 + x, 29 + y)-(26 + x, 29 + y), cf
+ Line (15 + x, 28 + y)-(25 + x, 28 + y), cf
+ Line (16 + x, 27 + y)-(24 + x, 27 + y), cf
+ Line (17 + x, 26 + y)-(23 + x, 26 + y), cf
+ Line (17 + x, 21 + y)-(23 + x, 8 + y), cf, BF
+ Line (16 + x, 19 + y)-(24 + x, 10 + y), cf, BF
+ Line (15 + x, 17 + y)-(25 + x, 12 + y), cf, BF
+ Line (14 + x, 15 + y)-(26 + x, 14 + y), cf, BF
+End Sub
+
+Sub knight
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (12 + x, 31 + y)-(28 + x, 31 + y), cf
+ Line (13 + x, 30 + y)-(29 + x, 30 + y), cf
+ Line (14 + x, 29 + y)-(30 + x, 29 + y), cf
+ Line (15 + x, 28 + y)-(31 + x, 28 + y), cf
+ Line (16 + x, 27 + y)-(32 + x, 27 + y), cf
+ Line (17 + x, 26 + y)-(33 + x, 26 + y), cf
+ Line (18 + x, 25 + y)-(34 + x, 25 + y), cf
+ Line (19 + x, 24 + y)-(35 + x, 24 + y), cf
+ Line (20 + x, 23 + y)-(36 + x, 18 + y), cf, BF
+ Line (4 + x, 17 + y)-(35 + x, 17 + y), cf
+ Line (4 + x, 16 + y)-(34 + x, 16 + y), cf
+ Line (5 + x, 15 + y)-(33 + x, 15 + y), cf
+ Line (6 + x, 14 + y)-(32 + x, 14 + y), cf
+ Line (7 + x, 13 + y)-(31 + x, 13 + y), cf
+ Line (8 + x, 12 + y)-(30 + x, 12 + y), cf
+ Line (9 + x, 11 + y)-(29 + x, 11 + y), cf
+ Line (10 + x, 10 + y)-(28 + x, 10 + y), cf
+ Line (11 + x, 9 + y)-(27 + x, 9 + y), cf
+ Line (12 + x, 8 + y)-(26 + x, 8 + y), cf
+ Line (13 + x, 7 + y)-(25 + x, 7 + y), cf
+ Line (14 + x, 6 + y)-(24 + x, 6 + y), cf
+ Line (15 + x, 5 + y)-(23 + x, 5 + y), cf
+ Line (16 + x, 4 + y)-(22 + x, 4 + y), cf
+End Sub
+
+Sub rook
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (4 + x, 4 + y)-(8 + x, 12 + y), cf, BF
+ Line (13 + x, 4 + y)-(17 + x, 12 + y), cf, BF
+ Line (23 + x, 4 + y)-(27 + x, 12 + y), cf, BF
+ Line (32 + x, 4 + y)-(36 + x, 12 + y), cf, BF
+ Line (4 + x, 12 + y)-(36 + x, 16 + y), cf, BF
+ Line (12 + x, 16 + y)-(28 + x, 32 + y), cf, BF
+ Line (9 + x, 16 + y)-(11 + x, 16 + y), cf
+ Line (29 + x, 16 + y)-(31 + x, 16 + y), cf
+ Line (10 + x, 17 + y)-(11 + x, 17 + y), cf
+ Line (29 + x, 17 + y)-(30 + x, 17 + y), cf
+ PSet (11 + x, 18 + y), cf: PSet (29 + x, 18 + y), cf
+ Line (9 + x, 31 + y)-(11 + x, 31 + y), cf
+ Line (29 + x, 31 + y)-(31 + x, 31 + y), cf
+ Line (10 + x, 30 + y)-(11 + x, 30 + y), cf
+ Line (29 + x, 30 + y)-(30 + x, 30 + y), cf
+ PSet (11 + x, 29 + y), cf: PSet (29 + x, 29 + y), cf
+End Sub
+
+Sub pawn
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (18 + x, 32 + y)-(22 + x, 4 + y), cf, BF
+ Line (12 + x, 9 + y)-(28 + x, 14 + y), cf, BF
+ Line (9 + x, 31 + y)-(31 + x, 31 + y), cf
+ Line (10 + x, 30 + y)-(30 + x, 30 + y), cf
+ Line (11 + x, 29 + y)-(29 + x, 29 + y), cf
+ Line (12 + x, 28 + y)-(28 + x, 28 + y), cf
+ Line (13 + x, 27 + y)-(27 + x, 27 + y), cf
+ Line (14 + x, 26 + y)-(26 + x, 26 + y), cf
+ Line (15 + x, 25 + y)-(25 + x, 25 + y), cf
+ Line (16 + x, 24 + y)-(24 + x, 24 + y), cf
+ Line (17 + x, 23 + y)-(23 + x, 23 + y), cf
+ Line (17 + x, 19 + y)-(23 + x, 19 + y), cf
+ Line (16 + x, 18 + y)-(24 + x, 18 + y), cf
+ Line (15 + x, 17 + y)-(25 + x, 17 + y), cf
+ Line (14 + x, 16 + y)-(26 + x, 16 + y), cf
+ Line (13 + x, 15 + y)-(27 + x, 15 + y), cf
+ Line (13 + x, 8 + y)-(27 + x, 8 + y), cf
+ Line (14 + x, 7 + y)-(26 + x, 7 + y), cf
+ Line (15 + x, 6 + y)-(25 + x, 6 + y), cf
+ Line (16 + x, 5 + y)-(24 + x, 5 + y), cf
+ Line (17 + x, 4 + y)-(23 + x, 4 + y), cf
+End Sub
+
+Sub cannon
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (9 + x, 31 + y)-(31 + x, 31 + y), cf
+ Line (10 + x, 30 + y)-(30 + x, 30 + y), cf
+ Line (11 + x, 29 + y)-(29 + x, 29 + y), cf
+ Line (12 + x, 28 + y)-(28 + x, 28 + y), cf
+ Line (13 + x, 27 + y)-(27 + x, 27 + y), cf
+ Line (14 + x, 26 + y)-(26 + x, 26 + y), cf
+ Line (15 + x, 25 + y)-(25 + x, 25 + y), cf
+ Line (16 + x, 24 + y)-(24 + x, 4 + y), cf, BF
+ Line (6 + x, 9 + y)-(36 + x, 12 + y), cf, BF
+ Line (4 + x, 10 + y)-(6 + x, 11 + y), cf, BF
+ Line (14 + x, 16 + y)-(25 + x, 16 + y), cf
+ Line (12 + x, 15 + y)-(26 + x, 15 + y), cf
+ Line (10 + x, 14 + y)-(27 + x, 14 + y), cf
+ Line (8 + x, 13 + y)-(28 + x, 13 + y), cf
+ Line (8 + x, 8 + y)-(28 + x, 8 + y), cf
+ Line (10 + x, 7 + y)-(27 + x, 7 + y), cf
+ Line (12 + x, 6 + y)-(26 + x, 6 + y), cf
+ Line (14 + x, 5 + y)-(25 + x, 5 + y), cf
+ Line (16 + x, 4 + y)-(24 + x, 4 + y), cf
+End Sub
+
+Sub general
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (9 + x, 31 + y)-(31 + x, 31 + y), cf
+ Line (10 + x, 30 + y)-(30 + x, 30 + y), cf
+ Line (11 + x, 29 + y)-(29 + x, 29 + y), cf
+ Line (12 + x, 28 + y)-(28 + x, 28 + y), cf
+ Line (13 + x, 27 + y)-(27 + x, 27 + y), cf
+ Line (14 + x, 26 + y)-(26 + x, 26 + y), cf
+ Line (13 + x, 25 + y)-(27 + x, 22 + y), cf, BF
+ Line (16 + x, 21 + y)-(24 + x, 20 + y), cf, BF
+ Line (18 + x, 19 + y)-(22 + x, 12 + y), cf, BF
+ Line (19 + x, 11 + y)-(21 + x, 4 + y), cf, BF
+ Line (18 + x, 10 + y)-(22 + x, 5 + y), cf, BF
+ Line (17 + x, 9 + y)-(23 + x, 6 + y), cf, BF
+ Line (16 + x, 8 + y)-(24 + x, 7 + y), cf, BF
+ Line (15 + x, 20 + y)-(16 + x, 19 + y), cf, BF
+ Line (14 + x, 19 + y)-(15 + x, 18 + y), cf, BF
+ Line (13 + x, 18 + y)-(14 + x, 17 + y), cf, BF
+ Line (24 + x, 20 + y)-(25 + x, 19 + y), cf, BF
+ Line (25 + x, 19 + y)-(26 + x, 18 + y), cf, BF
+ Line (26 + x, 18 + y)-(27 + x, 17 + y), cf, BF
+ Line (11 + x, 18 + y)-(12 + x, 11 + y), cf, BF
+ Line (10 + x, 17 + y)-(13 + x, 12 + y), cf, BF
+ Line (9 + x, 16 + y)-(14 + x, 13 + y), cf, BF
+ Line (8 + x, 15 + y)-(15 + x, 14 + y), cf, BF
+ Line (28 + x, 18 + y)-(29 + x, 11 + y), cf, BF
+ Line (27 + x, 17 + y)-(30 + x, 12 + y), cf, BF
+ Line (26 + x, 16 + y)-(31 + x, 13 + y), cf, BF
+ Line (25 + x, 15 + y)-(32 + x, 14 + y), cf, BF
+ Line (4 + x, 24 + y)-(36 + x, 23 + y), cf, BF
+ Line (29 + x, 25 + y)-(35 + x, 22 + y), cf, BF
+ Line (30 + x, 26 + y)-(34 + x, 21 + y), cf, BF
+ Line (31 + x, 27 + y)-(33 + x, 20 + y), cf, BF
+ Line (5 + x, 25 + y)-(11 + x, 22 + y), cf, BF
+ Line (6 + x, 26 + y)-(10 + x, 21 + y), cf, BF
+ Line (7 + x, 27 + y)-(9 + x, 20 + y), cf, BF
+End Sub
+
+Sub tokin
+ Line (10 + x, 10 + y)-(30 + x, 30 + y), cf, BF
+ Line (4 + x, 4 + y)-(5 + x, 5 + y), cf, BF
+ Line (5 + x, 5 + y)-(7 + x, 7 + y), cf, BF
+ Line (6 + x, 6 + y)-(9 + x, 9 + y), cf, BF
+ Line (7 + x, 7 + y)-(11 + x, 11 + y), cf, BF
+ Line (8 + x, 8 + y)-(12 + x, 12 + y), cf, BF
+ Line (36 + x, 4 + y)-(35 + x, 5 + y), cf, BF
+ Line (35 + x, 5 + y)-(33 + x, 7 + y), cf, BF
+ Line (34 + x, 6 + y)-(31 + x, 9 + y), cf, BF
+ Line (33 + x, 7 + y)-(29 + x, 11 + y), cf, BF
+ Line (32 + x, 8 + y)-(28 + x, 12 + y), cf, BF
+ Line (36 + x, 36 + y)-(35 + x, 35 + y), cf, BF
+ Line (35 + x, 35 + y)-(33 + x, 33 + y), cf, BF
+ Line (34 + x, 34 + y)-(31 + x, 31 + y), cf, BF
+ Line (33 + x, 33 + y)-(29 + x, 29 + y), cf, BF
+ Line (32 + x, 32 + y)-(28 + x, 28 + y), cf, BF
+ Line (4 + x, 36 + y)-(5 + x, 35 + y), cf, BF
+ Line (5 + x, 35 + y)-(7 + x, 33 + y), cf, BF
+ Line (6 + x, 34 + y)-(9 + x, 31 + y), cf, BF
+ Line (7 + x, 33 + y)-(11 + x, 29 + y), cf, BF
+ Line (8 + x, 32 + y)-(12 + x, 28 + y), cf, BF
+ Line (17 + x, 9 + y)-(23 + x, 8 + y), cf, BF
+ Line (18 + x, 7 + y)-(22 + x, 6 + y), cf, BF
+ Line (19 + x, 5 + y)-(21 + x, 4 + y), cf, BF
+ Line (17 + x, 31 + y)-(23 + x, 32 + y), cf, BF
+ Line (18 + x, 33 + y)-(22 + x, 34 + y), cf, BF
+ Line (19 + x, 35 + y)-(21 + x, 36 + y), cf, BF
+ Line (8 + x, 17 + y)-(9 + x, 23 + y), cf, BF
+ Line (6 + x, 18 + y)-(7 + x, 22 + y), cf, BF
+ Line (4 + x, 19 + y)-(5 + x, 21 + y), cf, BF
+ Line (32 + x, 17 + y)-(31 + x, 23 + y), cf, BF
+ Line (34 + x, 18 + y)-(33 + x, 22 + y), cf, BF
+ Line (36 + x, 19 + y)-(35 + x, 21 + y), cf, BF
+End Sub
+
+Sub lance
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (9 + x, 31 + y)-(31 + x, 31 + y), cf
+ Line (10 + x, 30 + y)-(30 + x, 30 + y), cf
+ Line (11 + x, 29 + y)-(29 + x, 29 + y), cf
+ Line (12 + x, 28 + y)-(28 + x, 28 + y), cf
+ Line (13 + x, 27 + y)-(27 + x, 27 + y), cf
+ Line (14 + x, 26 + y)-(26 + x, 24 + y), cf, BF
+ Line (15 + x, 23 + y)-(25 + x, 20 + y), cf, BF
+ Line (16 + x, 19 + y)-(24 + x, 16 + y), cf, BF
+ Line (17 + x, 15 + y)-(23 + x, 12 + y), cf, BF
+ Line (18 + x, 11 + y)-(22 + x, 8 + y), cf, BF
+ Line (19 + x, 7 + y)-(21 + x, 4 + y), cf, BF
+End Sub
+
+Sub dragon
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (9 + x, 31 + y)-(31 + x, 31 + y), cf
+ Line (10 + x, 30 + y)-(30 + x, 30 + y), cf
+ Line (11 + x, 29 + y)-(29 + x, 29 + y), cf
+ Line (12 + x, 28 + y)-(28 + x, 28 + y), cf
+ Line (13 + x, 27 + y)-(27 + x, 27 + y), cf
+ Line (14 + x, 26 + y)-(26 + x, 26 + y), cf
+ Line (15 + x, 25 + y)-(25 + x, 25 + y), cf
+ Line (15 + x, 20 + y)-(25 + x, 20 + y), cf
+ Line (14 + x, 19 + y)-(26 + x, 19 + y), cf
+ Line (13 + x, 18 + y)-(27 + x, 18 + y), cf
+ Line (16 + x, 24 + y)-(24 + x, 8 + y), cf, BF
+ Line (17 + x, 7 + y)-(23 + x, 6 + y), cf, BF
+ Line (18 + x, 5 + y)-(22 + x, 5 + y), cf
+ Line (19 + x, 4 + y)-(21 + x, 4 + y), cf
+ Line (9 + x, 12 + y)-(31 + x, 17 + y), cf, BF
+ Line (10 + x, 11 + y)-(13 + x, 11 + y), cf
+ Line (11 + x, 10 + y)-(12 + x, 10 + y), cf
+ Line (27 + x, 11 + y)-(30 + x, 11 + y), cf
+ Line (28 + x, 10 + y)-(29 + x, 10 + y), cf
+ Line (10 + x, 11 + y)-(10 + x, 18 + y), cf
+ Line (9 + x, 12 + y)-(9 + x, 19 + y), cf
+ Line (8 + x, 13 + y)-(8 + x, 20 + y), cf
+ Line (7 + x, 14 + y)-(7 + x, 21 + y), cf
+ Line (6 + x, 15 + y)-(6 + x, 22 + y), cf
+ Line (5 + x, 16 + y)-(5 + x, 23 + y), cf
+ Line (4 + x, 17 + y)-(4 + x, 24 + y), cf
+ Line (30 + x, 11 + y)-(30 + x, 18 + y), cf
+ Line (31 + x, 12 + y)-(31 + x, 19 + y), cf
+ Line (32 + x, 13 + y)-(32 + x, 20 + y), cf
+ Line (33 + x, 14 + y)-(33 + x, 21 + y), cf
+ Line (34 + x, 15 + y)-(34 + x, 22 + y), cf
+ Line (35 + x, 16 + y)-(35 + x, 23 + y), cf
+ Line (36 + x, 17 + y)-(36 + x, 24 + y), cf
+End Sub
+
+Sub horse
+ Line (8 + x, 36 + y)-(32 + x, 32 + y), cf, BF
+ Line (10 + x, 31 + y)-(11 + x, 26 + y), cf, BF
+ Line (16 + x, 31 + y)-(17 + x, 26 + y), cf, BF
+ Line (23 + x, 31 + y)-(24 + x, 26 + y), cf, BF
+ Line (29 + x, 31 + y)-(30 + x, 26 + y), cf, BF
+ Line (8 + x, 25 + y)-(32 + x, 14 + y), cf, BF
+ Line (7 + x, 24 + y)-(7 + x, 15 + y), cf
+ Line (6 + x, 23 + y)-(6 + x, 16 + y), cf
+ Line (5 + x, 22 + y)-(5 + x, 17 + y), cf
+ Line (4 + x, 21 + y)-(4 + x, 18 + y), cf
+ Line (33 + x, 24 + y)-(33 + x, 15 + y), cf
+ Line (34 + x, 23 + y)-(34 + x, 16 + y), cf
+ Line (35 + x, 22 + y)-(35 + x, 17 + y), cf
+ Line (36 + x, 21 + y)-(36 + x, 18 + y), cf
+ Line (14 + x, 13 + y)-(26 + x, 10 + y), cf, BF
+ Line (10 + x, 9 + y)-(30 + x, 7 + y), cf, BF
+ Line (10 + x, 6 + y)-(13 + x, 6 + y), cf
+ Line (10 + x, 5 + y)-(12 + x, 5 + y), cf
+ Line (10 + x, 4 + y)-(11 + x, 4 + y), cf
+ Line (30 + x, 6 + y)-(27 + x, 6 + y), cf
+ Line (30 + x, 5 + y)-(28 + x, 5 + y), cf
+ Line (30 + x, 4 + y)-(29 + x, 4 + y), cf
+ Line (16 + x, 6 + y)-(24 + x, 6 + y), cf
+ Line (17 + x, 5 + y)-(23 + x, 5 + y), cf
+ Line (18 + x, 4 + y)-(22 + x, 4 + y), cf
+End Sub
+
+Sub dame
+ Line (14 + x, 36 + y)-(26 + x, 28 + y), cf, BF
+ Line (14 + x, 4 + y)-(26 + x, 12 + y), cf, BF
+ Line (4 + x, 14 + y)-(12 + x, 26 + y), cf, BF
+ Line (28 + x, 14 + y)-(36 + x, 26 + y), cf, BF
+ Line (17 + x, 36 + y)-(17 + x, 27 + y), cf
+ Line (16 + x, 36 + y)-(16 + x, 26 + y), cf
+ Line (15 + x, 36 + y)-(15 + x, 25 + y), cf
+ Line (14 + x, 36 + y)-(14 + x, 24 + y), cf
+ Line (13 + x, 35 + y)-(13 + x, 23 + y), cf
+ Line (12 + x, 34 + y)-(12 + x, 22 + y), cf
+ Line (23 + x, 36 + y)-(23 + x, 27 + y), cf
+ Line (24 + x, 36 + y)-(24 + x, 26 + y), cf
+ Line (25 + x, 36 + y)-(25 + x, 25 + y), cf
+ Line (26 + x, 36 + y)-(26 + x, 24 + y), cf
+ Line (27 + x, 35 + y)-(27 + x, 23 + y), cf
+ Line (28 + x, 34 + y)-(28 + x, 22 + y), cf
+ Line (17 + x, 4 + y)-(17 + x, 13 + y), cf
+ Line (16 + x, 4 + y)-(16 + x, 14 + y), cf
+ Line (15 + x, 4 + y)-(15 + x, 15 + y), cf
+ Line (14 + x, 4 + y)-(14 + x, 16 + y), cf
+ Line (13 + x, 5 + y)-(13 + x, 17 + y), cf
+ Line (12 + x, 6 + y)-(12 + x, 18 + y), cf
+ Line (23 + x, 4 + y)-(23 + x, 13 + y), cf
+ Line (24 + x, 4 + y)-(24 + x, 14 + y), cf
+ Line (25 + x, 4 + y)-(25 + x, 15 + y), cf
+ Line (26 + x, 4 + y)-(26 + x, 16 + y), cf
+ Line (27 + x, 5 + y)-(27 + x, 17 + y), cf
+ Line (28 + x, 6 + y)-(28 + x, 18 + y), cf
+ Line (5 + x, 13 + y)-(5 + x, 27 + y), cf
+ Line (6 + x, 12 + y)-(6 + x, 28 + y), cf
+ Line (7 + x, 11 + y)-(7 + x, 29 + y), cf
+ Line (8 + x, 10 + y)-(8 + x, 30 + y), cf
+ Line (9 + x, 9 + y)-(9 + x, 31 + y), cf
+ Line (10 + x, 8 + y)-(10 + x, 32 + y), cf
+ Line (11 + x, 7 + y)-(11 + x, 33 + y), cf
+ Line (35 + x, 13 + y)-(35 + x, 27 + y), cf
+ Line (34 + x, 12 + y)-(34 + x, 28 + y), cf
+ Line (33 + x, 11 + y)-(33 + x, 29 + y), cf
+ Line (32 + x, 10 + y)-(32 + x, 30 + y), cf
+ Line (31 + x, 9 + y)-(31 + x, 31 + y), cf
+ Line (30 + x, 8 + y)-(30 + x, 32 + y), cf
+ Line (29 + x, 7 + y)-(29 + x, 33 + y), cf
+End Sub
+
+Sub checker
+ Line (14 + x, 36 + y)-(26 + x, 32 + y), cf, BF
+ Line (14 + x, 4 + y)-(26 + x, 8 + y), cf, BF
+ Line (4 + x, 14 + y)-(8 + x, 26 + y), cf, BF
+ Line (32 + x, 14 + y)-(36 + x, 26 + y), cf, BF
+ Line (13 + x, 35 + y)-(13 + x, 31 + y), cf
+ Line (12 + x, 34 + y)-(12 + x, 30 + y), cf
+ Line (11 + x, 33 + y)-(11 + x, 29 + y), cf
+ Line (10 + x, 32 + y)-(10 + x, 28 + y), cf
+ Line (9 + x, 31 + y)-(9 + x, 27 + y), cf
+ Line (8 + x, 30 + y)-(8 + x, 26 + y), cf
+ Line (27 + x, 35 + y)-(27 + x, 31 + y), cf
+ Line (28 + x, 34 + y)-(28 + x, 30 + y), cf
+ Line (29 + x, 33 + y)-(29 + x, 29 + y), cf
+ Line (30 + x, 32 + y)-(30 + x, 28 + y), cf
+ Line (31 + x, 31 + y)-(31 + x, 27 + y), cf
+ Line (32 + x, 30 + y)-(32 + x, 26 + y), cf
+ Line (13 + x, 5 + y)-(13 + x, 9 + y), cf
+ Line (12 + x, 6 + y)-(12 + x, 10 + y), cf
+ Line (11 + x, 7 + y)-(11 + x, 11 + y), cf
+ Line (10 + x, 8 + y)-(10 + x, 12 + y), cf
+ Line (9 + x, 9 + y)-(9 + x, 13 + y), cf
+ Line (8 + x, 10 + y)-(8 + x, 14 + y), cf
+ Line (27 + x, 5 + y)-(27 + x, 9 + y), cf
+ Line (28 + x, 6 + y)-(28 + x, 10 + y), cf
+ Line (29 + x, 7 + y)-(29 + x, 11 + y), cf
+ Line (30 + x, 8 + y)-(30 + x, 12 + y), cf
+ Line (31 + x, 9 + y)-(31 + x, 13 + y), cf
+ Line (32 + x, 10 + y)-(32 + x, 14 + y), cf
+ Line (5 + x, 13 + y)-(5 + x, 27 + y), cf
+ Line (6 + x, 12 + y)-(6 + x, 28 + y), cf
+ Line (7 + x, 11 + y)-(7 + x, 29 + y), cf
+ Line (35 + x, 13 + y)-(35 + x, 27 + y), cf
+ Line (34 + x, 12 + y)-(34 + x, 28 + y), cf
+ Line (33 + x, 11 + y)-(33 + x, 29 + y), cf
+ Line (17 + x, 28 + y)-(23 + x, 24 + y), cf, BF
+ Line (17 + x, 12 + y)-(23 + x, 16 + y), cf, BF
+ Line (12 + x, 17 + y)-(16 + x, 23 + y), cf, BF
+ Line (24 + x, 17 + y)-(28 + x, 23 + y), cf, BF
+ Line (18 + x, 28 + y)-(18 + x, 23 + y), cf
+ Line (17 + x, 28 + y)-(17 + x, 22 + y), cf
+ Line (16 + x, 27 + y)-(16 + x, 21 + y), cf
+ Line (22 + x, 28 + y)-(22 + x, 23 + y), cf
+ Line (23 + x, 28 + y)-(23 + x, 22 + y), cf
+ Line (24 + x, 27 + y)-(24 + x, 21 + y), cf
+ Line (18 + x, 12 + y)-(18 + x, 17 + y), cf
+ Line (17 + x, 12 + y)-(17 + x, 18 + y), cf
+ Line (16 + x, 13 + y)-(16 + x, 19 + y), cf
+ Line (22 + x, 12 + y)-(22 + x, 17 + y), cf
+ Line (23 + x, 12 + y)-(23 + x, 18 + y), cf
+ Line (24 + x, 13 + y)-(24 + x, 19 + y), cf
+ Line (13 + x, 16 + y)-(13 + x, 24 + y), cf
+ Line (14 + x, 15 + y)-(14 + x, 25 + y), cf
+ Line (15 + x, 14 + y)-(15 + x, 26 + y), cf
+ Line (27 + x, 16 + y)-(27 + x, 24 + y), cf
+ Line (26 + x, 15 + y)-(26 + x, 25 + y), cf
+ Line (25 + x, 14 + y)-(25 + x, 26 + y), cf
+End Sub
+
+Sub cells
+ Line (x, y)-(x + 40, y + 40), cd1, BF
+ Line (x - 1, y - 1)-(x + 41, y + 41), cb1, B
+End Sub
+
+Sub dices
+ Line (20, 160)-(60, 200), cd1, BF
+ Line (20, 220)-(60, 260), cd1, BF
+ Line (20, 280)-(60, 320), cd1, BF
+ Line (580, 160)-(620, 200), cd1, BF
+ Line (580, 220)-(620, 260), cd1, BF
+ Line (580, 280)-(620, 320), cd1, BF
+ Line (19, 159)-(61, 201), cb1, B
+ Line (19, 219)-(61, 261), cb1, B
+ Line (19, 279)-(61, 321), cb1, B
+ Line (579, 159)-(621, 201), cb1, B
+ Line (579, 219)-(621, 261), cb1, B
+ Line (579, 279)-(621, 321), cb1, B
+End Sub
+
+Sub chessboard
+ Line (160, 80)-(480, 400), cb2, BF
+ For x = 160 To 480 Step 40
+ Line (x, 80)-(x, 400), cb1
+ Next x
+ For y = 80 To 400 Step 40
+ Line (160, y)-(480, y), cb1
+ Next y
+ For y = 320 To 80 Step -80: For x = 400 To 160 Step -80
+ Line (x + 1, y + 1)-(x + 39, y + 39), cb3, BF
+ Line (x + 41, y + 41)-(x + 79, y + 79), cb3, BF
+ Next x: Next y
+ Let y = 405
+ Let x = 175: Call numberA
+ Let x = 215: Call numberB
+ Let x = 255: Call numberC
+ Let x = 295: Call numberD
+ Let x = 335: Call numberE
+ Let x = 375: Call numberF
+ Let x = 415: Call numberG
+ Let x = 455: Call numberH
+ Let x = 145
+ Let y = 95: Call number8
+ Let y = 135: Call number7
+ Let y = 175: Call number6
+ Let y = 215: Call number5
+ Let y = 255: Call number4
+ Let y = 295: Call number3
+ Let y = 335: Call number2
+ Let y = 375: Call number1
+End Sub
+
+Sub makrukboard
+ Line (160, 80)-(480, 400), cb2, BF
+ For x = 160 To 480 Step 40
+ Line (x, 80)-(x, 400), cb1
+ Next x
+ For y = 80 To 400 Step 40
+ Line (160, y)-(480, y), cb1
+ Next y
+ Let y = 405
+ Let x = 175: Call numberA
+ Let x = 215: Call numberB
+ Let x = 255: Call numberC
+ Let x = 295: Call numberD
+ Let x = 335: Call numberE
+ Let x = 375: Call numberF
+ Let x = 415: Call numberG
+ Let x = 455: Call numberH
+ Let x = 145
+ Let y = 95: Call number8
+ Let y = 135: Call number7
+ Let y = 175: Call number6
+ Let y = 215: Call number5
+ Let y = 255: Call number4
+ Let y = 295: Call number3
+ Let y = 335: Call number2
+ Let y = 375: Call number1
+End Sub
+
+Sub xiangqiboard
+ Line (140, 40)-(500, 440), cb2, BF
+ For x = 140 To 500 Step 40
+ Line (x, 40)-(x, 440), cb1
+ Next x
+ For y = 40 To 440 Step 40
+ Line (140, y)-(500, y), cb1
+ Next y
+ Line (259, 161)-(381, 159), cb4, BF
+ Line (259, 41)-(261, 159), cb4, BF
+ Line (379, 41)-(381, 159), cb4, BF
+ Line (259, 321)-(381, 319), cb4, BF
+ Line (259, 439)-(261, 319), cb4, BF
+ Line (379, 439)-(381, 319), cb4, BF
+ Line (141, 238)-(499, 242), cb5, BF
+ Let y = 445
+ Let x = 155: Call numberA
+ Let x = 195: Call numberB
+ Let x = 235: Call numberC
+ Let x = 275: Call numberD
+ Let x = 315: Call numberE
+ Let x = 355: Call numberF
+ Let x = 395: Call numberG
+ Let x = 435: Call numberH
+ Let x = 475: Call numberI
+ Let x = 125
+ Let y = 55: Call number0
+ Let y = 95: Call number9
+ Let y = 135: Call number8
+ Let y = 175: Call number7
+ Let y = 215: Call number6
+ Let y = 255: Call number5
+ Let y = 295: Call number4
+ Let y = 335: Call number3
+ Let y = 375: Call number2
+ Let y = 415: Call number1
+End Sub
+
+Sub shogiboard
+ Line (140, 60)-(500, 420), cb2, BF
+ For x = 140 To 500 Step 40
+ Line (x, 60)-(x, 420), cb1
+ Next x
+ For y = 60 To 400 Step 40
+ Line (140, y)-(500, y), cb1
+ Next y
+ Let y = 425
+ Let x = 155: Call numberA
+ Let x = 195: Call numberB
+ Let x = 235: Call numberC
+ Let x = 275: Call numberD
+ Let x = 315: Call numberE
+ Let x = 355: Call numberF
+ Let x = 395: Call numberG
+ Let x = 435: Call numberH
+ Let x = 475: Call numberI
+ Let x = 125
+ Let y = 75: Call number9
+ Let y = 115: Call number8
+ Let y = 155: Call number7
+ Let y = 195: Call number6
+ Let y = 235: Call number5
+ Let y = 275: Call number4
+ Let y = 315: Call number3
+ Let y = 355: Call number2
+ Let y = 395: Call number1
+End Sub
+
+Sub draughtsboard
+ Line (120, 40)-(520, 440), cb2, BF
+ For x = 120 To 520 Step 40
+ Line (x, 40)-(x, 440), cb1
+ Next x
+ For y = 40 To 440 Step 40
+ Line (120, y)-(520, y), cb1
+ Next y
+ For y = 360 To 40 Step -80: For x = 440 To 120 Step -80
+ Line (x + 1, y + 1)-(x + 39, y + 39), cb3, BF
+ Line (x + 41, y + 41)-(x + 79, y + 79), cb3, BF
+ Next x: Next y
+ Let y = 445
+ Let x = 135: Call numberA
+ Let x = 175: Call numberB
+ Let x = 215: Call numberC
+ Let x = 255: Call numberD
+ Let x = 295: Call numberE
+ Let x = 335: Call numberF
+ Let x = 375: Call numberG
+ Let x = 415: Call numberH
+ Let x = 455: Call numberI
+ Let x = 495: Call numberJ
+ Let x = 105
+ Let y = 55: Call number0
+ Let y = 95: Call number9
+ Let y = 135: Call number8
+ Let y = 175: Call number7
+ Let y = 215: Call number6
+ Let y = 255: Call number5
+ Let y = 295: Call number4
+ Let y = 335: Call number3
+ Let y = 375: Call number2
+ Let y = 415: Call number1
+End Sub
+
+Sub chess
+
+ Rem 1st roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = 1
+ Let w1 = board(dc2, dc1): Let b1 = board(dc5, dc4)
+
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let w1 = board(dc2, dc1): Let b1 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While Abs(w1 - b1) < 10
+
+ Let w1 = board(dc2, dc1): Let b1 = board(dc5, dc4)
+ Let fw1x = dc1: Let fw1y = dc2: Let fb1x = dc4: Let fb1y = dc5
+ Let fw1 = dc3: Let fb1 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15: Call king
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0: Call king
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call chessfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 2nd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = Int(Rnd * 5 + 2)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = Int(Rnd * 5 + 2)
+ Let w2 = board(dc2, dc1): Let b2 = board(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc2 = 1 Or dc2 = 8
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc5 = 1 Or dc5 = 8
+ End Select
+
+ Let w2 = board(dc2, dc1): Let b2 = board(dc5, dc4)
+ Let fw2x = dc1: Let fw2y = dc2: Let fb2x = dc4: Let fb2y = dc5
+ Let fw2 = dc3: Let fb2 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call pawn
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call pawn
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call chessfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 3rd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = Int(Rnd * 5 + 2)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = Int(Rnd * 5 + 2)
+ Let w3 = board(dc2, dc1): Let b3 = board(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw3x = dc1: Let fw3y = dc2
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw3x = dc1: Let fw3y = dc2
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc2 = 1 Or dc2 = 8
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb3x = dc4: Let fb3y = dc5
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb3x = dc4: Let fb3y = dc5
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc5 = 1 Or dc5 = 8
+ End Select
+
+ Let w3 = board(dc2, dc1): Let b3 = board(dc5, dc4)
+ Let fw3x = dc1: Let fw3y = dc2: Let fb3x = dc4: Let fb3y = dc5
+ Let fw3 = dc3: Let fb3 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call pawn
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call pawn
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call chessfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 4th roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = Int(Rnd * 5 + 2)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = Int(Rnd * 5 + 2)
+ Let w4 = board(dc2, dc1): Let b4 = board(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw4x = dc1: Let fw4y = dc2
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw4x = dc1: Let fw4y = dc2
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or dc2 = 1 Or dc2 = 8
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb4x = dc4: Let fb4y = dc5
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb4x = dc4: Let fb4y = dc5
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or dc5 = 1 Or dc5 = 8
+ End Select
+
+ Let w4 = board(dc2, dc1): Let b4 = board(dc5, dc4)
+ Let fw4x = dc1: Let fw4y = dc2: Let fb4x = dc4: Let fb4y = dc5
+ Let fw4 = dc3: Let fb4 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call pawn
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call pawn
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Case
+ Case Is = Chr$(13)
+ Call chessfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+End Sub
+
+Sub makruk
+
+ Rem 1st roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = 1
+ Let w1 = board(dc2, dc1): Let b1 = board(dc5, dc4)
+
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let w1 = board(dc2, dc1): Let b1 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While Abs(w1 - b1) < 10
+
+ Let w1 = board(dc2, dc1): Let b1 = board(dc5, dc4)
+ Let fw1x = dc1: Let fw1y = dc2: Let fb1x = dc4: Let fb1y = dc5
+ Let fw1 = dc3: Let fb1 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15: Call king
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0: Call king
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call makrukfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 2nd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = Int(Rnd * 5 + 2)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = Int(Rnd * 5 + 2)
+ Let w2 = board(dc2, dc1): Let b2 = board(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 3
+ Let indexw3 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 4
+ Let indexw4 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Let indexw5 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w2 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc2 < 3 Or dc2 > 5
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 3
+ Let indexb3 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 4
+ Let indexb4 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Let indexb5 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b2 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc5 < 4 Or dc5 > 6
+ End Select
+
+ Let w2 = board(dc2, dc1): Let b2 = board(dc5, dc4)
+ Let fw2x = dc1: Let fw2y = dc2: Let fb2x = dc4: Let fb2y = dc5
+ Let fw2 = dc3: Let fb2 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call checker
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call checker
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call makrukfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 3rd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = Int(Rnd * 5 + 2)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = Int(Rnd * 5 + 2)
+ Let w3 = board(dc2, dc1): Let b3 = board(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 3
+ Let indexw3 = indexw3 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Let indexw4 = indexw4 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Let indexw5 = indexw5 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw3x = dc1: Let fw3y = dc2
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w3 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc2 < 3 Or dc2 > 5
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 3
+ Let indexb3 = indexb3 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Let indexb4 = indexb4 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Let indexb5 = indexb5 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb3x = dc4: Let fb3y = dc5
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b3 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc5 < 4 Or dc5 > 6
+ End Select
+
+ Let w3 = board(dc2, dc1): Let b3 = board(dc5, dc4)
+ Let fw3x = dc1: Let fw3y = dc2: Let fb3x = dc4: Let fb3y = dc5
+ Let fw3 = dc3: Let fb3 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call checker
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call checker
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call makrukfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 4th roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc3 = Int(Rnd * 5 + 2)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let dc6 = Int(Rnd * 5 + 2)
+ Let w4 = board(dc2, dc1): Let b4 = board(dc5, dc4)
+ If indexw3 > 2 Or indexw4 > 2 Or indexw5 > 2 Then Let dc3 = 6
+ If indexb3 > 2 Or indexb4 > 2 Or indexb5 > 2 Then Let dc6 = 6
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let fw4x = dc1: Let fw4y = dc2
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let w4 = board(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or dc2 < 3 Or dc2 > 5
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let fb4x = dc4: Let fb4y = dc5
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let b4 = board(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or dc5 <= 4 Or dc5 >= 6
+ End Select
+
+ Let w4 = board(dc2, dc1): Let b4 = board(dc5, dc4)
+ Let fw4x = dc1: Let fw4y = dc2: Let fb4x = dc4: Let fb4y = dc5
+ Let fw4 = dc3: Let fb4 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ Let x = (dc1 * 40) + 120: Let y = Abs((dc2 * 40) - 480) - 80
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call checker
+ Let x = (dc4 * 40) + 120: Let y = Abs((dc5 * 40) - 480) - 80
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call checker
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Case
+ Case Is = Chr$(13)
+ Call makrukfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+End Sub
+
+Sub xiangqi
+
+ Rem 1st roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 3 + 4)
+ Let dc2 = Int(Rnd * 3 + 1)
+ Let dc3 = 1
+ Let dc4 = Int(Rnd * 3 + 4)
+ Let dc5 = Int(Rnd * 3 + 8)
+ Let dc6 = 1
+ Let w1 = xiabo(dc2, dc1): Let b1 = xiabo(dc5, dc4)
+
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 3 + 4)
+ Let dc2 = Int(Rnd * 3 + 1)
+ Let dc4 = Int(Rnd * 3 + 4)
+ Let dc5 = Int(Rnd * 3 + 8)
+ Let w1 = xiabo(dc2, dc1): Let b1 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w1 = b1
+
+ Let w1 = xiabo(dc2, dc1): Let b1 = xiabo(dc5, dc4)
+ Let fw1x = dc1: Let fw1y = dc2: Let fb1x = dc4: Let fb1y = dc5
+ Let fw1 = dc3: Let fb1 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call cannon
+ If dc3 = 7 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call cannon
+ If dc6 = 7 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15: Call king
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0: Call king
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call xiangqifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 2nd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let dc3 = Int(Rnd * 6 + 2)
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let dc6 = Int(Rnd * 6 + 2)
+ Let w2 = xiabo(dc2, dc1): Let b2 = xiabo(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Let indexw2 = 1
+ Let dc1 = Int(Rnd * 3 + 4)
+ Let dc2 = Int(Rnd * 3 + 1)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 5 + 1)
+ If index = 1 Then
+ Let dc1 = 4
+ Let dc2 = 1
+ End If
+ If index = 2 Then
+ Let dc1 = 6
+ Let dc2 = 1
+ End If
+ If index = 3 Then
+ Let dc1 = 5
+ Let dc2 = 2
+ End If
+ If index = 4 Then
+ Let dc1 = 4
+ Let dc2 = 3
+ End If
+ If index = 5 Then
+ Let dc1 = 6
+ Let dc2 = 3
+ End If
+ Let w2 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or w2 Mod 2 <> 0
+ Case Is = 3
+ Let indexw3 = 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 5 + 1)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 7 + 1)
+ If index = 1 Then
+ Let dc1 = 3
+ Let dc2 = 1
+ End If
+ If index = 2 Then
+ Let dc1 = 7
+ Let dc2 = 1
+ End If
+ If index = 3 Then
+ Let dc1 = 1
+ Let dc2 = 3
+ End If
+ If index = 4 Then
+ Let dc1 = 5
+ Let dc2 = 3
+ End If
+ If index = 5 Then
+ Let dc1 = 9
+ Let dc2 = 3
+ End If
+ If index = 6 Then
+ Let dc1 = 3
+ Let dc2 = 5
+ End If
+ If index = 7 Then
+ Let dc1 = 7
+ Let dc2 = 5
+ End If
+ Let w2 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 4
+ Let indexw4 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w2 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Let indexw5 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w2 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Let indexw6 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w2 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 7
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w2 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc2 < 4 Or dc2 > 7
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Let indexb2 = 1
+ Let dc4 = Int(Rnd * 3 + 4)
+ Let dc5 = Int(Rnd * 3 + 8)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 5 + 1)
+ If index = 1 Then
+ Let dc4 = 4
+ Let dc5 = 10
+ End If
+ If index = 2 Then
+ Let dc4 = 6
+ Let dc5 = 10
+ End If
+ If index = 3 Then
+ Let dc4 = 5
+ Let dc5 = 9
+ End If
+ If index = 4 Then
+ Let dc4 = 4
+ Let dc5 = 8
+ End If
+ If index = 5 Then
+ Let dc4 = 6
+ Let dc5 = 8
+ End If
+ Let b2 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or b2 Mod 2 = 0
+ Case Is = 3
+ Let indexb3 = 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 5 + 6)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 7 + 1)
+ If index = 1 Then
+ Let dc4 = 3
+ Let dc5 = 10
+ End If
+ If index = 2 Then
+ Let dc4 = 7
+ Let dc5 = 10
+ End If
+ If index = 3 Then
+ Let dc4 = 1
+ Let dc5 = 8
+ End If
+ If index = 4 Then
+ Let dc4 = 5
+ Let dc5 = 8
+ End If
+ If index = 5 Then
+ Let dc4 = 9
+ Let dc5 = 8
+ End If
+ If index = 6 Then
+ Let dc4 = 3
+ Let dc5 = 6
+ End If
+ If index = 7 Then
+ Let dc4 = 7
+ Let dc5 = 6
+ End If
+ Let b2 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or b2
+ Case Is = 4
+ Let indexb4 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b2 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Let indexb5 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b2 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Let indexb6 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b2 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 7
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b2 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc5 < 3 Or dc5 > 8
+ End Select
+
+ Let w2 = xiabo(dc2, dc1): Let b2 = xiabo(dc5, dc4)
+ Let fw2x = dc1: Let fw2y = dc2: Let fb2x = dc4: Let fb2y = dc5
+ Let fw2 = dc3: Let fb2 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call cannon
+ If dc3 = 7 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call cannon
+ If dc6 = 7 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call cannon
+ If dc3 = 7 Then Call pawn
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call cannon
+ If dc6 = 7 Then Call pawn
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call xiangqifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 3rd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let dc3 = Int(Rnd * 6 + 2)
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let dc6 = Int(Rnd * 6 + 2)
+ Let w3 = xiabo(dc2, dc1): Let b3 = xiabo(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Let indexw2 = indexw2 + 1
+ Let dc1 = Int(Rnd * 3 + 4)
+ Let dc2 = Int(Rnd * 3 + 1)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 5 + 1)
+ If index = 1 Then
+ Let dc1 = 4
+ Let dc2 = 1
+ End If
+ If index = 2 Then
+ Let dc1 = 6
+ Let dc2 = 1
+ End If
+ If index = 3 Then
+ Let dc1 = 5
+ Let dc2 = 2
+ End If
+ If index = 4 Then
+ Let dc1 = 4
+ Let dc2 = 3
+ End If
+ If index = 5 Then
+ Let dc1 = 6
+ Let dc2 = 3
+ End If
+ Let w3 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or w3 Mod 2 <> 0
+ Case Is = 3
+ Let indexw3 = indexw3 + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 5 + 1)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 7 + 1)
+ If index = 1 Then
+ Let dc1 = 3
+ Let dc2 = 1
+ End If
+ If index = 2 Then
+ Let dc1 = 7
+ Let dc2 = 1
+ End If
+ If index = 3 Then
+ Let dc1 = 1
+ Let dc2 = 3
+ End If
+ If index = 4 Then
+ Let dc1 = 5
+ Let dc2 = 3
+ End If
+ If index = 5 Then
+ Let dc1 = 9
+ Let dc2 = 3
+ End If
+ If index = 6 Then
+ Let dc1 = 3
+ Let dc2 = 5
+ End If
+ If index = 7 Then
+ Let dc1 = 7
+ Let dc2 = 5
+ End If
+ Let w3 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Let indexw4 = indexw4 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w3 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Let indexw5 = indexw5 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let fw3x = dc1: Let fw3y = dc2
+ Let w3 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Let indexw6 = indexw6 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let fw3x = dc1: Let fw3y = dc2
+ Let w3 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 7
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w3 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc2 < 4 Or dc2 > 7
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Let indexb2 = indexb2 + 1
+ Let dc4 = Int(Rnd * 3 + 4)
+ Let dc5 = Int(Rnd * 3 + 8)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 5 + 1)
+ If index = 1 Then
+ Let dc4 = 4
+ Let dc5 = 10
+ End If
+ If index = 2 Then
+ Let dc4 = 6
+ Let dc5 = 10
+ End If
+ If index = 3 Then
+ Let dc4 = 5
+ Let dc5 = 9
+ End If
+ If index = 4 Then
+ Let dc4 = 4
+ Let dc5 = 8
+ End If
+ If index = 5 Then
+ Let dc4 = 6
+ Let dc5 = 8
+ End If
+ Let b3 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or b3 Mod 2 = 0
+ Case Is = 3
+ Let indexb3 = indexb3 + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 5 + 6)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 7 + 1)
+ If index = 1 Then
+ Let dc4 = 3
+ Let dc5 = 10
+ End If
+ If index = 2 Then
+ Let dc4 = 7
+ Let dc5 = 10
+ End If
+ If index = 3 Then
+ Let dc4 = 1
+ Let dc5 = 8
+ End If
+ If index = 4 Then
+ Let dc4 = 5
+ Let dc5 = 8
+ End If
+ If index = 5 Then
+ Let dc4 = 9
+ Let dc5 = 8
+ End If
+ If index = 6 Then
+ Let dc4 = 3
+ Let dc5 = 6
+ End If
+ If index = 7 Then
+ Let dc4 = 7
+ Let dc5 = 6
+ End If
+ Let b3 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Let indexb4 = indexb4 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b3 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Let indexb5 = indexb5 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let fb3x = dc4: Let fb3y = dc5
+ Let b3 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Let indexb6 = indexb6 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let fb3x = dc4: Let fb3y = dc5
+ Let b3 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 7
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b3 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc5 < 3 Or dc5 > 8
+ End Select
+
+ Let w3 = xiabo(dc2, dc1): Let b3 = xiabo(dc5, dc4)
+ Let fw3x = dc1: Let fw3y = dc2: Let fb3x = dc4: Let fb3y = dc5
+ Let fw3 = dc3: Let fb3 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call cannon
+ If dc3 = 7 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call cannon
+ If dc6 = 7 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call cannon
+ If dc3 = 7 Then Call pawn
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call cannon
+ If dc6 = 7 Then Call pawn
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call xiangqifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 4th roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let dc3 = Int(Rnd * 6 + 2)
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let dc6 = Int(Rnd * 6 + 2)
+ Let w4 = xiabo(dc2, dc1): Let b2 = xiabo(dc5, dc4)
+ If indexw2 > 2 Or indexw3 > 2 Or indexw4 > 2 Or indexw5 > 2 Or indexw6 > 2 Then dc3 = 7
+ If indexb2 > 2 Or indexb3 > 2 Or indexb4 > 2 Or indexb5 > 2 Or indexb6 > 2 Then dc6 = 7
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Let dc1 = Int(Rnd * 3 + 4)
+ Let dc2 = Int(Rnd * 3 + 1)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 5 + 1)
+ If index = 1 Then
+ Let dc1 = 4
+ Let dc2 = 1
+ End If
+ If index = 2 Then
+ Let dc1 = 6
+ Let dc2 = 1
+ End If
+ If index = 3 Then
+ Let dc1 = 5
+ Let dc2 = 2
+ End If
+ If index = 4 Then
+ Let dc1 = 4
+ Let dc2 = 3
+ End If
+ If index = 5 Then
+ Let dc1 = 6
+ Let dc2 = 3
+ End If
+ Let w4 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or w4 Mod 2 <> 0
+ Case Is = 3
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 5 + 1)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 7 + 1)
+ If index = 1 Then
+ Let dc1 = 3
+ Let dc2 = 1
+ End If
+ If index = 2 Then
+ Let dc1 = 7
+ Let dc2 = 1
+ End If
+ If index = 3 Then
+ Let dc1 = 1
+ Let dc2 = 3
+ End If
+ If index = 4 Then
+ Let dc1 = 5
+ Let dc2 = 3
+ End If
+ If index = 5 Then
+ Let dc1 = 9
+ Let dc2 = 3
+ End If
+ If index = 6 Then
+ Let dc1 = 3
+ Let dc2 = 5
+ End If
+ If index = 7 Then
+ Let dc1 = 7
+ Let dc2 = 5
+ End If
+ Let w4 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w4 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let fw4x = dc1: Let fw4y = dc2
+ Let w4 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let fw4x = dc1: Let fw4y = dc2
+ Let w4 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 7
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w4 = xiabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 < 3 Or dc2 > 8
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Let dc4 = Int(Rnd * 3 + 4)
+ Let dc5 = Int(Rnd * 3 + 8)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 5 + 1)
+ If index = 1 Then
+ Let dc4 = 4
+ Let dc5 = 10
+ End If
+ If index = 2 Then
+ Let dc4 = 6
+ Let dc5 = 10
+ End If
+ If index = 3 Then
+ Let dc4 = 5
+ Let dc5 = 9
+ End If
+ If index = 4 Then
+ Let dc4 = 4
+ Let dc5 = 8
+ End If
+ If index = 5 Then
+ Let dc4 = 6
+ Let dc5 = 8
+ End If
+ Let b4 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or b4 Mod 2 = 0
+ Case Is = 3
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 5 + 6)
+ Do
+ Let count = count + 1
+ Let index = Int(Rnd * 7 + 1)
+ If index = 1 Then
+ Let dc4 = 3
+ Let dc5 = 10
+ End If
+ If index = 2 Then
+ Let dc4 = 7
+ Let dc5 = 10
+ End If
+ If index = 3 Then
+ Let dc4 = 1
+ Let dc5 = 8
+ End If
+ If index = 4 Then
+ Let dc4 = 5
+ Let dc5 = 8
+ End If
+ If index = 5 Then
+ Let dc4 = 9
+ Let dc5 = 8
+ End If
+ If index = 6 Then
+ Let dc4 = 3
+ Let dc5 = 6
+ End If
+ If index = 7 Then
+ Let dc4 = 7
+ Let dc5 = 6
+ End If
+ Let b4 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b4 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let fb4x = dc4: Let fb4y = dc5
+ Let b4 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let fb4x = dc4: Let fb4y = dc5
+ Let b4 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 7
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b4 = xiabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or dc5 < 3 Or dc5 > 8
+ End Select
+
+ Let w4 = xiabo(dc2, dc1): Let b4 = xiabo(dc5, dc4)
+ Let fw4x = dc1: Let fw4y = dc2: Let fb4x = dc4: Let fb4y = dc5
+ Let fw4 = dc3: Let fb4 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call cannon
+ If dc3 = 7 Then Call pawn
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call cannon
+ If dc6 = 7 Then Call pawn
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call bishop
+ If dc3 = 4 Then Call knight
+ If dc3 = 5 Then Call rook
+ If dc3 = 6 Then Call cannon
+ If dc3 = 7 Then Call pawn
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call bishop
+ If dc6 = 4 Then Call knight
+ If dc6 = 5 Then Call rook
+ If dc6 = 6 Then Call cannon
+ If dc6 = 7 Then Call pawn
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Case
+ Case Is = Chr$(13)
+ Call xiangqifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+End Sub
+
+Sub shogi
+
+ Rem 1st roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let dc3 = 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let dc6 = 1
+ Let w1 = shobo(dc2, dc1): Let b1 = shobo(dc5, dc4)
+
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let w1 = shobo(dc2, dc1): Let b1 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While Abs(w1 - b1) < 11
+
+ Let w1 = shobo(dc2, dc1): Let b1 = shobo(dc5, dc4)
+ Let fw1x = dc1: Let fw1y = dc2: Let fb1x = dc4: Let fb1y = dc5
+ Let fw1 = dc3: Let fb1 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call general
+ If dc3 = 4 Then Call bishop
+ If dc3 = 5 Then Call knight
+ If dc3 = 6 Then Call rook
+ If dc3 = 7 Then Call lance
+ If dc3 = 8 Then Call pawn
+ If dc3 = 9 Then Call tokin
+ If dc3 = 10 Then Call dragon
+ If dc3 = 11 Then Call horse
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call general
+ If dc6 = 4 Then Call bishop
+ If dc6 = 5 Then Call knight
+ If dc6 = 6 Then Call rook
+ If dc6 = 7 Then Call lance
+ If dc6 = 8 Then Call pawn
+ If dc6 = 9 Then Call tokin
+ If dc6 = 10 Then Call dragon
+ If dc6 = 11 Then Call horse
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 60
+ Let cf = 15: Call king
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 60
+ Let cf = 0: Call king
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call shogifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 2nd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let dc3 = Int(Rnd * 10 + 2)
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let dc6 = Int(Rnd * 10 + 2)
+ Let w2 = shobo(dc2, dc1): Let b2 = shobo(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 3
+ Let indexw3 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 4
+ Let indexw4 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Let indexw5 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Do
+ Let indexw6 = 1
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 7
+ Let indexw7 = 1
+ Let index = Int(Rnd * 2 + 1)
+ If index = 1 Then Let dc1 = 1 Else Let dc1 = 9
+ If dc1 = 1 Then Let indexw71 = 1 Else Let indexw72 = 1
+ Do
+ Let count = count + 1
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 8
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc2 < 3 Or dc2 > 7
+ Case Is = 9
+ Let indexw9 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 10
+ Let indexw10 = 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 11
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w2 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 3
+ Let indexb3 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 4
+ Let indexb4 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 5
+ Let indexb5 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 6
+ Do
+ Let indexb6 = 1
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 7
+ Let indexb7 = 1
+ Let index = Int(Rnd * 2 + 1)
+ If index = 1 Then Let dc4 = 1 Else Let dc4 = 9
+ If dc4 = 1 Then Let indexb71 = 1 Else Let indexb72 = 1
+ Do
+ Let count = count + 1
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 8
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1 Or dc5 < 3 Or dc5 > 7
+ Case Is = 9
+ Let indexb9 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 10
+ Let indexb10 = 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 11
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b2 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ End Select
+
+ Let w2 = shobo(dc2, dc1): Let b2 = shobo(dc5, dc4)
+ Let fw2x = dc1: Let fw2y = dc2: Let fb2x = dc4: Let fb2y = dc5
+ Let fw2 = dc3: Let fb2 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call general
+ If dc3 = 4 Then Call bishop
+ If dc3 = 5 Then Call knight
+ If dc3 = 6 Then Call rook
+ If dc3 = 7 Then Call lance
+ If dc3 = 8 Then Call pawn
+ If dc3 = 9 Then Call horse
+ If dc3 = 10 Then Call dragon
+ If dc3 = 11 Then Call tokin
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call general
+ If dc6 = 4 Then Call bishop
+ If dc6 = 5 Then Call knight
+ If dc6 = 6 Then Call rook
+ If dc6 = 7 Then Call lance
+ If dc6 = 8 Then Call pawn
+ If dc6 = 9 Then Call horse
+ If dc6 = 10 Then Call dragon
+ If dc6 = 11 Then Call tokin
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 60
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call general
+ If dc3 = 4 Then Call bishop
+ If dc3 = 5 Then Call knight
+ If dc3 = 6 Then Call rook
+ If dc3 = 7 Then Call lance
+ If dc3 = 8 Then Call pawn
+ If dc3 = 9 Then Call horse
+ If dc3 = 10 Then Call dragon
+ If dc3 = 11 Then Call tokin
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 60
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call general
+ If dc6 = 4 Then Call bishop
+ If dc6 = 5 Then Call knight
+ If dc6 = 6 Then Call rook
+ If dc6 = 7 Then Call lance
+ If dc6 = 8 Then Call pawn
+ If dc6 = 9 Then Call horse
+ If dc6 = 10 Then Call dragon
+ If dc6 = 11 Then Call tokin
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call shogifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 3rd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let dc3 = Int(Rnd * 10 + 2)
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let dc6 = Int(Rnd * 10 + 2)
+ Let w3 = shobo(dc2, dc1): Let b3 = shobo(dc5, dc4)
+ If dc3 = 4 Then Let indexw4 = indexw4 + 1
+ If dc3 = 6 Then Let indexw6 = indexw6 + 1
+ If dc3 = 9 Then Let indexw9 = indexw9 + 1
+ If dc3 = 10 Then Let indexw10 = indexw10 + 1
+ If indexw4 > 1 Then
+ Let dc3 = 8
+ Let indexw4 = indexw4 - 1
+ End If
+ If indexw6 > 1 Then
+ Let dc3 = 8
+ Let indexw6 = indexw4 - 1
+ End If
+ If indexw9 > 1 Then
+ Let dc3 = 8
+ Let indexw9 = indexw4 - 1
+ End If
+ If indexw10 > 1 Then
+ Let dc3 = 8
+ Let indexw10 = indexw4 - 1
+ End If
+ If indexb4 > 1 Then
+ Let dc6 = 8
+ Let indexb4 = indexb4 - 1
+ End If
+ If indexb6 > 1 Then
+ Let dc6 = 8
+ Let indexb6 = indexb4 - 1
+ End If
+ If indexb9 > 1 Then
+ Let dc6 = 8
+ Let indexb9 = indexb4 - 1
+ End If
+ If indexb10 > 1 Then
+ Let dc6 = 8
+ Let indexb10 = indexb4 - 1
+ End If
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 3
+ Let indexw3 = indexw3 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Let indexw4 = indexw4 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Let indexw5 = indexw5 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Let indexw6 = indexw6 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 7
+ Let indexw7 = indexw7 + 1
+ Let index = Int(Rnd * 2 + 1)
+ If index = 1 Then Let dc1 = 1 Else Let dc1 = 9
+ If indexw71 = 1 Then dc1 = 9
+ If indexw72 = 1 Then dc1 = 1
+ Do
+ Let count = count + 1
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 8
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc2 < 3 Or dc2 > 7
+ Case Is = 9
+ Let indexw9 = indexw9 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 10
+ Let indexw10 = indexw10 + 1
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 11
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w3 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 3
+ Let indexb3 = indexb3 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 4
+ Let indexb4 = indexb4 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 5
+ Let indexb5 = indexb5 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 6
+ Let indexb6 = indexb6 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 7
+ Let indexb7 = indexb7 + 1
+ Let index = Int(Rnd * 2 + 1)
+ If index = 1 Then Let dc4 = 1 Else Let dc4 = 9
+ If indexb71 = 1 Then dc4 = 9
+ If indexb72 = 1 Then dc4 = 1
+ Do
+ Let count = count + 1
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 8
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2 Or dc5 < 3 Or dc5 > 7
+ Case Is = 9
+ Let indexb9 = indexb9 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 10
+ Let indexb10 = indexb10 + 1
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 11
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b3 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ End Select
+
+ Let w3 = shobo(dc2, dc1): Let b3 = shobo(dc5, dc4)
+ Let fw3x = dc1: Let fw3y = dc2: Let fb3x = dc4: Let fb3y = dc5
+ Let fw3 = dc3: Let fb3 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call general
+ If dc3 = 4 Then Call bishop
+ If dc3 = 5 Then Call knight
+ If dc3 = 6 Then Call rook
+ If dc3 = 7 Then Call lance
+ If dc3 = 8 Then Call pawn
+ If dc3 = 9 Then Call horse
+ If dc3 = 10 Then Call dragon
+ If dc3 = 11 Then Call tokin
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call general
+ If dc6 = 4 Then Call bishop
+ If dc6 = 5 Then Call knight
+ If dc6 = 6 Then Call rook
+ If dc6 = 7 Then Call lance
+ If dc6 = 8 Then Call pawn
+ If dc6 = 9 Then Call horse
+ If dc6 = 10 Then Call dragon
+ If dc6 = 11 Then Call tokin
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 60
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call general
+ If dc3 = 4 Then Call bishop
+ If dc3 = 5 Then Call knight
+ If dc3 = 6 Then Call rook
+ If dc3 = 7 Then Call lance
+ If dc3 = 8 Then Call pawn
+ If dc3 = 9 Then Call horse
+ If dc3 = 10 Then Call dragon
+ If dc3 = 11 Then Call tokin
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 60
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call general
+ If dc6 = 4 Then Call bishop
+ If dc6 = 5 Then Call knight
+ If dc6 = 6 Then Call rook
+ If dc6 = 7 Then Call lance
+ If dc6 = 8 Then Call pawn
+ If dc6 = 9 Then Call horse
+ If dc6 = 10 Then Call dragon
+ If dc6 = 11 Then Call tokin
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call shogifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 4th roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let dc3 = Int(Rnd * 10 + 2)
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let dc6 = Int(Rnd * 10 + 2)
+ Let w4 = shobo(dc2, dc1): Let b4 = shobo(dc5, dc4)
+ If dc3 = 4 Then Let indexw4 = indexw4 + 1
+ If dc3 = 6 Then Let indexw6 = indexw6 + 1
+ If dc3 = 9 Then Let indexw9 = indexw9 + 1
+ If dc3 = 10 Then Let indexw10 = indexw10 + 1
+ If indexw4 > 1 Then
+ Let dc3 = 8
+ Let indexw4 = indexw4 - 1
+ End If
+ If indexw6 > 1 Then
+ Let dc3 = 8
+ Let indexw6 = indexw4 - 1
+ End If
+ If indexw9 > 1 Then
+ Let dc3 = 8
+ Let indexw9 = indexw4 - 1
+ End If
+ If indexw10 > 1 Then
+ Let dc3 = 8
+ Let indexw10 = indexw4 - 1
+ End If
+ If indexb4 > 1 Then
+ Let dc6 = 8
+ Let indexb4 = indexb4 - 1
+ End If
+ If indexb6 > 1 Then
+ Let dc6 = 8
+ Let indexb6 = indexb4 - 1
+ End If
+ If indexb9 > 1 Then
+ Let dc6 = 8
+ Let indexb9 = indexb4 - 1
+ End If
+ If indexb10 > 1 Then
+ Let dc6 = 8
+ Let indexb10 = indexb4 - 1
+ End If
+ If indexw3 > 2 Or indexw5 > 2 Or indexw7 > 2 Then Let dc3 = 8
+ If indexb3 > 2 Or indexb5 > 2 Or indexb7 > 2 Then Let dc6 = 8
+
+ Select Case dc3
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let fw2x = dc1: Let fw2y = dc2
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 7
+ Let index = Int(Rnd * 2 + 1)
+ If index = 1 Then Let dc1 = 1 Else Let dc1 = 9
+ If indexw71 = 1 Then dc1 = 9
+ If indexw72 = 1 Then dc1 = 1
+ Do
+ Let count = count + 1
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 8
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or dc2 < 3 Or dc2 > 7
+ Case Is = 9
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 10
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 11
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 9 + 1)
+ Let dc2 = Int(Rnd * 9 + 1)
+ Let w4 = shobo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Exit Case
+ Case Is = 2
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 3
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 4
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 5
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 6
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let fb2x = dc4: Let fb2y = dc5
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 7
+ Let index = Int(Rnd * 2 + 1)
+ If index = 1 Then Let dc4 = 1 Else Let dc4 = 9
+ If indexb71 = 1 Then dc4 = 9
+ If indexb72 = 1 Then dc4 = 1
+ Do
+ Let count = count + 1
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 8
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3 Or dc5 < 3 Or dc5 > 7
+ Case Is = 9
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 10
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 11
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 9 + 1)
+ Let dc5 = Int(Rnd * 9 + 1)
+ Let b4 = shobo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ End Select
+
+ Let w4 = shobo(dc2, dc1): Let b4 = shobo(dc5, dc4)
+ Let fw4x = dc1: Let fw4y = dc2: Let fb4x = dc4: Let fb4y = dc5
+ Let fw4 = dc3: Let fb4 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call general
+ If dc3 = 4 Then Call bishop
+ If dc3 = 5 Then Call knight
+ If dc3 = 6 Then Call rook
+ If dc3 = 7 Then Call lance
+ If dc3 = 8 Then Call pawn
+ If dc3 = 9 Then Call horse
+ If dc3 = 10 Then Call dragon
+ If dc3 = 11 Then Call tokin
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call general
+ If dc6 = 4 Then Call bishop
+ If dc6 = 5 Then Call knight
+ If dc6 = 6 Then Call rook
+ If dc6 = 7 Then Call lance
+ If dc6 = 8 Then Call pawn
+ If dc6 = 9 Then Call horse
+ If dc6 = 10 Then Call dragon
+ If dc6 = 11 Then Call tokin
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ Let x = (dc1 * 40) + 100: Let y = Abs((dc2 * 40) - 480) - 60
+ Let cf = 15
+ If dc3 = 1 Then Call king
+ If dc3 = 2 Then Call queen
+ If dc3 = 3 Then Call general
+ If dc3 = 4 Then Call bishop
+ If dc3 = 5 Then Call knight
+ If dc3 = 6 Then Call rook
+ If dc3 = 7 Then Call lance
+ If dc3 = 8 Then Call pawn
+ If dc3 = 9 Then Call horse
+ If dc3 = 10 Then Call dragon
+ If dc3 = 11 Then Call tokin
+ Let x = (dc4 * 40) + 100: Let y = Abs((dc5 * 40) - 480) - 60
+ Let cf = 0
+ If dc6 = 1 Then Call king
+ If dc6 = 2 Then Call queen
+ If dc6 = 3 Then Call general
+ If dc6 = 4 Then Call bishop
+ If dc6 = 5 Then Call knight
+ If dc6 = 6 Then Call rook
+ If dc6 = 7 Then Call lance
+ If dc6 = 8 Then Call pawn
+ If dc6 = 9 Then Call horse
+ If dc6 = 10 Then Call dragon
+ If dc6 = 11 Then Call tokin
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Case
+ Case Is = Chr$(13)
+ Call shogifen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+End Sub
+
+Sub draughts
+
+ Rem 1st roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let dc3 = Int(Rnd * 2 + 1)
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let dc6 = Int(Rnd * 2 + 1)
+ Let w1 = drabo(dc2, dc1): Let b1 = drabo(dc5, dc4)
+
+ Do
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 8 + 1)
+ Let dc2 = Int(Rnd * 8 + 1)
+ Let dc4 = Int(Rnd * 8 + 1)
+ Let dc5 = Int(Rnd * 8 + 1)
+ Let w1 = drabo(dc2, dc1): Let b1 = drabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop Until w1 Mod 2 <> 0 And b1 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w1 = b1
+
+ Let w1 = drabo(dc2, dc1): Let b1 = drabo(dc5, dc4)
+ Let fw1x = dc1: Let fw1y = dc2: Let fb1x = dc4: Let fb1y = dc5
+ Let fw1 = dc3: Let fb1 = dc6
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ If dc1 = 10 Then Call letterJ
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ If dc4 = 10 Then Call letterJ
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 80: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = (dc4 * 40) + 80: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call draughtsfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 2nd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let dc3 = Int(Rnd * 2 + 1)
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let dc6 = Int(Rnd * 2 + 1)
+ Let w2 = drabo(dc2, dc1): Let b2 = drabo(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Do
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w2 = drabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop Until w2 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 2
+ Do
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w2 = drabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop Until w2 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Do
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b2 = drabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop Until b2 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ Case Is = 2
+ Do
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b2 = drabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop Until b2 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w2 = w1 Or w2 = b1 Or w2 = b2 Or b2 = w1 Or b2 = b1
+ End Select
+
+ Let w2 = drabo(dc2, dc1): Let b2 = drabo(dc5, dc4)
+ Let fw2x = dc1: Let fw2y = dc2: Let fb2x = dc4: Let fb2y = dc5
+ Let fw2 = dc3: Let fb2 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ If dc1 = 10 Then Call letterJ
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ If dc4 = 10 Then Call letterJ
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 80: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = (dc4 * 40) + 80: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call draughtsfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 3rd roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let dc3 = Int(Rnd * 2 + 1)
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let dc6 = Int(Rnd * 2 + 1)
+ Let w3 = drabo(dc2, dc1): Let b3 = drabo(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Do
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w3 = drabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop Until w3 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 2
+ Do
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w3 = drabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop Until w3 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Do
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b3 = drabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop Until b3 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ Case Is = 2
+ Do
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b3 = drabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop Until b3 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w3 = w1 Or w3 = w2 Or w3 = b1 Or w3 = b2 Or w3 = b3 Or b3 = w1 Or b3 = w2 Or b3 = b1 Or b3 = b2
+ End Select
+
+ Let w3 = drabo(dc2, dc1): Let b3 = drabo(dc5, dc4)
+ Let fw3x = dc1: Let fw3y = dc2: Let fb3x = dc4: Let fb3y = dc5
+ Let fw3 = dc3: Let fb3 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ If dc1 = 10 Then Call letterJ
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ If dc4 = 10 Then Call letterJ
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 80: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = (dc4 * 40) + 80: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Do
+ Case Is = Chr$(13)
+ Call draughtsfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+ Call dices
+
+ Rem 4th roll
+ Let count = 0: Let index = 0
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let dc3 = Int(Rnd * 2 + 1)
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let dc6 = Int(Rnd * 2 + 1)
+ Let w4 = drabo(dc2, dc1): Let b4 = drabo(dc5, dc4)
+
+ Select Case dc3
+ Case Is = 1
+ Do
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w4 = drabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop Until w4 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 2
+ Do
+ Do
+ Let count = count + 1
+ Let dc1 = Int(Rnd * 10 + 1)
+ Let dc2 = Int(Rnd * 10 + 1)
+ Let w4 = drabo(dc2, dc1)
+ If count > 8000 Then Exit Do
+ Loop Until w4 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ End Select
+ Select Case dc6
+ Case Is = 1
+ Do
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b4 = drabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop Until b4 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ Case Is = 2
+ Do
+ Do
+ Let count = count + 1
+ Let dc4 = Int(Rnd * 10 + 1)
+ Let dc5 = Int(Rnd * 10 + 1)
+ Let b4 = drabo(dc5, dc4)
+ If count > 8000 Then Exit Do
+ Loop Until b4 Mod 2 <> 0
+ Let count = count + 1
+ If count > 8000 Then Exit Do
+ Loop While w4 = w1 Or w4 = w2 Or w4 = w3 Or w4 = b1 Or w4 = b2 Or w4 = b3 Or w4 = b4 Or b4 = w1 Or b4 = w2 Or b4 = w3 Or b4 = b1 Or b4 = b2 Or b4 = b3
+ End Select
+
+ Let w4 = drabo(dc2, dc1): Let b4 = drabo(dc5, dc4)
+ Let fw4x = dc1: Let fw4y = dc2: Let fb4x = dc4: Let fb4y = dc5
+ Let fw4 = dc3: Let fb4 = dc6
+
+ Let x = 20: Let y = 160: Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = 580: Let y = 160: Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+ Let x = 20: Let y = 220
+ If dc1 = 1 Then Call letterA
+ If dc1 = 2 Then Call letterB
+ If dc1 = 3 Then Call letterC
+ If dc1 = 4 Then Call letterD
+ If dc1 = 5 Then Call letterE
+ If dc1 = 6 Then Call letterF
+ If dc1 = 7 Then Call letterG
+ If dc1 = 8 Then Call letterH
+ If dc1 = 9 Then Call letterI
+ If dc1 = 10 Then Call letterJ
+ Let x = 20: Let y = 280
+ If dc2 = 1 Then Call letter1
+ If dc2 = 2 Then Call letter2
+ If dc2 = 3 Then Call letter3
+ If dc2 = 4 Then Call letter4
+ If dc2 = 5 Then Call letter5
+ If dc2 = 6 Then Call letter6
+ If dc2 = 7 Then Call letter7
+ If dc2 = 8 Then Call letter8
+ If dc2 = 9 Then Call letter9
+ If dc2 = 10 Then Call letter0
+ Let x = 580: Let y = 220
+ If dc4 = 1 Then Call letterA
+ If dc4 = 2 Then Call letterB
+ If dc4 = 3 Then Call letterC
+ If dc4 = 4 Then Call letterD
+ If dc4 = 5 Then Call letterE
+ If dc4 = 6 Then Call letterF
+ If dc4 = 7 Then Call letterG
+ If dc4 = 8 Then Call letterH
+ If dc4 = 9 Then Call letterI
+ If dc4 = 10 Then Call letterJ
+ Let x = 580: Let y = 280
+ If dc5 = 1 Then Call letter1
+ If dc5 = 2 Then Call letter2
+ If dc5 = 3 Then Call letter3
+ If dc5 = 4 Then Call letter4
+ If dc5 = 5 Then Call letter5
+ If dc5 = 6 Then Call letter6
+ If dc5 = 7 Then Call letter7
+ If dc5 = 8 Then Call letter8
+ If dc5 = 9 Then Call letter9
+ If dc5 = 10 Then Call letter0
+ Let x = (dc1 * 40) + 80: Let y = Abs((dc2 * 40) - 480) - 40
+ Let cf = 15
+ If dc3 = 1 Then Call dame
+ If dc3 = 2 Then Call checker
+ Let x = (dc4 * 40) + 80: Let y = Abs((dc5 * 40) - 480) - 40
+ Let cf = 0
+ If dc6 = 1 Then Call dame
+ If dc6 = 2 Then Call checker
+
+ Do
+ Select Case InKey$
+ Case Is = Chr$(32)
+ Exit Case
+ Case Is = Chr$(13)
+ Call draughtsfen
+ Case Is = Chr$(27)
+ End
+ End Select
+ Loop
+
+End Sub
+
+Sub chessfen
+
+ Rem Forsyth-Edwards notation
+
+ If fw1 = 1 Then Let fig1w$ = "K"
+ If fw1 = 2 Then Let fig1w$ = "Q"
+ If fw1 = 3 Then Let fig1w$ = "B"
+ If fw1 = 4 Then Let fig1w$ = "N"
+ If fw1 = 5 Then Let fig1w$ = "R"
+ If fw1 = 6 Then Let fig1w$ = "P"
+
+ If fb1 = 1 Then Let fig1b$ = "k"
+ If fb1 = 2 Then Let fig1b$ = "q"
+ If fb1 = 3 Then Let fig1b$ = "b"
+ If fb1 = 4 Then Let fig1b$ = "n"
+ If fb1 = 5 Then Let fig1b$ = "r"
+ If fb1 = 6 Then Let fig1b$ = "p"
+
+ If fw2 = 1 Then Let fig2w$ = "K"
+ If fw2 = 2 Then Let fig2w$ = "Q"
+ If fw2 = 3 Then Let fig2w$ = "B"
+ If fw2 = 4 Then Let fig2w$ = "N"
+ If fw2 = 5 Then Let fig2w$ = "R"
+ If fw2 = 6 Then Let fig2w$ = "P"
+
+ If fb2 = 1 Then Let fig2b$ = "k"
+ If fb2 = 2 Then Let fig2b$ = "q"
+ If fb2 = 3 Then Let fig2b$ = "b"
+ If fb2 = 4 Then Let fig2b$ = "n"
+ If fb2 = 5 Then Let fig2b$ = "r"
+ If fb2 = 6 Then Let fig2b$ = "p"
+
+ If fw3 = 1 Then Let fig3w$ = "K"
+ If fw3 = 2 Then Let fig3w$ = "Q"
+ If fw3 = 3 Then Let fig3w$ = "B"
+ If fw3 = 4 Then Let fig3w$ = "N"
+ If fw3 = 5 Then Let fig3w$ = "R"
+ If fw3 = 6 Then Let fig3w$ = "P"
+
+ If fb3 = 1 Then Let fig3b$ = "k"
+ If fb3 = 2 Then Let fig3b$ = "q"
+ If fb3 = 3 Then Let fig3b$ = "b"
+ If fb3 = 4 Then Let fig3b$ = "n"
+ If fb3 = 5 Then Let fig3b$ = "r"
+ If fb3 = 6 Then Let fig3b$ = "p"
+
+ If fw4 = 1 Then Let fig4w$ = "K"
+ If fw4 = 2 Then Let fig4w$ = "Q"
+ If fw4 = 3 Then Let fig4w$ = "B"
+ If fw4 = 4 Then Let fig4w$ = "N"
+ If fw4 = 5 Then Let fig4w$ = "R"
+ If fw4 = 6 Then Let fig4w$ = "P"
+
+ If fb4 = 1 Then Let fig4b$ = "k"
+ If fb4 = 2 Then Let fig4b$ = "q"
+ If fb4 = 3 Then Let fig4b$ = "b"
+ If fb4 = 4 Then Let fig4b$ = "n"
+ If fb4 = 5 Then Let fig4b$ = "r"
+ If fb4 = 6 Then Let fig4b$ = "p"
+
+ Dim table(8, 8) As String
+ Let table(fw1y, fw1x) = fig1w$
+ Let table(fb1y, fb1x) = fig1b$
+ Let table(fw2y, fw2x) = fig2w$
+ Let table(fb2y, fb2x) = fig2b$
+ Let table(fw3y, fw3x) = fig3w$
+ Let table(fb3y, fb3x) = fig3b$
+ Let table(fw4y, fw4x) = fig4w$
+ Let table(fb4y, fb4x) = fig4b$
+ For row = 1 To 8: For col = 1 To 8
+ If table(row, col) = "" Then Let table(row, col) = "+"
+ Next col: Next row
+
+ Let mas1$ = table(1, 1) + table(1, 2) + table(1, 3) + table(1, 4) + table(1, 5) + table(1, 6) + table(1, 7) + table(1, 8)
+ Let lin1$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count = 0 Then
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count > 0 Then
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas2$ = table(2, 1) + table(2, 2) + table(2, 3) + table(2, 4) + table(2, 5) + table(2, 6) + table(2, 7) + table(2, 8)
+ Let lin2$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count = 0 Then
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count > 0 Then
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas3$ = table(3, 1) + table(3, 2) + table(3, 3) + table(3, 4) + table(3, 5) + table(3, 6) + table(3, 7) + table(3, 8)
+ Let lin3$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count = 0 Then
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count > 0 Then
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas4$ = table(4, 1) + table(4, 2) + table(4, 3) + table(4, 4) + table(4, 5) + table(4, 6) + table(4, 7) + table(4, 8)
+ Let lin4$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count = 0 Then
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count > 0 Then
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas5$ = table(5, 1) + table(5, 2) + table(5, 3) + table(5, 4) + table(5, 5) + table(5, 6) + table(5, 7) + table(5, 8)
+ Let lin5$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count = 0 Then
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count > 0 Then
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas6$ = table(6, 1) + table(6, 2) + table(6, 3) + table(6, 4) + table(6, 5) + table(6, 6) + table(6, 7) + table(6, 8)
+ Let lin6$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count = 0 Then
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count > 0 Then
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas7$ = table(7, 1) + table(7, 2) + table(7, 3) + table(7, 4) + table(7, 5) + table(7, 6) + table(7, 7) + table(7, 8)
+ Let lin7$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count = 0 Then
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count > 0 Then
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas8$ = table(8, 1) + table(8, 2) + table(8, 3) + table(8, 4) + table(8, 5) + table(8, 6) + table(8, 7) + table(8, 8)
+ Let lin8$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count = 0 Then
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count > 0 Then
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let fen$ = lin8$ + "/" + lin7$ + "/" + lin6$ + "/" + lin5$ + "/" + lin4$ + "/" + lin3$ + "/" + lin2$ + "/" + lin1$
+
+ Color 10
+ Locate 2, 1: Print " Press any key to display the Forsyth-Edwards notation "
+ Do
+ Loop Until InKey$ <> ""
+ Locate 2, 1: Print " "
+ Color 12
+ Locate 2, 28: Print fen$
+
+ Do
+ Loop Until InKey$ <> ""
+
+ _Clipboard$ = fen$
+
+ url$ = "https://syzygy-tables.info/?fen=" + fen$
+ If InStr(_OS$, "[WINDOWS]") Then
+ Shell url$
+ End If
+ If InStr(_OS$, "[LINUX]") Then
+ Shell "xdg-open " + url$
+ End If
+ If InStr(_OS$, "[MACOSX]") Then
+ Shell "open -a safari https://" + url$
+ End If
+
+ System
+End Sub
+
+Sub makrukfen
+
+ Rem Forsyth-Edwards notation
+
+ If fw1 = 1 Then Let fig1w$ = "L"
+ If fw1 = 2 Then Let fig1w$ = "S"
+ If fw1 = 3 Then Let fig1w$ = "N"
+ If fw1 = 4 Then Let fig1w$ = "H"
+ If fw1 = 5 Then Let fig1w$ = "B"
+ If fw1 = 6 Then Let fig1w$ = "C"
+
+ If fb1 = 1 Then Let fig1b$ = "l"
+ If fb1 = 2 Then Let fig1b$ = "s"
+ If fb1 = 3 Then Let fig1b$ = "n"
+ If fb1 = 4 Then Let fig1b$ = "h"
+ If fb1 = 5 Then Let fig1b$ = "b"
+ If fb1 = 6 Then Let fig1b$ = "c"
+
+ If fw2 = 1 Then Let fig2w$ = "L"
+ If fw2 = 2 Then Let fig2w$ = "S"
+ If fw2 = 3 Then Let fig2w$ = "N"
+ If fw2 = 4 Then Let fig2w$ = "H"
+ If fw2 = 5 Then Let fig2w$ = "B"
+ If fw2 = 6 Then Let fig2w$ = "C"
+
+ If fb2 = 1 Then Let fig2b$ = "l"
+ If fb2 = 2 Then Let fig2b$ = "s"
+ If fb2 = 3 Then Let fig2b$ = "n"
+ If fb2 = 4 Then Let fig2b$ = "h"
+ If fb2 = 5 Then Let fig2b$ = "b"
+ If fb2 = 6 Then Let fig2b$ = "c"
+
+ If fw3 = 1 Then Let fig3w$ = "L"
+ If fw3 = 2 Then Let fig3w$ = "S"
+ If fw3 = 3 Then Let fig3w$ = "N"
+ If fw3 = 4 Then Let fig3w$ = "H"
+ If fw3 = 5 Then Let fig3w$ = "B"
+ If fw3 = 6 Then Let fig3w$ = "C"
+
+ If fb3 = 1 Then Let fig3b$ = "l"
+ If fb3 = 2 Then Let fig3b$ = "s"
+ If fb3 = 3 Then Let fig3b$ = "n"
+ If fb3 = 4 Then Let fig3b$ = "h"
+ If fb3 = 5 Then Let fig3b$ = "b"
+ If fb3 = 6 Then Let fig3b$ = "c"
+
+ If fw4 = 1 Then Let fig4w$ = "L"
+ If fw4 = 2 Then Let fig4w$ = "S"
+ If fw4 = 3 Then Let fig4w$ = "N"
+ If fw4 = 4 Then Let fig4w$ = "H"
+ If fw4 = 5 Then Let fig4w$ = "B"
+ If fw4 = 6 Then Let fig4w$ = "C"
+
+ If fb4 = 1 Then Let fig4b$ = "l"
+ If fb4 = 2 Then Let fig4b$ = "s"
+ If fb4 = 3 Then Let fig4b$ = "n"
+ If fb4 = 4 Then Let fig4b$ = "h"
+ If fb4 = 5 Then Let fig4b$ = "b"
+ If fb4 = 6 Then Let fig4b$ = "c"
+
+ Dim table(8, 8) As String
+ Let table(fw1y, fw1x) = fig1w$
+ Let table(fb1y, fb1x) = fig1b$
+ Let table(fw2y, fw2x) = fig2w$
+ Let table(fb2y, fb2x) = fig2b$
+ Let table(fw3y, fw3x) = fig3w$
+ Let table(fb3y, fb3x) = fig3b$
+ Let table(fw4y, fw4x) = fig4w$
+ Let table(fb4y, fb4x) = fig4b$
+ For row = 1 To 8: For col = 1 To 8
+ If table(row, col) = "" Then Let table(row, col) = "+"
+ Next col: Next row
+
+ Let mas1$ = table(1, 1) + table(1, 2) + table(1, 3) + table(1, 4) + table(1, 5) + table(1, 6) + table(1, 7) + table(1, 8)
+ Let lin1$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count = 0 Then
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count > 0 Then
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas2$ = table(2, 1) + table(2, 2) + table(2, 3) + table(2, 4) + table(2, 5) + table(2, 6) + table(2, 7) + table(2, 8)
+ Let lin2$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count = 0 Then
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count > 0 Then
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas3$ = table(3, 1) + table(3, 2) + table(3, 3) + table(3, 4) + table(3, 5) + table(3, 6) + table(3, 7) + table(3, 8)
+ Let lin3$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count = 0 Then
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count > 0 Then
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas4$ = table(4, 1) + table(4, 2) + table(4, 3) + table(4, 4) + table(4, 5) + table(4, 6) + table(4, 7) + table(4, 8)
+ Let lin4$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count = 0 Then
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count > 0 Then
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas5$ = table(5, 1) + table(5, 2) + table(5, 3) + table(5, 4) + table(5, 5) + table(5, 6) + table(5, 7) + table(5, 8)
+ Let lin5$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count = 0 Then
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count > 0 Then
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas6$ = table(6, 1) + table(6, 2) + table(6, 3) + table(6, 4) + table(6, 5) + table(6, 6) + table(6, 7) + table(6, 8)
+ Let lin6$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count = 0 Then
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count > 0 Then
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas7$ = table(7, 1) + table(7, 2) + table(7, 3) + table(7, 4) + table(7, 5) + table(7, 6) + table(7, 7) + table(7, 8)
+ Let lin7$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count = 0 Then
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count > 0 Then
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas8$ = table(8, 1) + table(8, 2) + table(8, 3) + table(8, 4) + table(8, 5) + table(8, 6) + table(8, 7) + table(8, 8)
+ Let lin8$ = ""
+ Let count = 0
+ For index = 1 To 8
+ If index = 8 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ End If
+ If index < 8 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count = 0 Then
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count > 0 Then
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let fen$ = lin8$ + "/" + lin7$ + "/" + lin6$ + "/" + lin5$ + "/" + lin4$ + "/" + lin3$ + "/" + lin2$ + "/" + lin1$
+
+ Color 10
+ Locate 2, 1: Print " Press any key to display the Forsyth-Edwards notation "
+ Do
+ Loop Until InKey$ <> ""
+ Locate 2, 1: Print " "
+ Color 12
+ Locate 2, 28: Print fen$
+
+ Do
+ Loop Until InKey$ <> ""
+
+ _Clipboard$ = fen$
+
+ System
+End Sub
+
+Sub xiangqifen
+
+ Rem Forsyth-Edwards notation
+
+ If fw1 = 1 Then Let fig1w$ = "K"
+ If fw1 = 2 Then Let fig1w$ = "A"
+ If fw1 = 3 Then Let fig1w$ = "E"
+ If fw1 = 4 Then Let fig1w$ = "H"
+ If fw1 = 5 Then Let fig1w$ = "R"
+ If fw1 = 6 Then Let fig1w$ = "C"
+ If fw1 = 7 Then Let fig1w$ = "P"
+
+ If fb1 = 1 Then Let fig1b$ = "k"
+ If fb1 = 2 Then Let fig1b$ = "a"
+ If fb1 = 3 Then Let fig1b$ = "e"
+ If fb1 = 4 Then Let fig1b$ = "h"
+ If fb1 = 5 Then Let fig1b$ = "r"
+ If fb1 = 6 Then Let fig1b$ = "c"
+ If fb1 = 7 Then Let fig1w$ = "p"
+
+ If fw2 = 1 Then Let fig2w$ = "K"
+ If fw2 = 2 Then Let fig2w$ = "A"
+ If fw2 = 3 Then Let fig2w$ = "E"
+ If fw2 = 4 Then Let fig2w$ = "H"
+ If fw2 = 5 Then Let fig2w$ = "R"
+ If fw2 = 6 Then Let fig2w$ = "C"
+ If fw2 = 7 Then Let fig2w$ = "P"
+
+ If fb2 = 1 Then Let fig2b$ = "k"
+ If fb2 = 2 Then Let fig2b$ = "a"
+ If fb2 = 3 Then Let fig2b$ = "e"
+ If fb2 = 4 Then Let fig2b$ = "h"
+ If fb2 = 5 Then Let fig2b$ = "r"
+ If fb2 = 6 Then Let fig2b$ = "c"
+ If fb2 = 7 Then Let fig2w$ = "p"
+
+ If fw3 = 1 Then Let fig3w$ = "K"
+ If fw3 = 2 Then Let fig3w$ = "A"
+ If fw3 = 3 Then Let fig3w$ = "E"
+ If fw3 = 4 Then Let fig3w$ = "H"
+ If fw3 = 5 Then Let fig3w$ = "R"
+ If fw3 = 6 Then Let fig3w$ = "C"
+ If fw3 = 7 Then Let fig3w$ = "P"
+
+ If fb3 = 1 Then Let fig3b$ = "k"
+ If fb3 = 2 Then Let fig3b$ = "a"
+ If fb3 = 3 Then Let fig3b$ = "e"
+ If fb3 = 4 Then Let fig3b$ = "h"
+ If fb3 = 5 Then Let fig3b$ = "r"
+ If fb3 = 6 Then Let fig3b$ = "c"
+ If fb3 = 7 Then Let fig3w$ = "p"
+
+ If fw4 = 1 Then Let fig4w$ = "K"
+ If fw4 = 2 Then Let fig4w$ = "A"
+ If fw4 = 3 Then Let fig4w$ = "E"
+ If fw4 = 4 Then Let fig4w$ = "H"
+ If fw4 = 5 Then Let fig4w$ = "R"
+ If fw4 = 6 Then Let fig4w$ = "C"
+ If fw4 = 7 Then Let fig4w$ = "P"
+
+ If fb4 = 1 Then Let fig4b$ = "k"
+ If fb4 = 2 Then Let fig4b$ = "a"
+ If fb4 = 3 Then Let fig4b$ = "e"
+ If fb4 = 4 Then Let fig4b$ = "h"
+ If fb4 = 5 Then Let fig4b$ = "r"
+ If fb4 = 6 Then Let fig4b$ = "c"
+ If fb4 = 7 Then Let fig4w$ = "p"
+
+ Dim table(10, 9) As String
+ Let table(fw1y, fw1x) = fig1w$
+ Let table(fb1y, fb1x) = fig1b$
+ Let table(fw2y, fw2x) = fig2w$
+ Let table(fb2y, fb2x) = fig2b$
+ Let table(fw3y, fw3x) = fig3w$
+ Let table(fb3y, fb3x) = fig3b$
+ Let table(fw4y, fw4x) = fig4w$
+ Let table(fb4y, fb4x) = fig4b$
+ For row = 1 To 10: For col = 1 To 9
+ If table(row, col) = "" Then Let table(row, col) = "+"
+ Next col: Next row
+
+ Let mas1$ = table(1, 1) + table(1, 2) + table(1, 3) + table(1, 4) + table(1, 5) + table(1, 6) + table(1, 7) + table(1, 8) + table(1, 9)
+ Let lin1$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count = 0 Then
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count > 0 Then
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas2$ = table(2, 1) + table(2, 2) + table(2, 3) + table(2, 4) + table(2, 5) + table(2, 6) + table(2, 7) + table(2, 8) + table(2, 9)
+ Let lin2$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count = 0 Then
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count > 0 Then
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas3$ = table(3, 1) + table(3, 2) + table(3, 3) + table(3, 4) + table(3, 5) + table(3, 6) + table(3, 7) + table(3, 8) + table(3, 9)
+ Let lin3$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count = 0 Then
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count > 0 Then
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas4$ = table(4, 1) + table(4, 2) + table(4, 3) + table(4, 4) + table(4, 5) + table(4, 6) + table(4, 7) + table(4, 8) + table(4, 9)
+ Let lin4$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count = 0 Then
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count > 0 Then
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas5$ = table(5, 1) + table(5, 2) + table(5, 3) + table(5, 4) + table(5, 5) + table(5, 6) + table(5, 7) + table(5, 8) + table(5, 9)
+ Let lin5$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count = 0 Then
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count > 0 Then
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas6$ = table(6, 1) + table(6, 2) + table(6, 3) + table(6, 4) + table(6, 5) + table(6, 6) + table(6, 7) + table(6, 8) + table(6, 9)
+ Let lin6$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count = 0 Then
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count > 0 Then
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas7$ = table(7, 1) + table(7, 2) + table(7, 3) + table(7, 4) + table(7, 5) + table(7, 6) + table(7, 7) + table(7, 8) + table(7, 9)
+ Let lin7$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count = 0 Then
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count > 0 Then
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas8$ = table(8, 1) + table(8, 2) + table(8, 3) + table(8, 4) + table(8, 5) + table(8, 6) + table(8, 7) + table(8, 8) + table(8, 9)
+ Let lin8$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count = 0 Then
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count > 0 Then
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas9$ = table(9, 1) + table(9, 2) + table(9, 3) + table(9, 4) + table(9, 5) + table(9, 6) + table(9, 7) + table(9, 8) + table(9, 9)
+ Let lin9$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas9$, index, 1) = "+" Then
+ count = count + 1
+ lin9$ = lin9$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas9$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas9$, index, 1) <> "+" And count = 0 Then
+ lin9$ = lin9$ + Mid$(mas9$, index, 1)
+ End If
+ If Mid$(mas9$, index, 1) <> "+" And count > 0 Then
+ lin9$ = lin9$ + LTrim$(Str$(count))
+ lin9$ = lin9$ + Mid$(mas9$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas0$ = table(10, 1) + table(10, 2) + table(10, 3) + table(10, 4) + table(10, 5) + table(10, 6) + table(10, 7) + table(10, 8) + table(10, 9)
+ Let lin0$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas0$, index, 1) = "+" Then
+ count = count + 1
+ lin0$ = lin0$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas0$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas0$, index, 1) <> "+" And count = 0 Then
+ lin0$ = lin0$ + Mid$(mas0$, index, 1)
+ End If
+ If Mid$(mas0$, index, 1) <> "+" And count > 0 Then
+ lin0$ = lin0$ + LTrim$(Str$(count))
+ lin0$ = lin0$ + Mid$(mas0$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let fen$ = lin0$ + "/" + lin9$ + "/" + lin8$ + "/" + lin7$ + "/" + lin6$ + "/" + lin5$ + "/" + lin4$ + "/" + lin3$ + "/" + lin2$ + "/" + lin1$
+
+ Color 10
+ Locate 2, 1: Print " Press any key to display the Forsyth-Edwards notation "
+ Do
+ Loop Until InKey$ <> ""
+ Locate 2, 1: Print " "
+ Color 12
+ Locate 2, 24: Print fen$
+
+ Do
+ Loop Until InKey$ <> ""
+
+ _Clipboard$ = fen$
+
+ System
+End Sub
+
+Sub shogifen
+
+ Rem Forsyth-Edwards notation
+
+ If fw1 = 1 Then Let fig1w$ = "K"
+ If fw1 = 2 Then Let fig1w$ = "G"
+ If fw1 = 3 Then Let fig1w$ = "S"
+ If fw1 = 4 Then Let fig1w$ = "B"
+ If fw1 = 5 Then Let fig1w$ = "N"
+ If fw1 = 6 Then Let fig1w$ = "R"
+ If fw1 = 7 Then Let fig1w$ = "L"
+ If fw1 = 8 Then Let fig1w$ = "P"
+ If fw1 = 9 Then Let fig1w$ = "H"
+ If fw1 = 10 Then Let fig1w$ = "D"
+ If fw1 = 11 Then Let fig1w$ = "T"
+
+ If fb1 = 1 Then Let fig1b$ = "k"
+ If fb1 = 2 Then Let fig1b$ = "g"
+ If fb1 = 3 Then Let fig1b$ = "a"
+ If fb1 = 4 Then Let fig1b$ = "b"
+ If fb1 = 5 Then Let fig1b$ = "n"
+ If fb1 = 6 Then Let fig1b$ = "r"
+ If fb1 = 7 Then Let fig1b$ = "l"
+ If fb1 = 8 Then Let fig1b$ = "p"
+ If fb1 = 9 Then Let fig1b$ = "h"
+ If fb1 = 10 Then Let fig1b$ = "d"
+ If fb1 = 11 Then Let fig1b$ = "t"
+
+ If fw2 = 1 Then Let fig2w$ = "K"
+ If fw2 = 2 Then Let fig2w$ = "G"
+ If fw2 = 3 Then Let fig2w$ = "S"
+ If fw2 = 4 Then Let fig2w$ = "B"
+ If fw2 = 5 Then Let fig2w$ = "N"
+ If fw2 = 6 Then Let fig2w$ = "R"
+ If fw2 = 7 Then Let fig2w$ = "L"
+ If fw2 = 8 Then Let fig2w$ = "P"
+ If fw2 = 9 Then Let fig2w$ = "H"
+ If fw2 = 20 Then Let fig2w$ = "D"
+ If fw2 = 22 Then Let fig2w$ = "T"
+
+ If fb2 = 1 Then Let fig2b$ = "k"
+ If fb2 = 2 Then Let fig2b$ = "g"
+ If fb2 = 3 Then Let fig2b$ = "a"
+ If fb2 = 4 Then Let fig2b$ = "b"
+ If fb2 = 5 Then Let fig2b$ = "n"
+ If fb2 = 6 Then Let fig2b$ = "r"
+ If fb2 = 7 Then Let fig2b$ = "l"
+ If fb2 = 8 Then Let fig2b$ = "p"
+ If fb2 = 9 Then Let fig2b$ = "h"
+ If fb2 = 20 Then Let fig2b$ = "d"
+ If fb2 = 22 Then Let fig2b$ = "t"
+
+ If fw3 = 1 Then Let fig3w$ = "K"
+ If fw3 = 2 Then Let fig3w$ = "G"
+ If fw3 = 3 Then Let fig3w$ = "S"
+ If fw3 = 4 Then Let fig3w$ = "B"
+ If fw3 = 5 Then Let fig3w$ = "N"
+ If fw3 = 6 Then Let fig3w$ = "R"
+ If fw3 = 7 Then Let fig3w$ = "L"
+ If fw3 = 8 Then Let fig3w$ = "P"
+ If fw3 = 9 Then Let fig3w$ = "H"
+ If fw3 = 30 Then Let fig3w$ = "D"
+ If fw3 = 33 Then Let fig3w$ = "T"
+
+ If fb3 = 1 Then Let fig3b$ = "k"
+ If fb3 = 2 Then Let fig3b$ = "g"
+ If fb3 = 3 Then Let fig3b$ = "a"
+ If fb3 = 4 Then Let fig3b$ = "b"
+ If fb3 = 5 Then Let fig3b$ = "n"
+ If fb3 = 6 Then Let fig3b$ = "r"
+ If fb3 = 7 Then Let fig3b$ = "l"
+ If fb3 = 8 Then Let fig3b$ = "p"
+ If fb3 = 9 Then Let fig3b$ = "h"
+ If fb3 = 30 Then Let fig3b$ = "d"
+ If fb3 = 33 Then Let fig3b$ = "t"
+
+ If fw4 = 1 Then Let fig4w$ = "K"
+ If fw4 = 2 Then Let fig4w$ = "G"
+ If fw4 = 3 Then Let fig4w$ = "S"
+ If fw4 = 4 Then Let fig4w$ = "B"
+ If fw4 = 5 Then Let fig4w$ = "N"
+ If fw4 = 6 Then Let fig4w$ = "R"
+ If fw4 = 7 Then Let fig4w$ = "L"
+ If fw4 = 8 Then Let fig4w$ = "P"
+ If fw4 = 9 Then Let fig4w$ = "H"
+ If fw4 = 40 Then Let fig4w$ = "D"
+ If fw4 = 44 Then Let fig4w$ = "T"
+
+ If fb4 = 1 Then Let fig4b$ = "k"
+ If fb4 = 2 Then Let fig4b$ = "g"
+ If fb4 = 3 Then Let fig4b$ = "a"
+ If fb4 = 4 Then Let fig4b$ = "b"
+ If fb4 = 5 Then Let fig4b$ = "n"
+ If fb4 = 6 Then Let fig4b$ = "r"
+ If fb4 = 7 Then Let fig4b$ = "l"
+ If fb4 = 8 Then Let fig4b$ = "p"
+ If fb4 = 9 Then Let fig4b$ = "h"
+ If fb4 = 40 Then Let fig4b$ = "d"
+ If fb4 = 44 Then Let fig4b$ = "t"
+
+ Dim table(9, 9) As String
+ Let table(fw1y, fw1x) = fig1w$
+ Let table(fb1y, fb1x) = fig1b$
+ Let table(fw2y, fw2x) = fig2w$
+ Let table(fb2y, fb2x) = fig2b$
+ Let table(fw3y, fw3x) = fig3w$
+ Let table(fb3y, fb3x) = fig3b$
+ Let table(fw4y, fw4x) = fig4w$
+ Let table(fb4y, fb4x) = fig4b$
+ For row = 1 To 9: For col = 1 To 9
+ If table(row, col) = "" Then Let table(row, col) = "+"
+ Next col: Next row
+
+ Let mas1$ = table(1, 1) + table(1, 2) + table(1, 3) + table(1, 4) + table(1, 5) + table(1, 6) + table(1, 7) + table(1, 8) + table(1, 9)
+ Let lin1$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count = 0 Then
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count > 0 Then
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas2$ = table(2, 1) + table(2, 2) + table(2, 3) + table(2, 4) + table(2, 5) + table(2, 6) + table(2, 7) + table(2, 8) + table(2, 9)
+ Let lin2$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count = 0 Then
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count > 0 Then
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas3$ = table(3, 1) + table(3, 2) + table(3, 3) + table(3, 4) + table(3, 5) + table(3, 6) + table(3, 7) + table(3, 8) + table(3, 9)
+ Let lin3$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count = 0 Then
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count > 0 Then
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas4$ = table(4, 1) + table(4, 2) + table(4, 3) + table(4, 4) + table(4, 5) + table(4, 6) + table(4, 7) + table(4, 8) + table(4, 9)
+ Let lin4$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count = 0 Then
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count > 0 Then
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas5$ = table(5, 1) + table(5, 2) + table(5, 3) + table(5, 4) + table(5, 5) + table(5, 6) + table(5, 7) + table(5, 8) + table(5, 9)
+ Let lin5$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count = 0 Then
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count > 0 Then
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas6$ = table(6, 1) + table(6, 2) + table(6, 3) + table(6, 4) + table(6, 5) + table(6, 6) + table(6, 7) + table(6, 8) + table(6, 9)
+ Let lin6$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count = 0 Then
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count > 0 Then
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas7$ = table(7, 1) + table(7, 2) + table(7, 3) + table(7, 4) + table(7, 5) + table(7, 6) + table(7, 7) + table(7, 8) + table(7, 9)
+ Let lin7$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count = 0 Then
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count > 0 Then
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas8$ = table(8, 1) + table(8, 2) + table(8, 3) + table(8, 4) + table(8, 5) + table(8, 6) + table(8, 7) + table(8, 8) + table(8, 9)
+ Let lin8$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count = 0 Then
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count > 0 Then
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas9$ = table(9, 1) + table(9, 2) + table(9, 3) + table(9, 4) + table(9, 5) + table(9, 6) + table(9, 7) + table(9, 8) + table(9, 9)
+ Let lin9$ = ""
+ Let count = 0
+ For index = 1 To 9
+ If index = 9 And Mid$(mas9$, index, 1) = "+" Then
+ count = count + 1
+ lin9$ = lin9$ + LTrim$(Str$(count))
+ End If
+ If index < 9 And Mid$(mas9$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas9$, index, 1) <> "+" And count = 0 Then
+ lin9$ = lin9$ + Mid$(mas9$, index, 1)
+ End If
+ If Mid$(mas9$, index, 1) <> "+" And count > 0 Then
+ lin9$ = lin9$ + LTrim$(Str$(count))
+ lin9$ = lin9$ + Mid$(mas9$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let fen$ = lin9$ + "/" + lin8$ + "/" + lin7$ + "/" + lin6$ + "/" + lin5$ + "/" + lin4$ + "/" + lin3$ + "/" + lin2$ + "/" + lin1$
+
+ Color 10
+ Locate 2, 1: Print " Press any key to display the Forsyth-Edwards notation "
+ Do
+ Loop Until InKey$ <> ""
+ Locate 2, 1: Print " "
+ Color 12
+ Locate 2, 25: Print fen$
+
+ Do
+ Loop Until InKey$ <> ""
+
+ _Clipboard$ = fen$
+
+ System
+End Sub
+
+Sub draughtsfen
+
+ Rem Forsyth-Edwards notation
+
+ If fw1 = 1 Then Let fig1w$ = "D"
+ If fw1 = 2 Then Let fig1w$ = "C"
+
+ If fb1 = 1 Then Let fig1b$ = "d"
+ If fb1 = 2 Then Let fig1b$ = "c"
+
+ If fw2 = 1 Then Let fig2w$ = "D"
+ If fw2 = 2 Then Let fig2w$ = "C"
+
+ If fb2 = 1 Then Let fig2b$ = "d"
+ If fb2 = 2 Then Let fig2b$ = "c"
+
+ If fw3 = 1 Then Let fig3w$ = "D"
+ If fw3 = 2 Then Let fig3w$ = "C"
+
+ If fb3 = 1 Then Let fig3b$ = "d"
+ If fb3 = 2 Then Let fig3b$ = "c"
+
+ If fw4 = 1 Then Let fig4w$ = "D"
+ If fw4 = 2 Then Let fig4w$ = "C"
+
+ If fb4 = 1 Then Let fig4b$ = "d"
+ If fb4 = 2 Then Let fig4b$ = "c"
+
+ Dim table(10, 10) As String
+ Let table(fw1y, fw1x) = fig1w$
+ Let table(fb1y, fb1x) = fig1b$
+ Let table(fw2y, fw2x) = fig2w$
+ Let table(fb2y, fb2x) = fig2b$
+ Let table(fw3y, fw3x) = fig3w$
+ Let table(fb3y, fb3x) = fig3b$
+ Let table(fw4y, fw4x) = fig4w$
+ Let table(fb4y, fb4x) = fig4b$
+ For row = 1 To 10: For col = 1 To 10
+ If table(row, col) = "" Then Let table(row, col) = "+"
+ Next col: Next row
+
+ Let mas1$ = table(1, 1) + table(1, 2) + table(1, 3) + table(1, 4) + table(1, 5) + table(1, 6) + table(1, 7) + table(1, 8) + table(1, 9) + table(1, 10)
+ Let lin1$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas1$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count = 0 Then
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ End If
+ If Mid$(mas1$, index, 1) <> "+" And count > 0 Then
+ lin1$ = lin1$ + LTrim$(Str$(count))
+ lin1$ = lin1$ + Mid$(mas1$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas2$ = table(2, 1) + table(2, 2) + table(2, 3) + table(2, 4) + table(2, 5) + table(2, 6) + table(2, 7) + table(2, 8) + table(2, 9) + table(2, 10)
+ Let lin2$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas2$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count = 0 Then
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ End If
+ If Mid$(mas2$, index, 1) <> "+" And count > 0 Then
+ lin2$ = lin2$ + LTrim$(Str$(count))
+ lin2$ = lin2$ + Mid$(mas2$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas3$ = table(3, 1) + table(3, 2) + table(3, 3) + table(3, 4) + table(3, 5) + table(3, 6) + table(3, 7) + table(3, 8) + table(3, 9) + table(3, 10)
+ Let lin3$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas3$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count = 0 Then
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ End If
+ If Mid$(mas3$, index, 1) <> "+" And count > 0 Then
+ lin3$ = lin3$ + LTrim$(Str$(count))
+ lin3$ = lin3$ + Mid$(mas3$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas4$ = table(4, 1) + table(4, 2) + table(4, 3) + table(4, 4) + table(4, 5) + table(4, 6) + table(4, 7) + table(4, 8) + table(4, 9) + table(4, 10)
+ Let lin4$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas4$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count = 0 Then
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ End If
+ If Mid$(mas4$, index, 1) <> "+" And count > 0 Then
+ lin4$ = lin4$ + LTrim$(Str$(count))
+ lin4$ = lin4$ + Mid$(mas4$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas5$ = table(5, 1) + table(5, 2) + table(5, 3) + table(5, 4) + table(5, 5) + table(5, 6) + table(5, 7) + table(5, 8) + table(5, 9) + table(5, 10)
+ Let lin5$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas5$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count = 0 Then
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ End If
+ If Mid$(mas5$, index, 1) <> "+" And count > 0 Then
+ lin5$ = lin5$ + LTrim$(Str$(count))
+ lin5$ = lin5$ + Mid$(mas5$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas6$ = table(6, 1) + table(6, 2) + table(6, 3) + table(6, 4) + table(6, 5) + table(6, 6) + table(6, 7) + table(6, 8) + table(6, 9) + table(6, 10)
+ Let lin6$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas6$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count = 0 Then
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ End If
+ If Mid$(mas6$, index, 1) <> "+" And count > 0 Then
+ lin6$ = lin6$ + LTrim$(Str$(count))
+ lin6$ = lin6$ + Mid$(mas6$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas7$ = table(7, 1) + table(7, 2) + table(7, 3) + table(7, 4) + table(7, 5) + table(7, 6) + table(7, 7) + table(7, 8) + table(7, 9) + table(7, 10)
+ Let lin7$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas7$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count = 0 Then
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ End If
+ If Mid$(mas7$, index, 1) <> "+" And count > 0 Then
+ lin7$ = lin7$ + LTrim$(Str$(count))
+ lin7$ = lin7$ + Mid$(mas7$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas8$ = table(8, 1) + table(8, 2) + table(8, 3) + table(8, 4) + table(8, 5) + table(8, 6) + table(8, 7) + table(8, 8) + table(8, 9) + table(8, 10)
+ Let lin8$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas8$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count = 0 Then
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ End If
+ If Mid$(mas8$, index, 1) <> "+" And count > 0 Then
+ lin8$ = lin8$ + LTrim$(Str$(count))
+ lin8$ = lin8$ + Mid$(mas8$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas9$ = table(9, 1) + table(9, 2) + table(9, 3) + table(9, 4) + table(9, 5) + table(9, 6) + table(9, 7) + table(9, 8) + table(9, 9) + table(9, 10)
+ Let lin9$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas9$, index, 1) = "+" Then
+ count = count + 1
+ lin9$ = lin9$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas9$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas9$, index, 1) <> "+" And count = 0 Then
+ lin9$ = lin9$ + Mid$(mas9$, index, 1)
+ End If
+ If Mid$(mas9$, index, 1) <> "+" And count > 0 Then
+ lin9$ = lin9$ + LTrim$(Str$(count))
+ lin9$ = lin9$ + Mid$(mas9$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let mas0$ = table(10, 1) + table(10, 2) + table(10, 3) + table(10, 4) + table(10, 5) + table(10, 6) + table(10, 7) + table(10, 8) + table(10, 9) + table(10, 10)
+ Let lin0$ = ""
+ Let count = 0
+ For index = 1 To 10
+ If index = 10 And Mid$(mas0$, index, 1) = "+" Then
+ count = count + 1
+ lin0$ = lin0$ + LTrim$(Str$(count))
+ End If
+ If index < 10 And Mid$(mas0$, index, 1) = "+" Then
+ count = count + 1
+ End If
+ If Mid$(mas0$, index, 1) <> "+" And count = 0 Then
+ lin0$ = lin0$ + Mid$(mas0$, index, 1)
+ End If
+ If Mid$(mas0$, index, 1) <> "+" And count > 0 Then
+ lin0$ = lin0$ + LTrim$(Str$(count))
+ lin0$ = lin0$ + Mid$(mas0$, index, 1)
+ Let count = 0
+ End If
+ Next index
+
+ Let fen$ = lin0$ + "/" + lin9$ + "/" + lin8$ + "/" + lin7$ + "/" + lin6$ + "/" + lin5$ + "/" + lin4$ + "/" + lin3$ + "/" + lin2$ + "/" + lin1$
+
+ Color 10
+ Locate 2, 1: Print " Press any key to display the Forsyth-Edwards notation "
+ Do
+ Loop Until InKey$ <> ""
+ Locate 2, 1: Print " "
+ Color 12
+ Locate 2, 23: Print fen$
+
+ Do
+ Loop Until InKey$ <> ""
+
+ _Clipboard$ = fen$
+
+ System
+End Sub
+
+Sub message
+ Locate 2, 1: Color 9: Print " SPACEBAR - next pair"; " ENTER - display notation "; "ESCAPE - exit "
+ Locate 2, 5: Color 5: Print "SPACEBAR": Locate 2, 32: Color 5: Print "ENTER": Locate 2, 63: Color 5: Print "ESCAPE"
+End Sub
\ No newline at end of file