• R/O
  • SSH
  • HTTPS

shoginextmove: コミット


コミットメタ情報

リビジョン59 (tree)
日時2014-09-16 12:50:04
作者bellyoshi

ログメッセージ

駒が動ける場所以外に移動したときキャンセルされるようにした。

変更サマリ

差分

--- ShogiNextMove.Test/KomaMoveDirectionTest.vb (nonexistent)
+++ ShogiNextMove.Test/KomaMoveDirectionTest.vb (revision 59)
@@ -0,0 +1,78 @@
1+Imports Microsoft.VisualStudio.TestTools.UnitTesting
2+
3+Imports ShogiNextMove.Board
4+
5+
6+
7+'''<summary>
8+'''KomaMoveDirectionTest のテスト クラスです。すべての
9+'''KomaMoveDirectionTest 単体テストをここに含めます
10+'''</summary>
11+<TestClass()> _
12+Public Class KomaMoveDirectionTest
13+
14+
15+ Private testContextInstance As TestContext
16+
17+ '''<summary>
18+ '''現在のテストの実行についての情報および機能を
19+ '''提供するテスト コンテキストを取得または設定します。
20+ '''</summary>
21+ Public Property TestContext() As TestContext
22+ Get
23+ Return testContextInstance
24+ End Get
25+ Set(value As TestContext)
26+ testContextInstance = Value
27+ End Set
28+ End Property
29+
30+#Region "追加のテスト属性"
31+ '
32+ 'テストを作成するときに、次の追加属性を使用することができます:
33+ '
34+ 'クラスの最初のテストを実行する前にコードを実行するには、ClassInitialize を使用
35+ '<ClassInitialize()> _
36+ 'Public Shared Sub MyClassInitialize(ByVal testContext As TestContext)
37+ 'End Sub
38+ '
39+ 'クラスのすべてのテストを実行した後にコードを実行するには、ClassCleanup を使用
40+ '<ClassCleanup()> _
41+ 'Public Shared Sub MyClassCleanup()
42+ 'End Sub
43+ '
44+ '各テストを実行する前にコードを実行するには、TestInitialize を使用
45+ '<TestInitialize()> _
46+ 'Public Sub MyTestInitialize()
47+ 'End Sub
48+ '
49+ '各テストを実行した後にコードを実行するには、TestCleanup を使用
50+ '<TestCleanup()> _
51+ 'Public Sub MyTestCleanup()
52+ 'End Sub
53+ '
54+#End Region
55+
56+
57+ ' '''<summary>
58+ ' '''GetToLocations のテスト
59+ ' '''</summary>
60+ '<TestMethod()> _
61+ 'Public Sub GetToLocationsTest()
62+ ' Dim komaDirection1 As New KomaMoveDirection(1, -1)
63+ ' Dim komaDiretion2 As New KomaMoveDirection(1, 1, True)
64+
65+ ' Dim from As New KomaLocation(2, 2)
66+ ' Dim actual() As KomaLocation
67+ ' actual = komaDirection1.GetToLocations(from)
68+ ' Assert.AreEqual(1, actual.Count)
69+ ' Assert.AreEqual(3, actual(0).Col)
70+ ' Assert.AreEqual(1, actual(0).Row)
71+ ' actual = komaDiretion2.GetToLocations(from)
72+ ' Assert.AreEqual(7, actual.Count)
73+ ' Assert.AreEqual(3, actual(0).Col)
74+ ' Assert.AreEqual(3, actual(0).Row)
75+ ' Assert.AreEqual(9, actual(6).Col)
76+ ' Assert.AreEqual(9, actual(6).Row)
77+ 'End Sub
78+End Class
--- ShogiNextMove/Board/KomaMoveValidater.vb (revision 58)
+++ ShogiNextMove/Board/KomaMoveValidater.vb (revision 59)
@@ -10,13 +10,252 @@
1010 Private Sub New()
1111 End Sub
1212
13+ Private direction()() As KomaMoveDirection = {
14+ New KomaMoveDirection() {},
15+ New KomaMoveDirection() {
16+ New KomaMoveDirection(0, -1)},
17+ New KomaMoveDirection() {
18+ New KomaMoveDirection(0, -1, True)},
19+ New KomaMoveDirection() {
20+ New KomaMoveDirection(1, -2),
21+ New KomaMoveDirection(-1, -2)},
22+ New KomaMoveDirection() {
23+ New KomaMoveDirection(1, -1),
24+ New KomaMoveDirection(0, -1),
25+ New KomaMoveDirection(-1, -1),
26+ New KomaMoveDirection(1, 1),
27+ New KomaMoveDirection(-1, 1)},
28+ New KomaMoveDirection() {
29+ New KomaMoveDirection(1, -1),
30+ New KomaMoveDirection(0, -1),
31+ New KomaMoveDirection(-1, -1),
32+ New KomaMoveDirection(1, 0),
33+ New KomaMoveDirection(-1, 0),
34+ New KomaMoveDirection(0, 1)},
35+ New KomaMoveDirection() {
36+ New KomaMoveDirection(1, -1, True),
37+ New KomaMoveDirection(1, 1, True),
38+ New KomaMoveDirection(-1, -1, True),
39+ New KomaMoveDirection(-1, 1, True)},
40+ New KomaMoveDirection() {
41+ New KomaMoveDirection(0, 1, True),
42+ New KomaMoveDirection(0, -1, True),
43+ New KomaMoveDirection(1, 0, True),
44+ New KomaMoveDirection(-1, 0, True)},
45+ New KomaMoveDirection() {
46+ New KomaMoveDirection(1, -1),
47+ New KomaMoveDirection(0, -1),
48+ New KomaMoveDirection(-1, -1),
49+ New KomaMoveDirection(1, 0),
50+ New KomaMoveDirection(-1, 0),
51+ New KomaMoveDirection(1, 1),
52+ New KomaMoveDirection(0, 1),
53+ New KomaMoveDirection(-1, 1)},
54+ New KomaMoveDirection() {
55+ New KomaMoveDirection(1, -1),
56+ New KomaMoveDirection(0, -1),
57+ New KomaMoveDirection(-1, -1),
58+ New KomaMoveDirection(1, 0),
59+ New KomaMoveDirection(-1, 0),
60+ New KomaMoveDirection(1, 1),
61+ New KomaMoveDirection(0, 1),
62+ New KomaMoveDirection(-1, 1)},
63+ New KomaMoveDirection() {
64+ New KomaMoveDirection(1, -1),
65+ New KomaMoveDirection(0, -1),
66+ New KomaMoveDirection(-1, -1),
67+ New KomaMoveDirection(1, 0),
68+ New KomaMoveDirection(-1, 0),
69+ New KomaMoveDirection(0, 1)},
70+ New KomaMoveDirection() {
71+ New KomaMoveDirection(1, -1),
72+ New KomaMoveDirection(0, -1),
73+ New KomaMoveDirection(-1, -1),
74+ New KomaMoveDirection(1, 0),
75+ New KomaMoveDirection(-1, 0),
76+ New KomaMoveDirection(0, 1)},
77+ New KomaMoveDirection() {
78+ New KomaMoveDirection(1, -1),
79+ New KomaMoveDirection(0, -1),
80+ New KomaMoveDirection(-1, -1),
81+ New KomaMoveDirection(1, 0),
82+ New KomaMoveDirection(-1, 0),
83+ New KomaMoveDirection(0, 1)},
84+ New KomaMoveDirection() {
85+ New KomaMoveDirection(1, -1),
86+ New KomaMoveDirection(0, -1),
87+ New KomaMoveDirection(-1, -1),
88+ New KomaMoveDirection(1, 0),
89+ New KomaMoveDirection(-1, 0),
90+ New KomaMoveDirection(0, 1)},
91+ New KomaMoveDirection() {
92+ New KomaMoveDirection(1, -1, True),
93+ New KomaMoveDirection(1, 1, True),
94+ New KomaMoveDirection(-1, -1, True),
95+ New KomaMoveDirection(-1, 1, True),
96+ New KomaMoveDirection(0, -1),
97+ New KomaMoveDirection(1, 0),
98+ New KomaMoveDirection(-1, 0),
99+ New KomaMoveDirection(0, 1)},
100+ New KomaMoveDirection() {
101+ New KomaMoveDirection(0, 1, True),
102+ New KomaMoveDirection(0, -1, True),
103+ New KomaMoveDirection(1, 0, True),
104+ New KomaMoveDirection(-1, 0, True),
105+ New KomaMoveDirection(1, -1),
106+ New KomaMoveDirection(-1, -1),
107+ New KomaMoveDirection(1, 1),
108+ New KomaMoveDirection(-1, 1)},
109+ New KomaMoveDirection() {},
110+ New KomaMoveDirection() {
111+ New KomaMoveDirection(0, 1)},
112+ New KomaMoveDirection() {
113+ New KomaMoveDirection(0, 1, True)},
114+ New KomaMoveDirection() {
115+ New KomaMoveDirection(1, 2),
116+ New KomaMoveDirection(-1, 2)},
117+ New KomaMoveDirection() {
118+ New KomaMoveDirection(1, 1),
119+ New KomaMoveDirection(0, 1),
120+ New KomaMoveDirection(-1, 1),
121+ New KomaMoveDirection(1, -1),
122+ New KomaMoveDirection(-1, -1)},
123+ New KomaMoveDirection() {
124+ New KomaMoveDirection(1, 1),
125+ New KomaMoveDirection(0, 1),
126+ New KomaMoveDirection(-1, 1),
127+ New KomaMoveDirection(1, 0),
128+ New KomaMoveDirection(-1, 0),
129+ New KomaMoveDirection(0, -1)},
130+ New KomaMoveDirection() {
131+ New KomaMoveDirection(1, -1, True),
132+ New KomaMoveDirection(1, 1, True),
133+ New KomaMoveDirection(-1, -1, True),
134+ New KomaMoveDirection(-1, 1, True)},
135+ New KomaMoveDirection() {
136+ New KomaMoveDirection(0, 1, True),
137+ New KomaMoveDirection(0, -1, True),
138+ New KomaMoveDirection(1, 0, True),
139+ New KomaMoveDirection(-1, 0, True)},
140+ New KomaMoveDirection() {
141+ New KomaMoveDirection(1, 1),
142+ New KomaMoveDirection(0, 1),
143+ New KomaMoveDirection(-1, 1),
144+ New KomaMoveDirection(1, 0),
145+ New KomaMoveDirection(-1, 0),
146+ New KomaMoveDirection(1, -1),
147+ New KomaMoveDirection(0, -1),
148+ New KomaMoveDirection(-1, 1)},
149+ New KomaMoveDirection() {
150+ New KomaMoveDirection(1, 1),
151+ New KomaMoveDirection(0, 1),
152+ New KomaMoveDirection(-1, 1),
153+ New KomaMoveDirection(1, 0),
154+ New KomaMoveDirection(-1, 0),
155+ New KomaMoveDirection(1, -1),
156+ New KomaMoveDirection(0, -1),
157+ New KomaMoveDirection(-1, 1)},
158+ New KomaMoveDirection() {
159+ New KomaMoveDirection(1, 1),
160+ New KomaMoveDirection(0, 1),
161+ New KomaMoveDirection(-1, 1),
162+ New KomaMoveDirection(1, 0),
163+ New KomaMoveDirection(-1, 0),
164+ New KomaMoveDirection(0, -1)},
165+ New KomaMoveDirection() {
166+ New KomaMoveDirection(1, 1),
167+ New KomaMoveDirection(0, 1),
168+ New KomaMoveDirection(-1, 1),
169+ New KomaMoveDirection(1, 0),
170+ New KomaMoveDirection(-1, 0),
171+ New KomaMoveDirection(0, -1)},
172+ New KomaMoveDirection() {
173+ New KomaMoveDirection(1, 1),
174+ New KomaMoveDirection(0, 1),
175+ New KomaMoveDirection(-1, 1),
176+ New KomaMoveDirection(1, 0),
177+ New KomaMoveDirection(-1, 0),
178+ New KomaMoveDirection(0, -1)},
179+ New KomaMoveDirection() {
180+ New KomaMoveDirection(1, 1),
181+ New KomaMoveDirection(0, 1),
182+ New KomaMoveDirection(-1, 1),
183+ New KomaMoveDirection(1, 0),
184+ New KomaMoveDirection(-1, 0),
185+ New KomaMoveDirection(0, -1)},
186+ New KomaMoveDirection() {
187+ New KomaMoveDirection(1, -1, True),
188+ New KomaMoveDirection(1, 1, True),
189+ New KomaMoveDirection(-1, -1, True),
190+ New KomaMoveDirection(-1, 1, True),
191+ New KomaMoveDirection(0, -1),
192+ New KomaMoveDirection(1, 0),
193+ New KomaMoveDirection(-1, 0),
194+ New KomaMoveDirection(0, 1)},
195+ New KomaMoveDirection() {
196+ New KomaMoveDirection(0, 1, True),
197+ New KomaMoveDirection(0, -1, True),
198+ New KomaMoveDirection(1, 0, True),
199+ New KomaMoveDirection(-1, 0, True),
200+ New KomaMoveDirection(1, -1),
201+ New KomaMoveDirection(-1, -1),
202+ New KomaMoveDirection(1, 1),
203+ New KomaMoveDirection(-1, 1)}
204+ }
205+
206+
13207 Public Function IsValidate(ByVal kyokumen As Kyokumen, ByVal te As Te) As Boolean
14208 If te.FromLocation.IsMochigoma Then
15209 Return IsValidatePut(kyokumen, te)
210+ Else
211+ Dim locationList As KomaLocation() = GetToLocation(kyokumen, te.FromLocation, te.Piece.Value)
212+ For Each l As KomaLocation In locationList
213+ If l.Col = te.ToLocation.Col AndAlso l.Row = te.ToLocation.Row Then
214+ Return True
215+ End If
216+ Next
16217 End If
17- Return True
218+ Return False
18219 End Function
19220
221+ Private Function IsValidToLocation(ByVal tocol As Integer, torow As Integer) As Boolean
222+ Return 1 <= tocol AndAlso tocol <= 9 AndAlso _
223+ 1 <= torow AndAlso torow <= 9
224+ End Function
225+
226+ Public Function GetToLocation(ByVal kyokumen As Kyokumen, fromLocation As KomaLocation, komaValue As Byte) As KomaLocation()
227+ Dim drectionList As KomaMoveDirection() = direction(komaValue)
228+ Dim komaLocations As New List(Of KomaLocation)
229+ For Each d As KomaMoveDirection In drectionList
230+ komaLocations.AddRange(
231+ GetToLocationsLine(kyokumen, fromLocation, d))
232+ Next
233+ Return komaLocations.ToArray
234+ End Function
235+
236+ Public Function GetToLocationsLine(ByVal kyokumen As Kyokumen, ByVal fromLocation As KomaLocation, d As KomaMoveDirection) As KomaLocation()
237+
238+ Dim komaLocations As New List(Of KomaLocation)
239+ Dim tocol As Integer = fromLocation.Col
240+ Dim torow As Integer = fromLocation.Row
241+ Dim i As Integer = 1
242+ Do While i = 1 OrElse (i < 9 AndAlso d.Line)
243+ tocol += d.Col
244+ torow += d.Row
245+ If IsValidToLocation(tocol, torow) Then
246+ komaLocations.Add(New KomaLocation(tocol, torow))
247+ Else
248+ Exit Do
249+ End If
250+ If Not kyokumen.GetMasu(New KomaLocation(tocol, torow)).IsEmpty Then
251+ Exit Do
252+ End If
253+ i += 1
254+ Loop
255+
256+ Return komaLocations.ToArray
257+ End Function
258+
20259 Private Function IsValidatePut(ByVal kyokumen As Kyokumen, ByVal te As Te) As Boolean
21260 Dim tolocation As KomaLocation = te.ToLocation
22261 If Not kyokumen.GetMasu(tolocation).IsEmpty Then
--- ShogiNextMove/Board/KomaMoveDirection.vb (nonexistent)
+++ ShogiNextMove/Board/KomaMoveDirection.vb (revision 59)
@@ -0,0 +1,43 @@
1+Namespace Board
2+
3+
4+ Public Class KomaMoveDirection
5+
6+ Private _col As Integer
7+ Public ReadOnly Property Col As Integer
8+ Get
9+ Return _col
10+ End Get
11+ End Property
12+
13+ Private _row As Integer
14+ Public ReadOnly Property Row As Integer
15+ Get
16+ Return _row
17+ End Get
18+ End Property
19+
20+ Private _line As Boolean
21+ Public ReadOnly Property Line As Boolean
22+ Get
23+ Return _line
24+ End Get
25+ End Property
26+
27+ Sub New(ByVal col As Integer, row As Integer)
28+ _col = col
29+ _row = row
30+ End Sub
31+
32+ Sub New(ByVal col As Integer, row As Integer, isLine As Boolean)
33+ _col = col
34+ _row = row
35+ _line = isLine
36+ End Sub
37+
38+
39+
40+
41+ End Class
42+
43+End Namespace
\ No newline at end of file
旧リポジトリブラウザで表示