我创建了一个隐藏的对象游戏,就像这个: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
由于要找到很多物品,玩家可能想退出游戏并在以后返回游戏,因此,我想知道什么是我能保存当前游戏进度的最佳方式,以便玩家可以从他们离开的地方接听?
我做过一些研究,试图找到一种在线方式,但是不了解它或者知道什么对这款游戏最好?
答案 0 :(得分: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