Hi Leute!
Mein erstes Thema und zugleich mein erster Beitrag in diesem Forum.
Ich hoffe ich mache alles richtig.
Also ich ein Programm geschrieben, das eine Map zu einem Browsergame namens "Die Stämme" erstellt. Die Map ist ein 1000x1000px großer Bitmap.
Die Daten liegen in textform vor. Jede Zeile steht für ein Dorf auf der Map.
Diese Textdatei lese ich nun zeilenweise aus und mach ein Object mit einer von mir gefertigten Klasse. Diese Objecte speichere ich in in DIctionary(Of integer (Dorfid), dorf as clsDorf).
Ausser den Dörfer liegen noch weitere 2 Textdateien vor. Für Spieler und Stämme.
Das Einlesen ist die selbe Prozedur wie bei den Dörfern.
Nun aber zu meinem eigentlichen Problem: Wie kann es sein, dass auf einem Rechner mit xp insgesamt ca. 80mb ram belegt werden und auf meinem Notebook mit vista nur ca. knapp 60 mb belegt werden? Das Programm ist absolut identisch und die Textdateien auch.
Hier der Source:
Einleseroutinen:
Dorf-/Stamm- und Spielerklassen:
SetData Methode der Mapklasse: (Dieser Klasse werden die Listen der Einleseroutinen übergeben)
so das sind die wichtigsten Codeausschnitte. Optimal wär natürlich noch, wenn ihr mir sagen könntet wie ich die Speicherauslastung noch mehr senke.
btw. Ich weiß nicht ob es in den geposteten Auschnitten vorkommt, aber Player = Tribe = Spieler und Ally = Stamm und Village = Dorf. Konnte mich einfach nicht für einen Namen entscheiden.
btw2. ich bin noch ein ziemlicher Noob in Vb.net.
Auf Hilfe hoffend,
DaHaiz
Mein erstes Thema und zugleich mein erster Beitrag in diesem Forum.
Ich hoffe ich mache alles richtig.
Also ich ein Programm geschrieben, das eine Map zu einem Browsergame namens "Die Stämme" erstellt. Die Map ist ein 1000x1000px großer Bitmap.
Die Daten liegen in textform vor. Jede Zeile steht für ein Dorf auf der Map.
Diese Textdatei lese ich nun zeilenweise aus und mach ein Object mit einer von mir gefertigten Klasse. Diese Objecte speichere ich in in DIctionary(Of integer (Dorfid), dorf as clsDorf).
Ausser den Dörfer liegen noch weitere 2 Textdateien vor. Für Spieler und Stämme.
Das Einlesen ist die selbe Prozedur wie bei den Dörfern.
Nun aber zu meinem eigentlichen Problem: Wie kann es sein, dass auf einem Rechner mit xp insgesamt ca. 80mb ram belegt werden und auf meinem Notebook mit vista nur ca. knapp 60 mb belegt werden? Das Programm ist absolut identisch und die Textdateien auch.
Hier der Source:
Einleseroutinen:
Code:
Private Function load_villages(ByVal server As String) Dim strmReader As StreamReader Dim villages As New List(Of clsDorf) Dim act_vil As String Dim act_vil_info(6) As String Dim village As clsDorf Dim ers As Integer = 0 villages.Add(New clsDorf(-1, "Feld", 0, 0, 0, 0)) strmReader = New StreamReader(data_str & "\" & My.Settings.server & "\villages.txt", True) Dim vils_read As Integer = 0 While (strmReader.EndOfStream = False) Try act_vil = strmReader.ReadLine act_vil_info = act_vil.Split(",") village = New clsDorf(act_vil_info(0), act_vil_info(1), act_vil_info(2), act_vil_info(3), act_vil_info(4), act_vil_info(5)) villages.Add(village) vils_read += 1 Catch ex As Exception 'MsgBox(ex.Message, MsgBoxStyle.Information, "Fehler beim Einlesen der Dörfer") ers += 1 End Try End While strmReader.Close() Return villages End Function Private Function load_allys(ByVal server As String) Dim strmReader As StreamReader Dim allys As New List(Of clsStamm) Dim act_al As String Dim act_al_info(8) As String Dim stamm As clsStamm Dim ers As Integer = 0 stamm = New clsStamm(0, "kein Stamm", "kein Stamm", 0, 0, 0, 0, 0) allys.Add(stamm) strmReader = New StreamReader(data_str & "\" & My.Settings.server & "\ally.txt", True) While (strmReader.EndOfStream = False) Try act_al = strmReader.ReadLine act_al_info = act_al.Split(",") stamm = New clsStamm(act_al_info(0), act_al_info(1), act_al_info(2), act_al_info(3), act_al_info(4), act_al_info(5), act_al_info(6), act_al_info(7)) allys.Add(stamm) Catch ex As InvalidCastException 'MsgBox(ex.Message, MsgBoxStyle.Information, "Fehler beim Einlesen der Stämme") ers += 1 End Try End While strmReader.Close() Return allys End Function Private Function load_player(ByVal server As String) Dim strmReader As StreamReader Dim players As New List(Of clsPlayer) Dim act_pl As String Dim act_pl_info(6) As String Dim player As clsPlayer Dim ers As Integer player = New clsPlayer(0, "verlassen", 0, 0, 0, 0) players.Add(player) strmReader = New StreamReader(data_str & "\" & My.Settings.server & "\tribe.txt", True) While (strmReader.EndOfStream = False) Try act_pl = strmReader.ReadLine act_pl_info = act_pl.Split(",") player = New clsPlayer(act_pl_info(0), act_pl_info(1), act_pl_info(2), act_pl_info(3), act_pl_info(4), act_pl_info(5)) players.Add(player) Catch ex As Exception ers += 1 End Try End While strmReader.Close() Return players End Function
Dorf-/Stamm- und Spielerklassen:
Code:
Public Class clsDorf Public x As Integer Public y As Integer Public id As Integer Public name As String Public pts As Integer Public tribe As Integer Public ally As Integer Public Sub New(ByVal id As Integer, ByVal name As String, ByVal x As Integer, ByVal y As Integer, ByVal tribe As Integer, ByVal pts As Integer) Me.x = x Me.y = y Me.id = id Me.name = System.Web.HttpUtility.UrlDecode(name) Me.pts = pts Me.tribe = tribe End Sub Public Overrides Function ToString() As String Return Me.name End Function End Class Public Class clsStamm Public id As Integer Public name As String Public tag As String Public members As Integer Public villages As Integer Public points As Integer Public all_points As Integer Public rank As Integer Public player As New List(Of Integer) Public Sub New(ByVal id As Integer, ByVal name As String, ByVal tag As String, ByVal members As Integer, ByVal villages As Integer, ByVal points As Integer, ByVal all_points As Integer, ByVal rank As Integer) Me.id = id Me.name = System.Web.HttpUtility.UrlDecode(name) Me.tag = System.Web.HttpUtility.UrlDecode(tag) Me.members = members Me.villages = villages Me.points = points Me.all_points = all_points Me.rank = rank End Sub Public Overrides Function ToString() As String Return Me.tag End Function End Class Public Class clsPlayer Public id As Integer Public name As String Public ally As Integer Public villages As Integer Public pts As Integer Public rank As Integer Public doerfer As List(Of Integer) Public Sub New(ByVal id As Integer, ByVal name As String, ByVal ally As Integer, ByVal villages As Integer, ByVal pts As Integer, ByVal rank As Integer) Me.id = id Me.name = System.Web.HttpUtility.UrlDecode(name) Me.ally = ally Me.villages = villages Me.pts = pts Me.rank = rank Me.doerfer = New List(Of Integer) End Sub Public Overrides Function ToString() As String Return Me.name End Function End Class
Code:
Public Sub SetData(ByVal villages As List(Of clsDorf), ByVal tribes As List(Of clsPlayer), ByVal allys As List(Of clsStamm)) ReDim vils_kords(999, 999) frmMap.cmbMapInfoAllys.Items.Clear() frmMap.cmbMapInfoPlayers.Items.Clear() frmMap.cmbMapInfoVillages.Items.Clear() For x As Integer = 0 To 999 For y As Integer = 0 To 999 vils_kords(x, y) = -1 Next Next For i As Integer = 0 To allys.Count - 1 allys_id.Add(allys.Item(i).id, allys.Item(i)) frmMap.cmbMapInfoAllys.Items.Add(allys.Item(i)) Next For i As Integer = 0 To tribes.Count - 1 Me.tribes_id.Add(tribes.Item(i).id, tribes.Item(i)) Me.allys_id.Item(tribes.Item(i).ally).player.Add(tribes.Item(i).id) Next For i As Integer = 0 To villages.Count - 1 vils_kords(villages.Item(i).x, villages.Item(i).y) = villages.Item(i).id If (villages.Item(i).tribe > -1) Then Try Me.villages_id.Add(villages.Item(i).id, villages.Item(i)) Me.villages_id(villages.Item(i).id).ally = Me.tribes_id(villages.Item(i).tribe).ally Me.tribes_id(villages.Item(i).tribe).doerfer.Add(villages.Item(i).id) 'Me.tribes_id().Item(Me.tribes_id(Me.villages.Item(i).tribe)).doerfer.Add(Me.villages.Item(i).id) Catch ex As KeyNotFoundException End Try End If Next frmMap.cmbMapInfoAllys.SelectedIndex = 0 frmMap.lblInfosAllys.Text = "Insgesamt " & allys.Count & " Stämme" frmMap.lblInfosTribes.Text = "Insgesamt " & tribes.Count & " Spieler" frmMap.lblInfosVillages.Text = "Insgesamt " & villages.Count & " Dörfer" End Sub
btw. Ich weiß nicht ob es in den geposteten Auschnitten vorkommt, aber Player = Tribe = Spieler und Ally = Stamm und Village = Dorf. Konnte mich einfach nicht für einen Namen entscheiden.
btw2. ich bin noch ein ziemlicher Noob in Vb.net.
Auf Hilfe hoffend,
DaHaiz
Comment