Develop and Download Open Source Software

Browse Subversion Repository

Contents of /ShogiNextMove/frmMain.vb

Parent Directory Parent Directory | Revision Log Revision Log


Revision 76 - (show annotations) (download)
Mon Feb 22 06:48:06 2016 UTC (8 years ago) by bellyoshi
File size: 8049 byte(s)


1
2
3 Public Class frmMain
4
5 Private _kifuDataDirectoryReader As KifuDataDirectoryReader
6
7 Private _editKifu As Board.Kifu.Kifu
8
9 Dim closePoint As Integer = 0
10
11 Private _isLoaded As Boolean = False
12
13 Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
14 Viewer.IsBoardViewRotated = False
15 Viewer.Initialize()
16 Initialize()
17
18 EnabledControl()
19 VisibleControl()
20 _isLoaded = True
21 End Sub
22
23 Private Sub btnAnswer_Click(sender As System.Object, e As System.EventArgs) Handles btnAnswer.Click
24 If _kifuDataDirectoryReader.hasNextKyokumen Then
25 viewer.kyokumen = _kifuDataDirectoryReader.NextKyokumen()
26 viewer.DrawCurrentBitmap()
27 End If
28 End Sub
29
30 Private Sub btnNextQuestion_Click(sender As System.Object, e As System.EventArgs) Handles btnNextQuestion.Click
31 lblDecision.Text = ""
32 If _kifuDataDirectoryReader.hasNextFile() Then
33 _kifuDataDirectoryReader.readNextFile()
34 Viewer.kyokumen = _kifuDataDirectoryReader.CurrentKyokumen
35 Viewer.DrawCurrentBitmap()
36 End If
37 End Sub
38
39
40
41 Private Sub Viewer_Editing(sender As System.Object, e As ShogiNextMove.Control.Board.EditingEventArgs) Handles Viewer.Editing
42
43 If InPlay() Then
44 e.IsMove = True
45 If Not Board.KomaMoveValidater.GetInstance.IsValidate(Viewer.kyokumen, e.MovingValue) Then
46 e.Cancel = True
47 Exit Sub
48 End If
49 If e.MovingValue.CanPromote Then
50 PromoteMoveValue(e.MovingValue)
51 End If
52 If Not e.MovingValue.ToLocation.IsMasu Then
53 e.Cancel = True
54 End If
55
56
57 If e.MouseRightClicked Then
58 e.Cancel = True
59 End If
60
61
62 End If
63
64
65
66 End Sub
67
68 Private Sub PromoteMoveValue(movingValue As Board.Te)
69
70 Dim masuRect As Rectangle = Me.Viewer.GetMasuRect(movingValue.ToLocation)
71
72 Dim x As Integer = Location.X + SystemInformation.HorizontalResizeBorderThickness + masuRect.Left - Viewer.komaSize.Width \ 2 - 1
73 Dim y As Integer
74 If (Not Viewer.IsBoardViewRotated AndAlso movingValue.ToLocation.Row < 5) OrElse (Viewer.IsBoardViewRotated AndAlso movingValue.ToLocation.Row > 5) Then
75 y = Location.Y + SystemInformation.VerticalResizeBorderThickness + SystemInformation.CaptionHeight + Me.Location.Y + masuRect.Bottom + 1
76 Else
77 y = Location.Y + SystemInformation.VerticalResizeBorderThickness + Me.Location.Y + masuRect.Top - (Viewer.komaSize.Height + SystemInformation.FixedFrameBorderSize.Height * 2) + 1
78 End If
79
80 Dim frm As New frmPromote(movingValue.Piece.Value, x, y)
81 frm.ShowDialog()
82 If frm.isPromoted Then
83 movingValue.Promote = True
84 End If
85
86 End Sub
87
88 Private Sub rbEdit_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbEdit.CheckedChanged
89 VisibleControl()
90 EnabledControl()
91 If rbEdit.Checked Then
92 rbFirstKyokumen.Checked = True
93 End If
94 End Sub
95
96 Private Sub rbPlay_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbPlay.CheckedChanged
97 VisibleControl()
98 If rbPlay.Checked AndAlso _isLoaded Then
99 Initialize()
100 End If
101 End Sub
102
103 Private Sub Initialize()
104 _kifuDataDirectoryReader = New KifuDataDirectoryReader
105 If _kifuDataDirectoryReader.hasNextFile Then
106 _kifuDataDirectoryReader.readNextFile()
107 Viewer.kyokumen = _kifuDataDirectoryReader.CurrentKyokumen
108 Viewer.DrawCurrentBitmap()
109 Else
110 Viewer.kyokumen = New Board.Kyokumen
111 Viewer.DrawCurrentBitmap()
112 End If
113 End Sub
114 Private Sub rbFirstKyokumen_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbFirstKyokumen.CheckedChanged
115 VisibleControl()
116 EnabledControl()
117 End Sub
118
119 Private Sub rbNextMove_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbNextMove.CheckedChanged
120 If rbNextMove.Checked Then
121 If Board.KyokumenUtil.IsOuGyokuInSamePlayer(Viewer.kyokumen) Then
122 MessageBox.Show("王将と玉将が同じ向きです。確認して正しく編集してください。", "王将の向き違反", MessageBoxButtons.OK, MessageBoxIcon.Error)
123 rbFirstKyokumen.Checked = True
124 Exit Sub
125 End If
126 If Board.KyokumenUtil.IsNifu(Viewer.kyokumen) Then
127 MessageBox.Show("ニ歩です。確認して正しく編集してください。", "二歩", MessageBoxButtons.OK, MessageBoxIcon.Error)
128 rbFirstKyokumen.Checked = True
129 Exit Sub
130 End If
131 _editKifu = New Board.Kifu.Kifu
132 _editKifu.InitializeBoard(Viewer.kyokumen)
133 End If
134 End Sub
135
136 Private Sub VisibleControl()
137 Viewer.KomabakoVisible = Not InPlay()
138 gbEditMode.Visible = rbEdit.Checked
139 End Sub
140
141 Private Sub EnabledControl()
142 If rbFirstKyokumen.Checked AndAlso rbEdit.Checked Then
143 FirstKyokumenToolStripMenuItem.Enabled = True
144 Else
145 FirstKyokumenToolStripMenuItem.Enabled = False
146 End If
147 End Sub
148
149 Private Function InPlay() As Boolean
150 Return rbPlay.Checked OrElse (rbEdit.Checked AndAlso rbNextMove.Checked)
151 End Function
152
153 Private Sub Viewer_Edited(sender As System.Object, e As ShogiNextMove.Control.Board.EditedEventArgs) Handles Viewer.Edited
154 If rbPlay.Checked Then
155 If Not _kifuDataDirectoryReader.hasMove Then
156 Exit Sub
157 End If
158
159 If e.MovingValue.Equals(_kifuDataDirectoryReader.Moving) Then
160 lblDecision.Text = "正解"
161 closePoint += 1
162 lblPoint.Text = String.Format("得点:{0}/{1}", closePoint, _kifuDataDirectoryReader.Count)
163 _kifuDataDirectoryReader.NextKyokumen()
164 Else
165 lblDecision.Text = "不正解"
166 End If
167 End If
168
169 If rbEdit.Checked AndAlso rbNextMove.Checked Then
170 NextMoveAddAndSave(e.MovingValue)
171 End If
172
173 End Sub
174
175 Private Sub NextMoveAddAndSave(NextMoveValue As Board.Te)
176 Dim msg As String = String.Format("次の一手は""{0}""でよいですか?",
177 Board.Kifu.KifKifuUtil.GetInstance.MoveToString(NextMoveValue, Nothing))
178 Dim ret As DialogResult = MessageBox.Show(msg, "確認", MessageBoxButtons.OKCancel)
179 If ret = Windows.Forms.DialogResult.Cancel Then
180 Viewer.kyokumen = _editKifu.KyokumenList(0)
181 Viewer.DrawCurrentBitmap()
182 Exit Sub
183 End If
184
185 _editKifu.AddMove(NextMoveValue, 0)
186 KifuSavefileDaialog.InitialDirectory = _kifuDataDirectoryReader.dirName
187 KifuSavefileDaialog.Filter = "csa棋譜ファイル(*.csa)|*.csa"
188 If KifuSavefileDaialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
189 _kifuDataDirectoryReader.Write(_editKifu, KifuSavefileDaialog.FileName)
190 End If
191 rbFirstKyokumen.Checked = True
192 End Sub
193
194 Private Sub HirateToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles HirateToolStripMenuItem.Click
195 Viewer.kyokumen = New Board.Kyokumen(New Board.Haichi.Hirate)
196 Viewer.DrawCurrentBitmap()
197 End Sub
198
199 Private Sub TsumeToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles TsumeToolStripMenuItem.Click
200 Viewer.kyokumen = New Board.Kyokumen(New Board.Haichi.Tsume)
201 Viewer.DrawCurrentBitmap()
202 End Sub
203
204
205 End Class

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26