calcitem / Sanmill

Sanmill is an open-source, UCI-like Mill/Morris/Merrills/Mühle/Malom (and its variants) program with CUI, Flutter GUI and Qt GUI, sharing and freely distributing the code, tools and data needed to deliver this mill game. We do this because we are convinced that open software and open data are key ingredients to make rapid progress.
https://play.google.com/store/apps/details?id=com.calcitem.sanmill
GNU General Public License v3.0
135 stars 20 forks source link

Self play move list change when IsDefenderMoveFirst == true #791

Open calcitem opened 2 months ago

calcitem commented 2 months ago
SkillLevel = 14
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 12
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = false
PiecesAtLeastCount = 3
HasBannedLocations = true
BoardFullAction = 3
MayOnlyRemoveUnplacedPieceInPlacingPhase = false
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen **@O@*@*/@@O@O@@@/*O@OOO@O w m s 8 0 11 0 0 0 0 21 moves (3,2)->(3,1) (1,7)->(1,6) (3,1)->(3,2) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    e5
 4.    g7    g4
 5.    a1    c3
 6.    a7    d7
 7.    d1xe5    a4
 8.    d5    e4
 9.    f4    c4
10.    c5    b4xb2
11.    e3    d6
12.    d2    d3
13.    c3-b2xd5    c5-d5
14.    e4-e5    d5-c5
15.    c4-c3    c5-c4
16.    e5-e4    f6-e5
17.    d6-f6    e5-d5
18.    d7-d6xc4    d5-c5
19.    c3-c4xc5    g7-d7
20.    c4-c3    d7-g7
21.    d6-d7

dooz branch: 18. d7-d6xe3 Changed!

6b41fdda (HEAD -> master) Format X
124837f1 rule: Remove opponentRemovesOwnPiece because not implemented
a0fc08ee rule: Show snack bar when setting MillFormationActionInPlacingPhase
7f819477 rule: Fix cannot move when board is full if allow to remove pieces now 
321f03fd rule: Fix when enable defender move first in moving phase will moving not stop  X
52491e8a rule: Implement removeOpponentsPieceFromHandThenOpponentsTurn (WIP)
f5037cce (origin/weblate/flutter, origin/master, origin/HEAD) Translated using Weblate (English)
d95314d4 Translated using Weblate (English)
1863830e ci: spelling: Update
b232917f Fix build errors and som logic errors XXXXXXXXXXXXXXX
acd2c37b l10n: sr: Translate Serbian text from Latin to Cyrillic script
b00bba29 Translated using Weblate (Bosnian)
7b3e9678 refactor: Rename Banned to Marked
8acb2344 rule: cpp: Implement whenFormingMillsDuringPlacingPhase (WIP)
24d2e152 rule: flutter: Implement whenFormingMillsDuringPlacingPhase's GUI and DB
cc6b8491 l10n: Add translation for whenFormingMillsDuringPlacingPhase
31f552ca rule: dooz: Fix Dooz implement ???
7ba1f44f build: win: Fix build error in arm64
65a8033a Translated using Weblate (English)
50d7e9fd Translated using Weblate (English)
52163b1a Translated using Weblate (Spanish)
7654ddcb snapcraft: Add GStreamer dependencies to snapcraft.yaml
8e1e0d6f (tag: v4.1.0) Sanmill v4.1.0 (3942)  OK

https://github.com/calcitem/Sanmill/commit/4d17692c4ba578df714659361b9c6ed30f3678b1 fixed 9mm's changed in commit 7f819477, but I don't know why it changed!

calcitem commented 2 months ago

new,black xe5 is wrong

SkillLevel = 14
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
BoardFullAction = 0
MillFormationActionInPlacingPhase = 0
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen **@@*O@*/***O@O@*/**O@OO@O b m s 7 0 7 0 0 0 0 18 moves (1,3)->(1,2) (3,3)->(2,3) (1,4)->(1,3) (3,8)->(2,8) (1,2)->(2,2) (2,8)->(1,8) (1,3)->(1,2) (1,8)->(1,1) (2,2)->(2,1) (2,3)->(2,2) (2,1)->(2,8) (1,1)->(1,8) (1,2)->(1,3) (2,4)->(1,4) (2,8)->(2,1) (1,8)->(1,1) (2,1)->(3,1) (1,1)->(2,1) (1,3)->(2,3) (2,2)->(3,2) (3,1)->(3,8) (2,1)->(2,8) (2,5)->(1,5) (1,4)->(2,4) (1,5)->(2,5) (3,2)->(3,1) (2,3)->(1,3) (3,1)->(3,2) (1,3)->(1,2) (3,2)->(3,1) (1,2)->(1,3) (3,1)->(3,2) (1,3)->(1,2) (3,2)->(3,1) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    d1xc3    c3
 6.    a7    a4
 7.    d3    d2
 8.    c4    d5
 9.    d6    e4
10.    g7-g4    f6-f4
11.    f2-e3    c4-c5
12.    d5-e5xd6    g1-f2
13.    g4-g1    c5-d5
14.    e5-f6    d5-e5
15.    b6-b4    f4-g4
16.    c3-c4xe5    d3-c3xf6
17.    e4-e5    g4-f4
18.    e3-e4    a7-b6
19.    e5-f6    b6-c5
20.    e4-e5    c5-d5
21.    f6-d6    f4-f6
22.    d6-b6    d5-c5
23.    e5-e4    f2-e3
24.    b6-d6    c5-d5
25.    d6-d7    d5-d6
26.    e4-f4    f6-g7
27.    d7-a7    d6-b6
28.    d2-d3    e3-f2
29.    d3-d2    g7-d7
30.    f4-e4    d7-g7
31.    e4-e5    g7-d7
32.    e5-e4    d7-g7
33.    e4-e5    g7-d7
34.    e5-e4

old level 2 is also ok

SkillLevel = 14
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill41/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
HasBannedLocations = false
BoardFullAction = 0
MayOnlyRemoveUnplacedPieceInPlacingPhase = false
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen ***@@@**/*@*@**@O/*O*@*O@* w m s 3 0 8 0 0 0 0 25 moves (3,6)->(2,6) (1,6)->(1,7) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    d1xc3    c3
 6.    a7    a4
 7.    d3    d2
 8.    c4    d5
 9.    d6    e4
10.    g7-g4    f6-f4
11.    f2-e3    c4-c5
12.    d5-e5xd6    g1-f2
13.    g4-g1    c5-d5
14.    e5-f6    d5-e5
15.    b6-b4    f4-g4
16.    c3-c4xd3    b2-c3
17.    b4-b2    a7-b6
18.    b2-b4xf2    g4-g7
19.    d2-f2xc3    d1-d2
20.    e3-d3    d2-b2
21.    e4-e3xb2    e5-d5
22.    c4-c3xd5    a1-b2
23.    c3-c4xb6
calcitem commented 2 months ago

new

SkillLevel = 14
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
BoardFullAction = 0
MillFormationActionInPlacingPhase = 0
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen **@@*O@*/***O@O@*/**O@OO@O b m s 7 0 7 0 0 0 0 18 moves (1,3)->(1,2) (3,3)->(2,3) (1,4)->(1,3) (3,8)->(2,8) (1,2)->(2,2) (2,8)->(1,8) (1,3)->(1,2) (1,8)->(1,1) (2,2)->(2,1) (2,3)->(2,2) (2,1)->(2,8) (1,1)->(1,8) (1,2)->(1,3) (2,4)->(1,4) (2,8)->(2,1) (1,8)->(1,1) (2,1)->(3,1) (1,1)->(2,1) (1,3)->(2,3) (2,2)->(3,2) (3,1)->(3,8) (2,1)->(2,8) (2,5)->(1,5) (1,4)->(2,4) (1,5)->(2,5) (3,2)->(3,1) (2,3)->(1,3) (3,1)->(3,2) (1,3)->(1,2) (3,2)->(3,1) (1,2)->(1,3) (3,1)->(3,2) (1,3)->(1,2) (3,2)->(3,1) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    d1xc3    c3
 6.    a7    a4
 7.    d3    d2
 8.    c4    d5
 9.    d6    e4
10.    g7-g4    f6-f4
11.    f2-e3    c4-c5
12.    d5-e5xd6    g1-f2
13.    g4-g1    c5-d5
14.    e5-f6    d5-e5
15.    b6-b4    f4-g4
16.    c3-c4xe5    d3-c3xf6
17.    e4-e5    g4-f4
18.    e3-e4    a7-b6
19.    e5-f6    b6-c5
20.    e4-e5    c5-d5
21.    f6-d6    f4-f6
22.    d6-b6    d5-c5
23.    e5-e4    f2-e3
24.    b6-d6    c5-d5
25.    d6-d7    d5-d6
26.    e4-f4    f6-g7
27.    d7-a7    d6-b6
28.    d2-d3    e3-f2
29.    d3-d2    g7-d7
30.    f4-e4    d7-g7
31.    e4-e5    g7-d7
32.    e5-e4    d7-g7
33.    e4-e5    g7-d7
34.    e5-e4

old

SkillLevel = 14
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill41/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
HasBannedLocations = false
BoardFullAction = 0
MayOnlyRemoveUnplacedPieceInPlacingPhase = false
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen ***@@@**/*@*@**@O/*O*@*O@* w m s 3 0 8 0 0 0 0 25 moves (3,6)->(2,6) (1,6)->(1,7) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    d1xc3    c3
 6.    a7    a4
 7.    d3    d2
 8.    c4    d5
 9.    d6    e4
10.    g7-g4    f6-f4
11.    f2-e3    c4-c5
12.    d5-e5xd6    g1-f2
13.    g4-g1    c5-d5
14.    e5-f6    d5-e5
15.    b6-b4    f4-g4
16.    c3-c4xd3    b2-c3
17.    b4-b2    a7-b6
18.    b2-b4xf2    g4-g7
19.    d2-f2xc3    d1-d2
20.    e3-d3    d2-b2
21.    e4-e3xb2    e5-d5
22.    c4-c3xd5    a1-b2
23.    c3-c4xb6

level 13

old

SkillLevel = 13
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill41/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
HasBannedLocations = false
BoardFullAction = 0
MayOnlyRemoveUnplacedPieceInPlacingPhase = false
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen @OOO****/@*******/@******* w m s 3 0 3 0 0 0 0 33 moves (1,3)->(2,3) (1,1)->(1,8) (2,3)->(1,3) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    d1xb6    b6
 6.    c5    f4
 7.    a7    a4
 8.    e5    d5
 9.    d3    b4
