0

我创建了一个隐藏对象游戏,例如:http ://www.shazaml.com/archives/creating-a-hidden-object-game-in-silverlight-3 ,玩家必须在其中找到大约 60 个对象照片。有八个标签,每个标签都填充了一个字符串,其中包含要查找的对象的名称。这取自 pictureArray()。

 Sub pictureArray()

    Randomize()

    pictures.Add("Cat")
    pictures.Add("Spade")
    pictures.Add("Butterfly")
    pictures.Add("Shoes")
    pictures.Add("Radio")
    pictures.Add("Grasshopper")
    pictures.Add("Lamp")
    pictures.Add("Coconut")
    pictures.Add("Clock")
    pictures.Add("Lightbulb")
    pictures.Add("Binoculars")
    pictures.Add("Diamond")
    pictures.Add("Hammer")
    pictures.Add("Bell")
    pictures.Add("Snail")
    pictures.Add("Bag")
    pictures.Add("Camera")
    pictures.Add("Pencil")
    pictures.Add("Horseshoe")
    pictures.Add("Brush")
    pictures.Add("Gloves")
    pictures.Add("Ball")
    pictures.Add("Umbrella")
    pictures.Add("Gnome")
    pictures.Add("Mouse")
    pictures.Add("Crown")
    pictures.Add("Torch")
    pictures.Add("Paperclip")
    pictures.Add("Handprint")
    pictures.Add("Hat")
    pictures.Add("Car")
    pictures.Add("Star")
    pictures.Add("Wheel")
    pictures.Add("Book")
    pictures.Add("Triangle")
    pictures.Add("Die")
    pictures.Add("Glasses")
    pictures.Add("One")
    pictures.Add("Shell")
    pictures.Add("Apple")
    pictures.Add("Bowling Pin")
    pictures.Add("Spoon")
    pictures.Add("Magnifier")
    pictures.Add("Letter R")
    pictures.Add("Aeroplane")
    pictures.Add("Scissors")
    pictures.Add("Mask")
    pictures.Add("Bow")
    pictures.Add("Coin")
    pictures.Add("Frog")
    pictures.Add("Snake")
    pictures.Add("Key")
    pictures.Add("Rope")
    pictures.Add("Peg")
    pictures.Add("Bottle")
    pictures.Add("Belt")
    pictures.Add("Angel")
    pictures.Add("Pawprint")
    pictures.Add("Clover")
    pictures.Add("Phone")
    pictures.Add("Ring")

    lblOne.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

    lblTwo.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

    lblThree.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

    lblFour.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

    lblFive.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

    lblSix.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

    lblSeven.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

    lblEight.Text = (pictures(RandIndex))
    pictures.RemoveAt(RandIndex)
    RandIndex = RandGen.Next(0, pictures.Count)

End Sub

由于要查找的对象很多,玩家可能想退出游戏并在以后返回游戏,因此,我想知道我可以保存游戏当前进度的最佳方法是什么,以便玩家可以从他们离开的地方继续?

我做了一些研究,试图在网上找到一种方法,但不明白或者不知道什么最适合这个游戏?

4

1 回答 1

1

基本上,您将创建一个 CLASS 来保存 List(Of String) 和标签中的八个当前值中的每一个。然后使用 XmlSerializer 将该信息保存并加载到 XML 文件中。

这是一个非常简单的例子:

