Tipp 0144 Spielstand speichern
Autor/Einsender:
Datum:
  Michael Werner
26.10.2006
Entwicklungsumgebung:   VB.Net 2005
Framework:   2.0
Hier geht es nicht darum, eine einfache Liste zu speichern, sondern den Zustand eines Spielbrettes. Zum Beispiel kann mit dieser Methode der Serilisation von Objekten der Zustand (Spielstand) eines komplexen Schachspiels gespeichert und wieder ausgelesen werden.
Der Namespace Serialization.Formatters.Binary
In VB.NET ist dies über die Klasse Serialization.Formatters.Binary mit wenigen Zeilen Code möglich. Ein komplexes 2-dimensionales Array binär abzuspeichern und später wieder auszulesen, ist auf diese Weise ein Kinderspiel. Jedes Objekt (Klasse, Liste, Structure, Array, Collection) kann so in seinem komplexten Zustand festgehalten und wiederbelebt werden.
Ein geslicetes Bild als Puzzle
In diesem Tipp wird ein Bild von meinem langjährigen Lebensbegleiter namens Coco (1971 bis 2003) die entscheidende Rolle spielen. Sein Bild habe ich gesliced (in Teilbilder aufgeteilt) und in einem ImageList-Steuerelement gespeichert. Im Spiel werden die Teilbilder in das Gitternetz einer PictureBox geladen. Allerdings würfelt eine Zufallsfunktion die Teilbilder durcheinander und Aufgabe des Users ist es, das Puzzle wieder zusammenzusetzen. Dazu dienen die Ereignisse MouseDown und MouseUp. Erlaubt sind nur Drag & Drop-Züge in das eine leere Feld.
Speicherort UserAppDataPath
Bemerkenswert ist noch der Speicherort: Der Speicherort ist Application.UserAppDataPath. Das ist der Pfad für die Anwendungsdaten eines Benutzers. Die in einem solchen Pfad gespeicherten Daten sind Teil des Benutzerprofils, das für Roaming aktiviert ist. Ein Roaming-Benutzer arbeitet an mehreren Computern in einem Netzwerk. Ein typischer Basispfad ist zum Beispiel
C:\Dokumente und Einstellungen\username\Anwendungsdaten.
Der Code zum Tipp ist zu umfangreich, um ihn hier darzustellen. Der erstaunlich wenige Code zum Speichern und Auslesen eines komlexen Spielbrettes (2-dimensionales Array) soll hier aber dargestellt werden.
 
  Private Sub SpielstandSpeichern()
    Try
      Dim stream As New FileStream(sFilePath, FileMode.Create, _
            FileAccess.Write, FileShare.Write)
      Dim converter As New BinaryFormatter
      converter.Serialize(stream, Brett)
      stream.Close()
    Catch ex As Exception
      MessageBox.Show(ex.Message)
    End Try
  End Sub

  Private Sub SpielstandLesen()
    Try
      Dim stream As New FileStream(sFilePath, FileMode.Open, _
            FileAccess.Read)
      Dim converter As New BinaryFormatter
      Dim o As Object = Nothing
      Brett = CType(converter.Deserialize(stream, CType(o, _
          Runtime.Remoting.Messaging.HeaderHandler)), Integer(,))
      stream.Close()
    Catch ex As Exception
      MessageBox.Show(ex.Message)
    End Try
  End Sub
 
Weitere Links zum Thema
Binäre Serialisation

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (84,6 kB) Downloads bisher: [ 460 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 22. Januar 2012