PDA

View Full Version : مشکل با باینری ریدر



Ner'zhul Arthas
یک شنبه 17 دی 1385, 02:52 صبح
من یه شطرنج نوشتم. وقتی بازی رو ذخیره میکنم و دوباره میخونم اون جوری که باید خونده بشه خونده نمیشه. چند بار باز نویسیش کردم نمیدونم مشکل چیه.

این کدش:


Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click
If OpenFileDialog1.ShowDialog() <> Windows.Forms.DialogResult.Cancel Then
' Try
Dim F As New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)
Dim Fs As New BinaryReader(F)
Fs.BaseStream.Seek(0, SeekOrigin.Begin)
Dim EndMoves2 As Integer = Fs.ReadInt32()
ReDim LastMoves(0)
EndMoves = 0
ListBox1.BeginUpdate()
ListBox1.Items.Clear()
ListBox1.Items.Add(" - - - ")
Myboard.BCastle_OO = Fs.ReadBoolean()
Myboard.BCastle_OOO = Fs.ReadBoolean()
Myboard.WCastle_OO = Fs.ReadBoolean()
Myboard.WCastle_OOO = Fs.ReadBoolean()
For i As Byte = 0 To 63
Myboard.User(i) = Fs.ReadByte()
Myboard.Type(i) = Fs.ReadByte()
Next
LastMoves(0).CBoard = Myboard
Dim a1, a2 As Byte
For i As Integer = 1 To EndMoves2 - 1
a1 = Fs.ReadByte()
a2 = Fs.ReadByte()
Dim Movx As New MMove
Movx = MoveEn(a1, Myboard, Myboard.User(a1), LastMoves(EndMoves))
Myboard = MoveDo(a2, Movx, Myboard)
Next
Fs.Close()
' Catch ex As Exception
' MsgBox(ex.Message())
' End Try

Myboard = LastMoves(EndMoves).CBoard
BoardMoveShow(New MMove)
SetBoard(Myboard)
ListBox1.EndUpdate()
ListBox1.SelectedIndex = ListBox1.Items.Count - 1
End If
End Sub


Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
If SaveFileDialog1.ShowDialog() <> Windows.Forms.DialogResult.Cancel Then
' Try
Dim F As New FileStream(SaveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.Write)
Dim Fs As New BinaryWriter(F)
Fs.BaseStream.Seek(0, SeekOrigin.Begin)

Fs.Write(LastMoves.Length)
Fs.Write(LastMoves(0).CBoard.BCastle_OO)
Fs.Write(LastMoves(0).CBoard.BCastle_OOO)
Fs.Write(LastMoves(0).CBoard.WCastle_OO)
Fs.Write(LastMoves(0).CBoard.WCastle_OOO)
For i As Byte = 0 To 63
Fs.Write(LastMoves(0).CBoard.User(i))
Fs.Write(LastMoves(0).CBoard.Type(i))
Next
For i As Integer = 1 To LastMoves.Length - 1
Fs.Write(LastMoves(i).CC2(0))
Fs.Write(LastMoves(i).CC2(1))
Next
Fs.Close()
' Catch ex As Exception
' MsgBox(ex.Message())
' End Try
End If
End Sub

Ner'zhul Arthas
چهارشنبه 20 دی 1385, 19:21 عصر
متشکر از جواباتون :چشمک:

مشکل از این نیست که F در هنگام اجرای برنامه این شکلیه؟
باید این شکلی باشه یا نه؟
این عکسش:

Ner'zhul Arthas
جمعه 22 دی 1385, 00:57 صبح
جواب پیدا شد:

وقتی میخوایم از Enum استفاده کنیم باید نوعش رو تعریف کنیم:




Public Enum BT As Byte ' اگر این از بایت رو نذاریم اینطوری میشه '
None = 0
King = 1
Queen = 2
Rook = 3
Knight = 4
Bishop = 5
Pawn = 6
End Enum