Public Class Form1

    Private RandGen As New Random
    Private Pictures As New List(Of String)
    Private DataFile As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData, "GameState.xml")

    Sub pictureArray()
        Pictures.Clear()
        pictures.Add("Cat")
        pictures.Add("Spade")
        pictures.Add("Butterfly")
        pictures.Add("Shoes")
        pictures.Add("Radio")
        pictures.Add("Grasshopper")
        pictures.Add("Lamp")
        pictures.Add("Coconut")
        pictures.Add("Clock")
        pictures.Add("Lightbulb")
        pictures.Add("Binoculars")
        pictures.Add("Diamond")
        pictures.Add("Hammer")
        pictures.Add("Bell")
        pictures.Add("Snail")
        pictures.Add("Bag")
        pictures.Add("Camera")
        pictures.Add("Pencil")
        pictures.Add("Horseshoe")
        pictures.Add("Brush")
        pictures.Add("Gloves")
        pictures.Add("Ball")
        pictures.Add("Umbrella")
        pictures.Add("Gnome")
        pictures.Add("Mouse")
        pictures.Add("Crown")
        pictures.Add("Torch")
        pictures.Add("Paperclip")
        pictures.Add("Handprint")
        pictures.Add("Hat")
        pictures.Add("Car")
        pictures.Add("Star")
        pictures.Add("Wheel")
        pictures.Add("Book")
        pictures.Add("Triangle")
        pictures.Add("Die")
        pictures.Add("Glasses")
        pictures.Add("One")
        pictures.Add("Shell")
        pictures.Add("Apple")
        pictures.Add("Bowling Pin")
        pictures.Add("Spoon")
        pictures.Add("Magnifier")
        pictures.Add("Letter R")
        pictures.Add("Aeroplane")
        pictures.Add("Scissors")
        pictures.Add("Mask")
        pictures.Add("Bow")
        pictures.Add("Coin")
        pictures.Add("Frog")
        pictures.Add("Snake")
        pictures.Add("Key")
        pictures.Add("Rope")
        pictures.Add("Peg")
        pictures.Add("Bottle")
        pictures.Add("Belt")
        pictures.Add("Angel")
        pictures.Add("Pawprint")
        pictures.Add("Clover")
        pictures.Add("Phone")
        pictures.Add("Ring")

        Dim RandIndex As Integer
        lblOne.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)

        lblTwo.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)

        lblThree.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)

        lblFour.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)

        lblFive.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)

        lblSix.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)

        lblSeven.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)

        lblEight.Text = (pictures(RandIndex))
        pictures.RemoveAt(RandIndex)
        RandIndex = RandGen.Next(0, pictures.Count)
    End Sub

    Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
        Dim gs As New GameState
        gs.Pictures = Pictures
        gs.lblOne = lblOne.Text
        gs.lblTwo = lblTwo.Text
        gs.lblThree = lblThree.Text
        gs.lblFour = lblFour.Text
        gs.lblFive = lblFive.Text
        gs.lblSix = lblSix.Text
        gs.lblSeven = lblSeven.Text
        gs.lblEight = lblEight.Text

        Try
            Dim xml As New System.Xml.Serialization.XmlSerializer(gs.GetType)
            Using fs As New System.IO.FileStream(DataFile, IO.FileMode.OpenOrCreate, IO.FileAccess.Write)
                xml.Serialize(fs, gs)
            End Using
            MessageBox.Show("Game Saved!")
        Catch ex As Exception
            MessageBox.Show(ex.ToString, "Error Saving Game")
        End Try
    End Sub

    Private Sub btnLoad_Click(sender As System.Object, e As System.EventArgs) Handles btnLoad.Click
        If System.IO.File.Exists(DataFile) Then
            Try
                Dim gs As GameState
                Dim xml As New System.Xml.Serialization.XmlSerializer(GetType(GameState))
                Using fs As New System.IO.FileStream(DataFile, IO.FileMode.Open, IO.FileAccess.Read)
                    gs = DirectCast(xml.Deserialize(fs), GameState)
                    Pictures = gs.Pictures
                    lblOne.Text = gs.lblOne
                    lblTwo.Text = gs.lblTwo
                    lblThree.Text = gs.lblThree
                    lblFour.Text = gs.lblFour
                    lblFive.Text = gs.lblFive
                    lblSix.Text = gs.lblSix
                    lblSeven.Text = gs.lblSeven
                    lblEight.Text = gs.lblEight
                    MessageBox.Show("Game Loaded!")
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.ToString, "Error Loading Game")
            End Try
        Else
            MessageBox.Show("No Saved Game Found")
        End If
    End Sub

End Class

<Serializable()> _
Public Class GameState
    Public Pictures As New List(Of String)
    Public lblOne As String
    Public lblTwo As String
    Public lblThree As String
    Public lblFour As String
    Public lblFive As String
    Public lblSix As String
    Public lblSeven As String
    Public lblEight As String
End Class
于 2013-10-03T14:52:28.773 回答