• R/O
  • SSH
  • HTTPS

shoginextmove: コミット


コミットメタ情報

リビジョン55 (tree)
日時2014-09-13 21:01:45
作者bellyoshi

ログメッセージ

CSAKifuUtilをSigleton化

変更サマリ

差分

--- ShogiNextMove.Test/CSAKifuUtilTest.vb (revision 54)
+++ ShogiNextMove.Test/CSAKifuUtilTest.vb (revision 55)
@@ -30,14 +30,16 @@
3030 End Property
3131
3232 #Region "追加のテスト属性"
33+ Private _CSAKifuUtil As CSAKifuUtil = CSAKifuUtil.GetInstance
3334 '
3435 'テストを作成するときに、次の追加属性を使用することができます:
3536 '
3637 'クラスの最初のテストを実行する前にコードを実行するには、ClassInitialize を使用
37- '<ClassInitialize()> _
38+ '<ClassInitialize()> _
3839 'Public Shared Sub MyClassInitialize(ByVal testContext As TestContext)
40+
3941 'End Sub
40- '
42+ ''
4143 'クラスのすべてのテストを実行した後にコードを実行するには、ClassCleanup を使用
4244 '<ClassCleanup()> _
4345 'Public Shared Sub MyClassCleanup()
@@ -64,11 +66,11 @@
6466 '''</summary>
6567 <TestMethod()> _
6668 Public Sub KomaToCSANameTest()
67- Assert.AreEqual("KY", CSAKifuUtil.KomaToCSAName(Koma.C_KYO))
68- Assert.AreEqual("FU", CSAKifuUtil.KomaToCSAName(Koma.C_FU))
69- Assert.AreEqual("HI", CSAKifuUtil.KomaToCSAName(Koma.C_HISYA))
70- Assert.AreEqual("OU", CSAKifuUtil.KomaToCSAName(Koma.C_GYOKU))
71- Assert.AreEqual("OU", CSAKifuUtil.KomaToCSAName(Koma.C_OU))
69+ Assert.AreEqual("KY", _CSAKifuUtil.KomaToCSAName(Koma.C_KYO))
70+ Assert.AreEqual("FU", _CSAKifuUtil.KomaToCSAName(Koma.C_FU))
71+ Assert.AreEqual("HI", _CSAKifuUtil.KomaToCSAName(Koma.C_HISYA))
72+ Assert.AreEqual("OU", _CSAKifuUtil.KomaToCSAName(Koma.C_GYOKU))
73+ Assert.AreEqual("OU", _CSAKifuUtil.KomaToCSAName(Koma.C_OU))
7274 End Sub
7375
7476 '''<summary>
@@ -76,11 +78,11 @@
7678 '''</summary>
7779 <TestMethod()> _
7880 Public Sub KomaToCSANameWithWhichTest()
79- Assert.AreEqual("+FU", CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_FU))
80- Assert.AreEqual("-FU", CSAKifuUtil.KomaToCSANameWithWhich(Koma.GOTE_FU))
81- Assert.AreEqual("+HI", CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_HISYA))
82- Assert.AreEqual("+OU", CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_OU))
83- Assert.AreEqual("+OU", CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_GYOKU))
81+ Assert.AreEqual("+FU", _CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_FU))
82+ Assert.AreEqual("-FU", _CSAKifuUtil.KomaToCSANameWithWhich(Koma.GOTE_FU))
83+ Assert.AreEqual("+HI", _CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_HISYA))
84+ Assert.AreEqual("+OU", _CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_OU))
85+ Assert.AreEqual("+OU", _CSAKifuUtil.KomaToCSANameWithWhich(Koma.SENTE_GYOKU))
8486 End Sub
8587
8688 '''<summary>
@@ -99,7 +101,7 @@
99101 <TestMethod()> _
100102 Public Sub CSAStringToNullMoveTest()
101103 Dim actual As Te
102- actual = CSAKifuUtil.CSAStringToNullMove("%TORYO", Koma.GOTE)
104+ actual = _CSAKifuUtil.CSAStringToNullMove("%TORYO", Koma.GOTE)
103105 Assert.AreEqual(True, actual.IsNullMove)
104106 Assert.AreEqual(NullMoveType.TORYO, actual.NullMoveType)
105107 End Sub
@@ -109,7 +111,7 @@
109111 '''</summary>
110112 <TestMethod()> _
111113 Public Sub CSAParseThinkTimeTest()
112- Assert.AreEqual(6, CSAKifuUtil.CSAParseThinkTime("-3334FU,T6"))
114+ Assert.AreEqual(6, _CSAKifuUtil.CSAParseThinkTime("-3334FU,T6"))
113115 End Sub
114116
115117 '''<summary>
@@ -119,7 +121,7 @@
119121 Public Sub CSAMoveStringToTeTest()
120122 Dim line As String = "-3334FU"
121123 Dim kyokumen As New Kyokumen
122- Dim actual As Te = CSAKifuUtil.CSAMoveStringToTe(line, kyokumen)
124+ Dim actual As Te = _CSAKifuUtil.CSAMoveStringToTe(line, kyokumen)
123125 Assert.AreEqual(4, actual.ToLocation.Row)
124126 Assert.AreEqual(3, actual.ToLocation.Col)
125127 Assert.AreEqual(3, actual.FromLocation.Row)
@@ -134,14 +136,14 @@
134136 '''</summary>
135137 <TestMethod()> _
136138 Public Sub CSAKomaNameWithWhichToValueTest()
137- Assert.AreEqual(Koma.SENTE_FU, CSAKifuUtil.CSAKomaNameWithWhichToValue("+FU"))
138- Assert.AreEqual(Koma.SENTE_GYOKU, CSAKifuUtil.CSAKomaNameWithWhichToValue("+OU"))
139- Assert.AreEqual(Koma.GOTE_FU, CSAKifuUtil.CSAKomaNameWithWhichToValue("-FU"))
140- Assert.AreEqual(Koma.GOTE_RYU, CSAKifuUtil.CSAKomaNameWithWhichToValue("-RY"))
141- Assert.AreEqual(Koma.GOTE_OU, CSAKifuUtil.CSAKomaNameWithWhichToValue("-OU"))
142- Assert.AreEqual(CByte(0), CSAKifuUtil.CSAKomaNameWithWhichToValue(" * "))
143- Assert.AreEqual(Koma.SENTE_HISYA, CSAKifuUtil.CSAKomaNameWithWhichToValue("+HI"))
144- Assert.AreEqual(Koma.GOTE_KAKU, CSAKifuUtil.CSAKomaNameWithWhichToValue("-KA"))
139+ Assert.AreEqual(Koma.SENTE_FU, _CSAKifuUtil.CSAKomaNameWithWhichToValue("+FU"))
140+ Assert.AreEqual(Koma.SENTE_GYOKU, _CSAKifuUtil.CSAKomaNameWithWhichToValue("+OU"))
141+ Assert.AreEqual(Koma.GOTE_FU, _CSAKifuUtil.CSAKomaNameWithWhichToValue("-FU"))
142+ Assert.AreEqual(Koma.GOTE_RYU, _CSAKifuUtil.CSAKomaNameWithWhichToValue("-RY"))
143+ Assert.AreEqual(Koma.GOTE_OU, _CSAKifuUtil.CSAKomaNameWithWhichToValue("-OU"))
144+ Assert.AreEqual(CByte(0), _CSAKifuUtil.CSAKomaNameWithWhichToValue(" * "))
145+ Assert.AreEqual(Koma.SENTE_HISYA, _CSAKifuUtil.CSAKomaNameWithWhichToValue("+HI"))
146+ Assert.AreEqual(Koma.GOTE_KAKU, _CSAKifuUtil.CSAKomaNameWithWhichToValue("-KA"))
145147 End Sub
146148
147149 '''<summary>
@@ -150,8 +152,8 @@
150152 <TestMethod()> _
151153 Public Sub CSAKomaNameToValueTest()
152154
153- Assert.AreEqual(Koma.C_FU, CSAKifuUtil.CSAKomaNameToValue("FU"))
154- Assert.AreEqual(Koma.C_OU, CSAKifuUtil.CSAKomaNameToValue("OU"))
155+ Assert.AreEqual(Koma.C_FU, _CSAKifuUtil.CSAKomaNameToValue("FU"))
156+ Assert.AreEqual(Koma.C_OU, _CSAKifuUtil.CSAKomaNameToValue("OU"))
155157
156158 End Sub
157159 End Class
--- ShogiNextMove/Board/Kifu/KifuUtilBase.vb (nonexistent)
+++ ShogiNextMove/Board/Kifu/KifuUtilBase.vb (revision 55)
@@ -0,0 +1,126 @@
1+Imports ShogiNextMove.Board
2+
3+Namespace Board.Kifu
4+
5+ Public MustInherit Class KifuUtilBase
6+
7+ Protected MustOverride ReadOnly Property nullMoveCSAStrArray As String()
8+
9+ Protected MustOverride ReadOnly Property komaCSANameArray As String()
10+
11+ Protected MustOverride ReadOnly Property komaCSANameWithWhichArray As String()
12+
13+ Public Function KomaToCSAName(ByVal komaValueWithWhich As Byte) As String
14+ komaValueWithWhich = Board.KomaUtil.GyokuToOu(komaValueWithWhich)
15+ Dim komaKind As Byte = Board.KomaUtil.KomaKind(komaValueWithWhich)
16+ Debug.Assert(komaKind < komaCSANameArray.Length)
17+ Return komaCSANameArray(komaKind)
18+ End Function
19+
20+ Public Function CSAKomaNameToValue(ByVal komaName As String) As Byte
21+ For i As Integer = 0 To komaCSANameArray.Length - 1
22+ If komaName = komaCSANameArray(i) Then
23+ Return CByte(i)
24+ End If
25+ Next
26+
27+ Debug.Assert(False)
28+ Return 0
29+ End Function
30+
31+ Public Function KomaToCSANameWithWhich(ByVal komaValue As Byte) As String
32+ Debug.Assert(komaValue < komaCSANameWithWhichArray.Length)
33+ If komaValue = Koma.SENTE_OU Then
34+ komaValue = Koma.SENTE_GYOKU
35+ ElseIf komaValue = Koma.GOTE_GYOKU Then
36+ komaValue = Koma.GOTE_OU
37+ End If
38+ Return komaCSANameWithWhichArray(komaValue)
39+ End Function
40+
41+
42+ Public Function CSAKomaNameWithWhichToValue(ByVal komaName As String) As Byte
43+ For i As Integer = 0 To komaCSANameWithWhichArray.Length - 1
44+ If komaName = komaCSANameWithWhichArray(i) Then
45+ Return CType(i, Byte)
46+ End If
47+ Next
48+ Debug.Assert(False)
49+ Return 0
50+ End Function
51+
52+ Public Function CSAMoveStringToTe(line As String, kyokumen As Board.Kyokumen) As Board.Te
53+
54+ Debug.Assert(Not line.Length < 7)
55+ If line.Length < 7 Then
56+ Return Nothing
57+ End If
58+
59+ Dim which As Byte
60+ If line.StartsWith("+") Then
61+ which = Board.Koma.SENTE
62+ ElseIf line.StartsWith("-") Then
63+ which = Board.Koma.GOTE
64+ Else
65+ Debug.Assert(False)
66+ End If
67+
68+ Dim fromLocation As KomaLocation = KomaLocation.ParseLocation(line.Substring(1, 2))
69+ Dim toLocation As KomaLocation = KomaLocation.ParseLocation(line.Substring(3, 2))
70+ Dim komaName As String = line.Substring(5, 2)
71+ Dim komaValue As Byte = Me.CSAKomaNameToValue(komaName) + which
72+ Debug.Assert(komaValue <> 0)
73+ If komaValue = 0 Then
74+ Return Nothing
75+ End If
76+
77+ If fromLocation.IsMochigoma Then
78+ Return New Board.Te(fromLocation, toLocation, komaValue, False)
79+ End If
80+
81+ Dim preValue As Koma = kyokumen.GetMasu(fromLocation)
82+ Dim isPromote As Boolean = CommonKifuUtil.IsPromoteKoma(komaValue, preValue.Value)
83+
84+ If komaValue = KomaUtil.KomaKind(Koma.C_OU) Then
85+ komaValue = preValue.Value
86+ End If
87+
88+ Return New Board.Te(fromLocation, toLocation, komaValue, isPromote)
89+
90+ End Function
91+
92+
93+
94+
95+ Public Function CSAParseThinkTime(ByVal line As String) As Integer
96+ Debug.Assert(7 < line.Length)
97+ Dim thinkTime As Integer
98+ Dim array As String() = line.Split({","}, StringSplitOptions.RemoveEmptyEntries)
99+ If array.Length > 1 Then
100+ Dim text As String = array(1)
101+ Dim idx As Integer = text.IndexOf("T")
102+ If idx <> -1 Then
103+ Integer.TryParse(text.Substring(idx + 1), thinkTime)
104+ End If
105+ End If
106+ Return thinkTime
107+ End Function
108+
109+
110+ Public Function CSAStringToNullMove(moveStr As String, which As Byte) As Board.Te
111+ Dim array As String() = Me.nullMoveCSAStrArray
112+ For i As Integer = 1 To array.Length - 1
113+ Dim value As String = array(i)
114+ If moveStr.IndexOf(value) <> -1 Then
115+ Return New Board.Te(CType(i, Board.NullMoveType), which)
116+ End If
117+ Next
118+ Return Nothing
119+ End Function
120+
121+ Public Function NullMoveToCSAString(ByVal nullmovetype As NullMoveType) As String
122+ Return nullMoveCSAStrArray(CInt(nullmovetype))
123+ End Function
124+ End Class
125+
126+End Namespace
\ No newline at end of file
--- ShogiNextMove/Board/Kifu/CSAKifuReader.vb (revision 54)
+++ ShogiNextMove/Board/Kifu/CSAKifuReader.vb (revision 55)
@@ -5,6 +5,8 @@
55 Private _kifu As Kifu
66 Dim _firstKyokumen As Kyokumen
77
8+ Private _CSAKifuUtil As CSAKifuUtil = CSAKifuUtil.GetInstance()
9+
810 Public Function ReadCSAString(kifuStr As String) As Kifu
911 _kifu = New Kifu
1012 _firstKyokumen = New Kyokumen
@@ -65,13 +67,13 @@
6567 Return flag
6668 End If
6769
68- Dim te As Te = CSAKifuUtil.CSAMoveStringToTe(text, _kifu.LastKyokumen)
70+ Dim te As Te = _CSAKifuUtil.CSAMoveStringToTe(text, _kifu.LastKyokumen)
6971 If te Is Nothing Then
7072 Return flag
7173 End If
7274 Dim thinkTime As Integer = 0
7375 If text.Length > 7 Then
74- thinkTime = CSAKifuUtil.CSAParseThinkTime(text)
76+ thinkTime = _CSAKifuUtil.CSAParseThinkTime(text)
7577 End If
7678
7779 _kifu.AddMove(te, thinkTime)
@@ -80,7 +82,7 @@
8082 Return flag
8183 End If
8284
83- Dim te2 As Te = CSAKifuUtil.CSAStringToNullMove(text, _kifu.LastKyokumen.Turn)
85+ Dim te2 As Te = _CSAKifuUtil.CSAStringToNullMove(text, _kifu.LastKyokumen.Turn)
8486 If te2 Is Nothing Then
8587 Return flag
8688 End If
@@ -109,7 +111,7 @@
109111 Exit While
110112 End If
111113 Dim komaStr As String = line.Substring(num + 2, 2)
112- Dim komaValue As Byte = CSAKifuUtil.CSAKomaNameToValue(komaStr)
114+ Dim komaValue As Byte = _CSAKifuUtil.CSAKomaNameToValue(komaStr)
113115 h.KomaOchi(l.Col, l.Row, komaValue)
114116 num += 4
115117 End While
@@ -142,7 +144,7 @@
142144 End If
143145 ParseMochigomaAll(which)
144146 Else
145- Dim b As Byte = CSAKifuUtil.CSAKomaNameToValue(komaName)
147+ Dim b As Byte = _CSAKifuUtil.CSAKomaNameToValue(komaName)
146148 Debug.Assert(b <> 0)
147149 If b = 0 Then
148150 Exit Sub
@@ -188,7 +190,7 @@
188190
189191 For col As Integer = 9 To 1 Step -1
190192 Dim komaName As String = line.Substring(3 * (9 - col) + 2, 3)
191- Dim b As Byte = CSAKifuUtil.CSAKomaNameWithWhichToValue(komaName)
193+ Dim b As Byte = _CSAKifuUtil.CSAKomaNameWithWhichToValue(komaName)
192194 _firstKyokumen.SetMasu(New KomaLocation(col, row), New Koma(b))
193195 Next
194196
--- ShogiNextMove/Board/Kifu/CSAKifuWriter.vb (revision 54)
+++ ShogiNextMove/Board/Kifu/CSAKifuWriter.vb (revision 55)
@@ -6,6 +6,8 @@
66
77 Private _firstKyokumen As Kyokumen
88
9+ Private _CSAKifuUtil As CSAKifuUtil = CSAKifuUtil.GetInstance
10+
911 Public Function MakeKifuCSAString(kifu As Kifu) As String
1012 _kifu = kifu
1113 _firstKyokumen = kifu.KyokumenList(0)
@@ -102,7 +104,7 @@
102104 Dim text As String = "P"
103105 text += dan.ToString()
104106 For i As Integer = 9 To 1 Step -1
105- text += CSAKifuUtil.KomaToCSANameWithWhich(_firstKyokumen.GetMasu(i, dan).Value)
107+ text += _CSAKifuUtil.KomaToCSANameWithWhich(_firstKyokumen.GetMasu(i, dan).Value)
106108 Next
107109 Return text
108110 End Function
@@ -112,7 +114,7 @@
112114 For i As Integer = Koma.C_HISYA To Koma.C_FU Step -1
113115 Dim komaValue = CByte(i)
114116 For j As Integer = 1 To _firstKyokumen.SenteHand(komaValue)
115- textBuilder.AppendFormat("00{0}", CSAKifuUtil.KomaToCSAName(komaValue))
117+ textBuilder.AppendFormat("00{0}", _CSAKifuUtil.KomaToCSAName(komaValue))
116118 Next
117119 Next
118120 Return textBuilder.ToString
@@ -123,7 +125,7 @@
123125 For i As Integer = Koma.C_HISYA To Koma.C_FU Step -1
124126 Dim komaValue = CByte(i)
125127 For j As Integer = 1 To _firstKyokumen.GoteHand(komaValue)
126- textBuilder.AppendFormat("00{0}", CSAKifuUtil.KomaToCSAName(komaValue))
128+ textBuilder.AppendFormat("00{0}", _CSAKifuUtil.KomaToCSAName(komaValue))
127129 Next
128130 Next
129131 Return textBuilder.ToString
@@ -154,7 +156,7 @@
154156 str += MoveToCSAString(te)
155157 result = str + ",T" + thinkTime.ToString()
156158 Else
157- Dim text As String = CSAKifuUtil.NullMoveToCSAString(te.NullMoveType)
159+ Dim text As String = _CSAKifuUtil.NullMoveToCSAString(te.NullMoveType)
158160 If te.NullMoveType = NullMoveType.ILLEGAL_ACTION Then
159161 If te.IsGote Then
160162 text = "%-" + text
@@ -179,7 +181,7 @@
179181 Dim str As String = LocationToCSAString(te.FromLocation)
180182 Dim str2 As String = LocationToCSAString(te.ToLocation)
181183 Dim b As Byte = te.KomaKind
182- Dim str3 As String = CSAKifuUtil.KomaToCSAName(te.KomaKind)
184+ Dim str3 As String = _CSAKifuUtil.KomaToCSAName(te.KomaKind)
183185 Return str + str2 + str3
184186 End Function
185187
--- ShogiNextMove/Board/Kifu/CSAKifuUtil.vb (revision 54)
+++ ShogiNextMove/Board/Kifu/CSAKifuUtil.vb (revision 55)
@@ -4,36 +4,61 @@
44
55
66 Public Class CSAKifuUtil
7+ Inherits KifuUtilBase
78
8- Private Shared nullMoveCSAStrArray As String() = {
9- "",
10- "%CHUDAN",
11- "%TSUMI",
12- "%TORYO",
13- "%SENNICHITE",
14- "%TIME_UP",
15- "%ILLEGAL_MOVE",
16- "%JISHOGI",
17- "ILLEGAL_ACTION"}
189
19- Private Shared komaCSANameArray As String() = {
20- "",
21- "FU",
22- "KY",
23- "KE",
24- "GI",
25- "KI",
26- "KA",
27- "HI",
28- "OU",
29- "",
30- "TO",
31- "NY",
32- "NK",
33- "NG",
34- "UM",
35- "RY"}
36- Private Shared komaCSANameWithWhichArray As String() = {
10+
11+
12+ Private Shared _instance As New CSAKifuUtil
13+ Private Sub New()
14+ End Sub
15+ Public Shared Function GetInstance() As CSAKifuUtil
16+ Return _instance
17+ End Function
18+
19+
20+ Protected Overrides ReadOnly Property nullMoveCSAStrArray As String()
21+ Get
22+ Dim arrray As String() = {
23+ "",
24+ "%CHUDAN",
25+ "%TSUMI",
26+ "%TORYO",
27+ "%SENNICHITE",
28+ "%TIME_UP",
29+ "%ILLEGAL_MOVE",
30+ "%JISHOGI",
31+ "ILLEGAL_ACTION"}
32+ Return arrray
33+ End Get
34+ End Property
35+
36+ Protected Overrides ReadOnly Property komaCSANameArray As String()
37+ Get
38+ Dim array As String() = {
39+ "",
40+ "FU",
41+ "KY",
42+ "KE",
43+ "GI",
44+ "KI",
45+ "KA",
46+ "HI",
47+ "OU",
48+ "",
49+ "TO",
50+ "NY",
51+ "NK",
52+ "NG",
53+ "UM",
54+ "RY"}
55+ Return array
56+ End Get
57+ End Property
58+
59+ Protected Overrides ReadOnly Property komaCSANameWithWhichArray As String()
60+ Get
61+ Dim array As String() = {
3762 " * ",
3863 "+FU",
3964 "+KY",
@@ -66,120 +91,9 @@
6691 "-NG",
6792 "-UM",
6893 "-RY"}
69-
70-
71- Public Shared Function KomaToCSAName(ByVal komaValueWithWhich As Byte) As String
72- komaValueWithWhich = Board.KomaUtil.GyokuToOu(komaValueWithWhich)
73- Dim komaKind As Byte = Board.KomaUtil.KomaKind(komaValueWithWhich)
74- Debug.Assert(komaKind < komaCSANameArray.Length)
75- Return komaCSANameArray(komaKind)
76- End Function
77-
78- Public Shared Function CSAKomaNameToValue(ByVal komaName As String) As Byte
79- For i As Integer = 0 To komaCSANameArray.Length - 1
80- If komaName = komaCSANameArray(i) Then
81- Return CByte(i)
82- End If
83- Next
84-
85- Debug.Assert(False)
86- Return 0
87- End Function
88-
89- Public Shared Function KomaToCSANameWithWhich(ByVal komaValue As Byte) As String
90- Debug.Assert(komaValue < komaCSANameWithWhichArray.Length)
91- If komaValue = Koma.SENTE_OU Then
92- komaValue = Koma.SENTE_GYOKU
93- ElseIf komaValue = Koma.GOTE_GYOKU Then
94- komaValue = Koma.GOTE_OU
95- End If
96- Return komaCSANameWithWhichArray(komaValue)
97- End Function
98-
99-
100- Public Shared Function CSAKomaNameWithWhichToValue(ByVal komaName As String) As Byte
101- For i As Integer = 0 To komaCSANameWithWhichArray.Length - 1
102- If komaName = komaCSANameWithWhichArray(i) Then
103- Return CType(i, Byte)
104- End If
105- Next
106- Debug.Assert(False)
107- Return 0
108- End Function
109-
110- Public Shared Function CSAMoveStringToTe(line As String, kyokumen As Board.Kyokumen) As Board.Te
111-
112- Debug.Assert(Not line.Length < 7)
113- If line.Length < 7 Then
114- Return Nothing
115- End If
116-
117- Dim which As Byte
118- If line.StartsWith("+") Then
119- which = Board.Koma.SENTE
120- ElseIf line.StartsWith("-") Then
121- which = Board.Koma.GOTE
122- Else
123- Debug.Assert(False)
124- End If
125-
126- Dim fromLocation As KomaLocation = KomaLocation.ParseLocation(line.Substring(1, 2))
127- Dim toLocation As KomaLocation = KomaLocation.ParseLocation(line.Substring(3, 2))
128- Dim komaName As String = line.Substring(5, 2)
129- Dim komaValue As Byte = CSAKifuUtil.CSAKomaNameToValue(komaName) + which
130- Debug.Assert(komaValue <> 0)
131- If komaValue = 0 Then
132- Return Nothing
133- End If
134-
135- If fromLocation.IsMochigoma Then
136- Return New Board.Te(fromLocation, toLocation, komaValue, False)
137- End If
138-
139- Dim preValue As Koma = kyokumen.GetMasu(fromLocation)
140- Dim isPromote As Boolean = CommonKifuUtil.IsPromoteKoma(komaValue, preValue.Value)
141-
142- If komaValue = KomaUtil.KomaKind(Koma.C_OU) Then
143- komaValue = preValue.Value
144- End If
145-
146- Return New Board.Te(fromLocation, toLocation, komaValue, isPromote)
147-
148- End Function
149-
150-
151-
152-
153- Public Shared Function CSAParseThinkTime(ByVal line As String) As Integer
154- Debug.Assert(7 < line.Length)
155- Dim thinkTime As Integer
156- Dim array As String() = line.Split({","}, StringSplitOptions.RemoveEmptyEntries)
157- If array.Length > 1 Then
158- Dim text As String = array(1)
159- Dim idx As Integer = text.IndexOf("T")
160- If idx <> -1 Then
161- Integer.TryParse(text.Substring(idx + 1), thinkTime)
162- End If
163- End If
164- Return thinkTime
165- End Function
166-
167-
168- Public Shared Function CSAStringToNullMove(moveStr As String, which As Byte) As Board.Te
169- Dim array As String() = CSAKifuUtil.nullMoveCSAStrArray
170- For i As Integer = 1 To array.Length - 1
171- Dim value As String = array(i)
172- If moveStr.IndexOf(value) <> -1 Then
173- Return New Board.Te(CType(i, Board.NullMoveType), which)
174- End If
175- Next
176- Return Nothing
177- End Function
178-
179- Public Shared Function NullMoveToCSAString(ByVal nullmovetype As NullMoveType) As String
180- Return nullMoveCSAStrArray(CInt(nullmovetype))
181- End Function
182-
94+ Return array
95+ End Get
96+ End Property
18397 End Class
18498
18599 End Namespace
\ No newline at end of file
--- ShogiNextMove/Board/Kifu/KifKifuUtil.vb (nonexistent)
+++ ShogiNextMove/Board/Kifu/KifKifuUtil.vb (revision 55)
@@ -0,0 +1,28 @@
1+Imports ShogiNextMove.Board
2+
3+Namespace Board.Kifu
4+
5+ Public Class KifKifuUtil
6+ Inherits KifuUtilBase
7+
8+ Protected Overrides ReadOnly Property komaCSANameArray As String()
9+ Get
10+
11+ End Get
12+ End Property
13+
14+ Protected Overrides ReadOnly Property komaCSANameWithWhichArray As String()
15+ Get
16+
17+ End Get
18+ End Property
19+
20+ Protected Overrides ReadOnly Property nullMoveCSAStrArray As String()
21+ Get
22+
23+ End Get
24+ End Property
25+ End Class
26+
27+End Namespace
28+
旧リポジトリブラウザで表示