10.    c3-c4xb2    a1-b2
11.    f2-d2    b2-a1xd2
12.    c4-c3    a1-b2
13.    c3-c4xb2    d1-d2
14.    g7-d7    g1-d1xb6
15.    b4-b6    e5-e4
16.    b6-d6xf6    d3-e3
17.    d6-b6    e3-d3xb6
18.    f4-f6    e4-e5
19.    f6-d6xa7    d3-e3
20.    c4-c3    c5-b6
21.    a4-a7    d1-g1
22.    c3-b2    d2-f2xa7
23.    d7-a7    g1-g4
24.    a7-d7xg4    e3-e4
25.    b2-c3    f2-e3xc3
26.    d7-g7    b6-c5
27.    g7-d7xc5    e4-f4
28.    d5-c5    f4-e4xd6

new

SkillLevel = 13
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
BoardFullAction = 0
MillFormationActionInPlacingPhase = 0
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen *O*****O/***O*@@@/******** w m s 3 0 3 0 0 0 0 30 moves (1,8)->(1,1) (2,7)->(1,7) (1,1)->(1,8) (1,7)->(2,7) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    d1xb6    b6
 6.    c5    f4
 7.    a7    a4
 8.    e5    d5
 9.    d3    b4
10.    c3-c4xb2    a1-b2
11.    f2-d2    b2-a1xd2
12.    b4-b2    d3-e3
13.    a4-b4xa7    d1-d2
14.    g7-d7    d2-f2xd5
15.    d7-a7    g1-g4
16.    a7-a4xg4    e3-e4
17.    c4-c3    f2-e3xa4
18.    b4-c4    e5-d5
19.    c4-b4xf6    e4-e5xf4
20.    b4-c4    e3-f2
21.    c4-b4xa1    d5-d6
22.    c3-d3    d6-d5xd3
23.    b4-c4    d5-d6
24.    c4-b4xd6    c5-d5
25.    b4-c4    d5-c5
26.    c4-b4xf2

new black is right

calcitem commented 2 months ago

level 4

old

SkillLevel = 4
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill41/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
HasBannedLocations = false
BoardFullAction = 0
MayOnlyRemoveUnplacedPieceInPlacingPhase = false
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen **@**O**/**@*OO*O/**@O*O** b m s 6 0 3 0 0 0 0 23 moves (2,3)->(2,4) (2,5)->(3,5) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    a7    d1
 6.    a4xd1    d1
 7.    d5    d3
 8.    e3    d2xe3
 9.    e3    e5
10.    c3-c4    a4-b4
11.    d3-c3    b4-a4xc3
12.    c4-c3    e3-d3
13.    g7-d7    a4-b4
14.    f2-f4    b4-a4xc3
15.    d7-g7    d3-c3xb6
16.    g7-g4    a4-b4
17.    e5-e4xf6    a7-b6xd2
18.    e4-e5    b2-d2
19.    e5-e4xd5    b4-b2xd1
20.    f4-f2    d2-d1xe4

new

SkillLevel = 4
MoveTime = 0
Algorithm = 2
UsePerfectDatabase = false
PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill/files/strong
DrawOnHumanExperience = true
ConsiderMobility = true
AiIsLazy = false
Shuffling = false
DeveloperMode = false
PiecesCount = 9
HasDiagonalLines = true
NMoveRule = 100
EndgameNMoveRule = 100
ThreefoldRepetitionRule = true
PiecesAtLeastCount = 3
BoardFullAction = 0
MillFormationActionInPlacingPhase = 0
MayMoveInPlacingPhase = false
IsDefenderMoveFirst = true
StalemateAction = 0
MayFly = false
FlyPieceCount = 3
MayRemoveFromMillsAlways = false
MayRemoveMultiple = false
position fen O****O**/*O*@@O*O/***O@O** b m s 7 0 3 0 0 0 0 25 moves (2,5)->(1,5) (1,1)->(2,1) 
 1.    f6    f2
 2.    b2    b6
 3.    g1    g7
 4.    a1    c3
 5.    a7    d1
 6.    a4xd1    d1
 7.    d5    d3
 8.    e3    d2xe3
 9.    e3    e5
10.    c3-c4    a4-b4
11.    d3-c3    b4-a4xc3
12.    c4-c3    e3-d3
13.    g7-d7    a4-b4
14.    f2-f4    b4-a4xc3
15.    d7-g7    d3-c3xb6
16.    g7-g4    a4-b4
17.    e5-e4xa7    c3-d3
18.    f4-f2    d3-c3xe4
19.    g4-g7    c3-d3
20.    g7-d7    b4-b6
21.    d7-d6    d3-c3xd6
22.    d2-d3    d5-d6xd1
calcitem commented 2 months ago

PiecesCount = 12 SkillLevel = 14 HasDiagonalLines = true MoveTime = 0 NMoveRule = 100 Algorithm = 2 EndgameNMoveRule = 100 UsePerfectDatabase = false ThreefoldRepetitionRule = true PiecesAtLeastCount = 3 BoardFullAction = 2 MillFormationActionInPlacingPhase = 4 MayMoveInPlacingPhase = false IsDefenderMoveFirst = false StalemateAction = 0 MayFly = true PerfectDatabasePath = /storage/emulated/0/Android/data/com.calcitem.sanmill/files/strong FlyPieceCount = 3 DrawOnHumanExperience = true MayRemoveFromMillsAlways = false ConsiderMobility = true MayRemoveMultiple = false AiIsLazy = false Shuffling = false DeveloperMode = false position fen @O/O@OOO@/OOOOOO b m s 11 0 3 0 0 0 0 24 moves (1,4)->(1,6) (2,5)->(3,5)

  1. f6 f2
  2. b2 b6
  3. g1 e5
  4. g7 g4
  5. a1 c3
  6. a7 d1
  7. d7xc3 e4
  8. a4xe4 d5
  9. c5 d3
    1. d2 c4
    2. e3 f4
    3. b4 d6
    4. e3-e4 c4-c3
    5. c5-c4xc3 b6-c5xe4
    6. a7-b6xf4 d3-e3
    7. c4-c3xg4 c5-c4
    8. b6-a7xc4 d6-b6
    9. c3-c4xb6 d5-c5
    10. c4-c3xd1 c5-b6
    11. c3-c4xe5 e3-c3
    12. d2-d1xb6