Heyho.
Ich habe hier eine Klasse "PlanetRegister", in der ich (bei meinem Versuchsspiel) alle erstellten Planeten registrieren kann und später auf diese auch zugreifen kann. Nun hat diese Klasse folgende Funktion:
Damit wird ein Planet gelöscht. Jetzt muss dieser Planet aber auch aus der ListBox aus der Mainform verschwinden -wie stelle ich das am besten an?
Ich hatte überlegt, mittels einer Schleifer alle registrierten Planeten durchzugehen und wenn einer nicht vorhanden ist, ihn später auch aus der ListBox zu entfernen. Das könnte aber später, bei mehreren Planeten, doch performancetechnisch nicht das gelbe vom Ei sein, oder?
Spoiler anzeigen
Spoiler anzeigen
Ich weiß, die Klassen sind nicht die schönsten
Ich habe hier eine Klasse "PlanetRegister", in der ich (bei meinem Versuchsspiel) alle erstellten Planeten registrieren kann und später auf diese auch zugreifen kann. Nun hat diese Klasse folgende Funktion:
Damit wird ein Planet gelöscht. Jetzt muss dieser Planet aber auch aus der ListBox aus der Mainform verschwinden -wie stelle ich das am besten an?
Ich hatte überlegt, mittels einer Schleifer alle registrierten Planeten durchzugehen und wenn einer nicht vorhanden ist, ihn später auch aus der ListBox zu entfernen. Das könnte aber später, bei mehreren Planeten, doch performancetechnisch nicht das gelbe vom Ei sein, oder?
clsPlanetRegister
VB.NET-Quellcode
- Public Class clsPlanetRegister
- Public liPlanets As List(Of clsPlanet)
- Public Sub New()
- liPlanets = New List(Of clsPlanet)
- End Sub
- Public Sub RegisterNewPlanet(ByVal Planet As clsPlanet)
- liPlanets.Add(Planet)
- End Sub
- Public Function GetPlanetByName(ByVal PlanetName As String) As clsPlanet
- Dim bPlanetFound As Boolean = False
- Dim planet As clsPlanet
- For Each planet In liPlanets
- If planet.PlanetName = PlanetName Then
- bPlanetFound = True
- Return planet
- Exit For
- End If
- Next
- If bPlanetFound = False Then
- Return Nothing
- End If
- End Function
- Public Function CheckForExistingPlanet(ByVal PlanetName As String) As Boolean
- End Function
- 'TODO
- 'Den gelöschten Planeten auch aus der ListBox der MainForm löschen!
- Public Sub DeletePlanetByName(ByVal PlanetName As String)
- For i As Integer = 0 To liPlanets.Count - 1
- If liPlanets.Item(i).PlanetName = PlanetName Then
- liPlanets.RemoveAt(i)
- Exit For
- End If
- Next
- End Sub
- End Class
clsPlanet
VB.NET-Quellcode
- Public Class clsPlanet
- Private _strPlanetName As String
- Private _structRessources As Ressources
- Private _MetalMines As Integer = 1
- Private _CrystalMines As Integer = 1
- Public Property PlanetName As String
- Get
- Return _strPlanetName
- End Get
- Set(value As String)
- _strPlanetName = value
- End Set
- End Property
- Public Property PlanetRessources As Ressources
- Get
- Return _structRessources
- End Get
- Set(value As Ressources)
- _structRessources = value
- End Set
- End Property
- Public Property MetalMines As Integer
- Get
- Return _MetalMines
- End Get
- Set(value As Integer)
- _MetalMines = value
- End Set
- End Property
- Public Property CrystalMines As Integer
- Get
- Return _CrystalMines
- End Get
- Set(value As Integer)
- _CrystalMines = value
- End Set
- End Property
- Structure Ressources
- Dim Metal As Double
- Dim Crystal As Double
- End Structure
- Public Sub New(ByVal PlanetName As String)
- Me.PlanetName = PlanetName
- Me.PlanetRessources = GenerateRessources()
- End Sub
- Private Function GenerateRessources() As Ressources
- Dim r As New Ressources
- r.Crystal = Math.Round(New Random().NextDouble, 2) + 1
- Threading.Thread.Sleep(50)
- r.Metal = Math.Round(New Random().NextDouble, 2) + 1
- Return r
- End Function
- End Class
Ich weiß, die Klassen sind nicht die schönsten