[gelöst] Speicherproblem mit Minispiel (verbraucht steigt)
Übersicht BlitzBasic Blitz3D
SM3DBetreff: [gelöst] Speicherproblem mit Minispiel (verbraucht steigt) |
Fr, Jun 01, 2012 22:38 Antworten mit Zitat |
|
---|---|---|
Grüße,
ich habe ein großes Problem mit meinem Spiel (dem Hanse Remake 2D im Retro Look). Und zwar gibt es dort folgendes: - das Intro (Splashscreen) ein Bild wird anngezeigt, soweit ist auch alles Ok - dann wird das Hauptmenü (Function MainMenu) aufgerufen und das Fenster mit der Schrift gezeichnet, hier hat das Programm schon ein Verbrauch von 35MB Oo - wenn ich jetzt einen Menüpunkt aufrufe wird die entsprechende Function aufgerufen und das Fenster neugezeichnet für den gewünschten Eintrag (Neues Spiel, Spiel speichern, Spiel laden, Credits, History) Bei allen Einträgen bis auf Credits wird kein weiterer Speicher verbraucht, da diese Fenster nur eine Textzeile derzeit enthalten. Bei den Credits wird beim aufruf schon 2 MB verbraucht (jdesmal wenn man den Eintrag Credits wählt), bei den anderen einträgen wird ebenfalls 2 MB verbraucht, jedoch erst wenn man mit ESC zurück zum Hauptmenü springt. Das ganze passiert immer wieder und der Verbrauch des Spieles steigt ins unermessliche rauf, ich war mit langen Tests schon bei über 100 MB im Taskmanger. Ich finde den Fehler, die Ursche nicht, bzw. weiss nicht wie ich noch wieder Speicher frei geben kann, da es keine weiteren Befehle gibt. Die Bilder gebe ich wieder frei (hoffe mal korrekt). Jetzt weiss ich nicht was da noch so viel Speicher frisst. Ich denke aber mal das ich ein gravierenen Fehler gemacht haben muss bei meinem Aufbau, denn scheinbar scheint es so als würde das Spiel immer wieder die Fenster erneut in den Speicher schreiben, ohne das die alten frei gegeben werden. Es könnte sein das ich ein schwerwiegenden Logikfehler gemacht habe, zugegeben es gibt sicher sauberere Lösungen für den Code, als wie meinen. Ich wäre dankbar wenn jemand von Euch mir helfen könnte wo ich da Mist verzapft habe. Das Menü wird natürlich noch mit der Case-Lösung umgesetzt, das war jetzt erst mal nur eine Testvariante. Hier mal der Code:Code: [AUSKLAPPEN] ;======================================================================================
; Hanse Remake ; (C) 2012 by SM3D ; ; Ein Hanse remake des alten C64 Hanse ; ; Erstellt : 24.04.2012 durch : SM3D ; Letzte Änderung : 01.05.2012 durch : SM3D ; Sprache : BlitzBasic | IDE : Blitz3D | Version : 1.106 ; ;====================================================================================== ; ; UNITS (Blibliotheken) ; Include "LogUnit.BB" ; GLOBALE KONSTANTE UND VARIABLEN Global DebugMode = 1 ; DebugModus ein = 1 / aus = 0 ; Global Logdatei ; Die Logdatei Global GameDate$ = "anno 1359" ; Das Spiel (ingame) Datum Global PlayerNumbers% = 1 ; Die Anzahl der gesamten Spieler Global Player$ = "Neuer Spieler" ; Der aktuell aktive Spieler Global Version$ = "V0.1" ; Spielversion ;====================================================================================== ; ; MAIN ; INTRO ; Fenster erzeugen und Spiel starten Graphics 800, 600, 32, 2 ; Splash laden (original Splash.jpg) Splash = LoadImage ("Dat.001") ; Splash Transparenz MaskImage Splash, 255, 0, 0 ; Backbuffer setzen SetBuffer BackBuffer() ; Bilder anzeigen DrawBlock Splash, 0, 0 ; Tauscht die Bufferinhalte des Front- und Backbuffers Flip ; Verzögerung 2 Sekunden Delay 1000 ; <<<<< für die Entwicklung niedrig, oder deaktiviert ; Den Splash wieder aus dem Speicher löschen FreeImage Splash ; TEST Cls ; Hauptmenü aufrufen MainMenu() ;====================================================================================== ; = PROGRAMM ENDE = FreeImage Splash FreeImage CreditsBG FreeImage Background End ;====================================================================================== ;====================================================================================== ; FUNKTIONEN ; HAUPTMENÜ Function MainMenu() ; Bildschirm löschen Cls ; Hintergundbild laden (original Background.jpg) Background = LoadImage ("Dat.002") ; Hintergrund zeichnen DrawBlock Background, 0, 0 ; Backbuffer setzen SetBuffer BackBuffer() ; Solange keine Taste gedrückt wird das Menü anzeigen While Not KeyHit(1) ; Titelrahmen in Blau Color 0, 0, 255 Rect 30,30,740,25,0 ; Menübereichrahmen ebenfalls in Blau Rect 30,57,740,486,0 ; Titel in weiss Color 255, 255, 255 Text 50,35,"Hanse Remake Deluxe @@@ Hauptmenü @@@ " ; Spiel ingame Datum in Gelb zum Titel hinzufügen Color 255, 255, 0 Text 680,35, GameDate$ ; Version in gelb zum Titel hinzufügen Color 255, 255, 0 Text 210,35, Version$ ; Hinweis für den Spieler in Cyan Color 0, 255, 255 Text 50,80,"Bitte wähle Deine gewünschte Option aus, indem Du die in den () stehenden Buchstaben" Text 50,100,"drückst." ; Aktueller Spieler anzeigen Text 50,140,"Spieler: " Color 255, 255, 0 ; <<< Gelb für den Spielernamen Text 120,140,Player$ ; Menütext in Cyan Color 0, 255, 255 ; Menü Text 50,200,"Neues Spiel (N)" Text 50,220,"Spiel speichern (S)" Text 50,240,"Spiel laden (L)" Text 50,280,"Historie (H)" Text 50,300,"Credits (C)" Text 50,320,"Beenden (B)" ; Fussrahmen in Blau Color 0, 0, 255 Rect 30,545,740,25,0 ; Copyright in die Fusszeile in Weiss schreiben Color 255, 255, 255 Text 50,550,"Copyrigt (C) 2012 by SM3D" ; Neues Spiel mit Taste (N) If KeyDown(49) = True Text 50, 360, "Neues Spiel wurde gewählt..." ; Warten 2 Sekunden Delay 1000 ; Hier später Neues Spiel Funktion aufrufen NewGame() End If ; Spiel speichern mit Taste (S) If KeyDown(31) = True Text 50, 360, "Spiel speichern wurde gewählt..." ; Warten 2 Sekunden Delay 1000 ; Hier später Spiel speichern Funktion aufrufen SaveGame() End If ; Spiel laden mit Taste (L) If KeyDown(38) = True Text 50, 360, "Spiel laden wurde gewählt..." ; Warten 2 Sekunden Delay 1000 ; Hier später Spiel laden Funktion aufrufen LoadGame() End If ; Historie mit Taste (H) If KeyDown(35) = True Text 50, 360, "Historie wurde gewählt..." ; Warten 2 Sekunden Delay 1000 ; Hier später Historie Funktion aufrufen History() End If ; Credits mit Taste (C) If KeyDown(46) = True Text 50, 360, "Credits wurde gewählt..." ; Warten 2 Sekunden Delay 1000 ; Hier später Credits Function aufrufen Credits() End If ; Beenden mit Taste (B) If KeyDown(48) = True Text 50, 360, "Beenden wurde gewählt... das Spiel wird beendet..." ; Warten 1 Sekunde Delay 1000 ; Ende des Spieles End End If ; Tauscht die Bufferinhalte des Front- und Backbuffers Flip ; Schleifen Ende fürs Menü Wend ; Den Background wieder aus dem Speicher löschen FreeImage Background ; TEST Cls ; Hauptmenü Funktion Ende End Function ;-------------------------------------------------------------------------------------- ; NEUES SPIEL Function NewGame() ; Bildschirm löschen Cls ; Solange keine Taste gedrückt wird das Menü anzeigen While Not KeyHit(1) ; Erst mal temporär 2 Sekunden Verzögerung, dann zurück zum Hauptmenü Text 50,50,"NewGame [ESC] zurück" ; Tauscht die Bufferinhalte des Front- und Backbuffers Flip ; While Schleife Ende Wend ; TEST Cls ; Hauptmenü wieder aufrufen MainMenu() End Function ;-------------------------------------------------------------------------------------- ; SPIEL SPEICHERN Function SaveGame() ; Bildschirm löschen Cls ; Solange keine Taste gedrückt wird das Menü anzeigen While Not KeyHit(1) ; Erst mal temporär 2 Sekunden Verzögerung, dann zurück zum Hauptmenü Text 50,50,"SaveGame [ESC] zurück" ; Tauscht die Bufferinhalte des Front- und Backbuffers Flip ; While Schleife Ende Wend ; TEST Cls ; Hauptmenü wieder aufrufen MainMenu() End Function ;-------------------------------------------------------------------------------------- ; SPIEL LADEN Function LoadGame() ; Bildschirm löschen Cls ; Solange keine Taste gedrückt wird das Menü anzeigen While Not KeyHit(1) ; Erst mal temporär 2 Sekunden Verzögerung, dann zurück zum Hauptmenü Text 50,50,"LoadGame [ESC] zurück" ; Tauscht die Bufferinhalte des Front- und Backbuffers Flip ; While Schleife Ende Wend ; TEST Cls ; Hauptmenü wieder aufrufen MainMenu() End Function ;-------------------------------------------------------------------------------------- ; SPIEL HISTORIE Function History() ; Bildschirm löschen Cls ; Solange keine Taste gedrückt wird das Menü anzeigen While Not KeyHit(1) ; Erst mal temporär 2 Sekunden Verzögerung, dann zurück zum Hauptmenü Text 50,50,"History [ESC] zurück" ; Tauscht die Bufferinhalte des Front- und Backbuffers Flip ; While Schleife Ende Wend ; TEST Cls ; Hauptmenü wieder aufrufen MainMenu() End Function ;-------------------------------------------------------------------------------------- ; SPIEL CREDITS Function Credits() ; Bildschirm löschen Cls ; Hintergrund laden (original CreditsBG.jpg) CreditsBG = LoadImage ("Dat.003") ; Bilder anzeigen DrawBlock CreditsBG, 0, 0 ; Solange keine Taste gedrückt wird das Menü anzeigen While Not KeyHit(1) ; Titelrahmen in Blau Color 0, 0, 255 Rect 30,30,740,540,0 ; Textfarbe auf Gelb setzen Color 255, 255, 0 ; Erst mal temporär 2 Sekunden Verzögerung, dann zurück zum Hauptmenü Text 50,70,"Credits" ; Textfarbe auf Cyan Color 0, 255, 255 Text 50,110,"Dieses Spiel basiert auf dem original Spiel Hanse von Ralf" Text 50,130,"Glau und Bernd Westphal aus dem Jahr 1986." Text 50,170,"Es handelt sich hierbei um einen Nachbau (Remake) welches" Text 50,190,"in Blitz3D, BlitzBasic entwickelt wurde. Diese Version" Text 50,210,"ist bewusst im Retro-Look entwickelt wurden." Text 50,250,"Entwicklung: SM3D" Text 50,310,"Besonderer Dank geht an Mark Sibly für diese hervoragene" Text 50,330,"Programmiersprache. An Ralf Glau und Bernd Westphal für" Text 50,350,"das tolle Spiel Hanse." ; Textfarbe auf Gelb setzen Color 255, 255, 0 Text 50,450,"Zurück zum Hauptmenü [ESC]" ; Tauscht die Bufferinhalte des Front- und Backbuffers Flip ; While Schleife Ende Wend ; Den CreditsBG wieder aus dem Speicher löschen FreeImage CreditsBG ; TEST Cls ; Hauptmenü wieder aufrufen MainMenu() End Function ;====================================================================================== ; ; ToDo: ; ; !!!WICHTIG!!! - Den enormen Speicherverbrauch analysieren und beheben. ; Erklärung: Jedes mal wenn eine der Funktionen aufgerufen wird und das entsprechende ; Fenster neu gezeichent wir und man dann mit [ESC] wieder zurück springt ; ins Hauptmenü steigt der Speicherverbrauch im Task-Manager um ca. 2 MB ; ; - NEUES SPIEL ; - SPIEL SPEICHERN ; - SPIEL LADEN ; - HISTORY ; ; SPIEL ; ;====================================================================================== Dieser Code lässt sich so per Copy & Paste übernehmen, lediglich die Bilder müsten ersetzt werden. Ich würde auch die Exe (1,3 MB), den Quellcode (10 KB) und die drei benötigten Dateien (ca. 250 KB) hier hochladen, weiss jedoch nicht ob das geht. Ansonsten kann ich das Archiv auch gerne per Mail zur Verfügung stellen. Wie sieht man bei der gestarteten Exe was gemeint ist? Startet die Game.exe, macht den Taskmanger auf, sucht Euch die Game.exe, markiert diese einmal mit Linksklick, wechselt dann auf das Spiel zurück. Benutzt die Menüeinträge und verfolgt im Task-Manager den steigenden Verbrauch des Spieles. Mir ist unerklärlich wie so ein winziges Spiel so viel verbrauchen kann. Für Fragen stehe ich Euch gerne offen. Details: Programmiersprache / IDE : Blitz3D 1.106 Mein OS : Windows 7 64Bit (auf beiden PC's) MfG SM3D |
||
- Zuletzt bearbeitet von SM3D am Sa, Jun 02, 2012 1:25, insgesamt einmal bearbeitet
Seven |
Fr, Jun 01, 2012 22:52 Antworten mit Zitat |
|
---|---|---|
Ganz einfach; Du hast den bösen Fehler begangen und ein Bild in der Funktion "MainMenu"
geladen. Das Bild wird immer wieder beim Aufruf der Funktion geladen und landet im RAM. Man läd keine Bilder in Schleifen^^ |
||
Eingeproggt |
Fr, Jun 01, 2012 22:55 Antworten mit Zitat |
|
---|---|---|
Puh, der Code war nicht einfach zu verstehen. Trotz der exzessiven Verwendung von Kommentaren is die Geschichte sehr unübersichtlich. Was Seven da schreibt stimmt im Prinzip. Dass es sich um eine "Schleife" handelt in der du deine Bilder lädst muss man erstmal erkennen. Es ist mehr eine Art "Endlos-Rekursion". Da du aus der MainMenu jedesmal eine Funktion aufrufst und in der erneut das MainMenu. Könnte sein dass dir Return schon weiter hilft bei der Umstrukturierung des Programms. (Aus den "Hilfsfunktionen" einfach "rausspringen" anstatt jedesmal das MainMenu aufzurufen).
mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
SM3D |
Fr, Jun 01, 2012 22:57 Antworten mit Zitat |
|
---|---|---|
Ich habe den Fehler nun doch gefunden und behoben, jedoch bleibt ein Grundverbrauch von 40MB was ich viel zu hoch finde für so ein winziges Spiel, aber erst mal egal.
Die Lösung: - Drei globale Variablen für die drei Bilder gesetzt - Das laden der Bilder aus den Funstionen herausgenommen und oben im Splashscreen eingefügt Kann also wenn gewollt gerne gelöscht werden, kann es leider nicht selber. Es sei denn Ihr habt Verbesserungstipps für meinen Code. >>> Nachtrag : Ja Danke genau was Ihr schreibt habe ich auch bemerkt beim erneuten lesen und testen des Codes. Das mit dem Return werde ich gerne mal antesten, bzw. die Codestruktur versuchen besser aufzubauen. Jetzt bleibt nur noch die Frage warum das gestartete Spiel ganze 35MB verbrät, für was ? :) Das spiel beinhalten 3 Bilder von je 50-160 KB die und ein wenig Text + die Rahmen. MfG SM3D |
||
Seven |
Fr, Jun 01, 2012 23:05 Antworten mit Zitat |
|
---|---|---|
Also an sich ist es immer gut zu kommentieren, aber hier ist das schon massig.
Für Aussenstehende ist der Code nun schwer zu überblicken, weil eben alles kommentiert wurde und man nicht sofort sehen kann, wo das wesentliche gemacht wird. Ansonsten würde ich noch mal darüber nachdenken MainMenu() als Funktion beizubelassen. Für gewöhnlich hat man die Hauptschleife (in dem Fall ist das MainMenu() ) und baut sie dann größtenteils mit Funktionen aus. Zum EDIT: 12 MB kann man für BlitzBasic an sich abziehen. Der Rest... gehörte zu deinen Änderungen dazu, dass du das Laden des Bildes in "Credits" unterbindest? EDIT: Guuut, ich habe dein Programm nun laufen lassen und muss sagen, dass ich keine 35 MB bekomme, also nehme ich an, dass du noch irgendwo Bilder in Funktionen hast. |
||
- Zuletzt bearbeitet von Seven am Fr, Jun 01, 2012 23:22, insgesamt einmal bearbeitet
XeresModerator |
Fr, Jun 01, 2012 23:14 Antworten mit Zitat |
|
---|---|---|
Kommentare sind ja nicht falsch, aber...
Code: [AUSKLAPPEN] ; Tauscht die Bufferinhalte des Front- und Backbuffers
Ist das wirklich nötig? Was ein Befehl macht, ist jedem klar, der den Code liest. Warum man etwas bestimmtes macht, wäre viel interessanter.
Flip ; While Schleife Ende Wend Du kannst wunderbar mit einer Hauptschleife mit 1x Cls, Waittimer und Flip auskommen, wenn du den Programmteil mit einem Select Case Konstrukt ansteuerst: BlitzBasic: [AUSKLAPPEN] Const KEY_ESC=1Konstanten helfen auch, die Übersicht zu behalten. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
SM3D |
Fr, Jun 01, 2012 23:24 Antworten mit Zitat |
|
---|---|---|
Also jetzt hat und behält es konsequent 35 MB was ich für das bischen Programm immer noch für zu hoch halte.
Die hochtickenden 2MB waren aus den fehlerhaft gesetzten Bildladevorgängen in den Functionen. Dadurch kam es nach längeren switschen zwischen den Menüpunkten schnell zu 50-100 MB und mehr. Den Credits Hintergrund habe ich nicht unterbunden. Hier der Code mit weniger Kommentaren und den behobenen Fehlern Code: [AUSKLAPPEN] ; ; UNITS (Blibliotheken) ; Include "LogUnit.BB" ; GLOBALE KONSTANTE UND VARIABLEN Global DebugMode = 1 ; DebugModus ein = 1 / aus = 0 ; Global Logdatei ; Die Logdatei Global GameDate$ = "anno 1359" ; Das Spiel (ingame) Datum Global PlayerNumbers% = 1 ; Die Anzahl der gesamten Spieler Global Player$ = "Neuer Spieler" ; Der aktuell aktive Spieler Global Version$ = "V0.1" ; Spielversion Global Background ; Hintergrund vom Hauptmenu Global CreditsBG ; Hintergrund vom Creditsfenster Global Splash ; Der Splashscreen ;====================================================================================== ; ; MAIN ; INTRO Graphics 800, 600, 32, 2 Splash = LoadImage ("Dat.001") Background = LoadImage ("Dat.002") CreditsBG = LoadImage ("Dat.003") MaskImage Splash, 255, 0, 0 SetBuffer BackBuffer() DrawBlock Splash, 0, 0 Flip Delay 1000 ; <<<<< für die Entwicklung niedrig, oder deaktiviert FreeImage Splash MainMenu() ; = PROGRAMM ENDE = FreeImage Splash FreeImage CreditsBG FreeImage Background End ; FUNKTIONEN ; HAUPTMENÜ Function MainMenu() Cls DrawBlock Background, 0, 0 SetBuffer BackBuffer() While Not KeyHit(1) Color 0, 0, 255 Rect 30,30,740,25,0 Rect 30,57,740,486,0 Color 255, 255, 255 Text 50,35,"Hanse Remake Deluxe @@@ Hauptmenü @@@ " Color 255, 255, 0 Text 680,35, GameDate$ Color 255, 255, 0 Text 210,35, Version$ Color 0, 255, 255 Text 50,80,"Bitte wähle Deine gewünschte Option aus, indem Du die in den () stehenden Buchstaben" Text 50,100,"drückst." Text 50,140,"Spieler: " Color 255, 255, 0 ; <<< Gelb für den Spielernamen Text 120,140,Player$ Color 0, 255, 255 Text 50,200,"Neues Spiel (N)" Text 50,220,"Spiel speichern (S)" Text 50,240,"Spiel laden (L)" Text 50,280,"Historie (H)" Text 50,300,"Credits (C)" Text 50,320,"Beenden (B)" Color 0, 0, 255 Rect 30,545,740,25,0 Color 255, 255, 255 Text 50,550,"Copyrigt (C) 2012 by SM3D" ; Neues Spiel mit Taste (N) If KeyDown(49) = True Text 50, 360, "Neues Spiel wurde gewählt..." Delay 1000 NewGame() End If ; Spiel speichern mit Taste (S) If KeyDown(31) = True Text 50, 360, "Spiel speichern wurde gewählt..." Delay 1000 SaveGame() End If ; Spiel laden mit Taste (L) If KeyDown(38) = True Text 50, 360, "Spiel laden wurde gewählt..." Delay 1000 LoadGame() End If ; Historie mit Taste (H) If KeyDown(35) = True Text 50, 360, "Historie wurde gewählt..." Delay 1000 History() End If ; Credits mit Taste (C) If KeyDown(46) = True Text 50, 360, "Credits wurde gewählt..." Delay 1000 Credits() End If ; Beenden mit Taste (B) If KeyDown(48) = True Text 50, 360, "Beenden wurde gewählt... das Spiel wird beendet..." Delay 1000 End End If Flip Wend End Function ; NEUES SPIEL Function NewGame() Cls While Not KeyHit(1) Text 50,50,"NewGame [ESC] zurück" Flip Wend MainMenu() End Function ; SPIEL SPEICHERN Function SaveGame() Cls While Not KeyHit(1) Text 50,50,"SaveGame [ESC] zurück" Flip Wend MainMenu() End Function ; SPIEL LADEN Function LoadGame() Cls While Not KeyHit(1) Text 50,50,"LoadGame [ESC] zurück" Flip Wend MainMenu() End Function ; SPIEL HISTORIE Function History() Cls While Not KeyHit(1) Text 50,50,"History [ESC] zurück" Flip Wend MainMenu() End Function ; SPIEL CREDITS Function Credits() Cls DrawBlock CreditsBG, 0, 0 While Not KeyHit(1) Color 0, 0, 255 Rect 30,30,740,540,0 Color 255, 255, 0 Text 50,70,"Credits" Color 0, 255, 255 Text 50,110,"Dieses Spiel basiert auf dem original Spiel Hanse von Ralf" Text 50,130,"Glau und Bernd Westphal aus dem Jahr 1986." Text 50,170,"Es handelt sich hierbei um einen Nachbau (Remake) welches" Text 50,190,"in Blitz3D, BlitzBasic entwickelt wurde. Diese Version" Text 50,210,"ist bewusst im Retro-Look entwickelt wurden." Text 50,250,"Entwicklung: SM3D" Text 50,310,"Besonderer Dank geht an Mark Sibly für diese hervoragene" Text 50,330,"Programmiersprache. An Ralf Glau und Bernd Westphal für" Text 50,350,"das tolle Spiel Hanse." Color 255, 255, 0 Text 50,450,"Zurück zum Hauptmenü [ESC]" Flip Wend MainMenu() End Function MfG SM3D |
||
Seven |
Fr, Jun 01, 2012 23:35 Antworten mit Zitat |
|
---|---|---|
Das kann ich nicht ganz nachvollziehen. Ich bekomme nämlich blos ca. 14 MB mit deinem neuen Code
und ich habe alle Menüpunkte durchgewählt, wobei ich natührlich andere Bilder habe^^ |
||
XeresModerator |
Fr, Jun 01, 2012 23:37 Antworten mit Zitat |
|
---|---|---|
Das Menü fliegt dir irgendwann um die Ohren, da du immer nur neue Funktionen aufrufst, die alten aber nie wieder verlässt. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
skey-z |
Sa, Jun 02, 2012 0:07 Antworten mit Zitat |
|
---|---|---|
Nur mal ein Tipp zur strukturierung, ohne das ganze jetzt durchgelesen zu haben:
BlitzBasic: [AUSKLAPPEN]
Somit kannst du auch die Hauptdatei klein halten und die Übersichtlichkeit verbessern. Wobei bei heutigen Rechnern 35-40MB keine Probleme bereiten und gerade einmal 1,0-0,5% des Speichers ausmachen |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
SM3D |
Sa, Jun 02, 2012 0:29 Antworten mit Zitat |
|
---|---|---|
Ja die Codestrukturierung ist Mist, ich weiss, aber bei mir ergibt sich immer Chaos wenn das nicht will, ich bastel schon 2-3 Tage rum, weil ich nicht auf den Fehler gekommen war. Jedoch hätte ich gleich zu Beginn die Case Variante nehmen sollen.
Wieso beende ich die Functionen nicht ? Wenn ich die mit ESC verlassen springt der doch raus, oder seh ich da etwas falsch? Und zu den MB, auf meinem großen PC hat die Exe im Taskmanager komischer Weise zu Beginn auch nur 12 MB. Hier auf dem Notebook wie gesagt 35 MB. Die Bilder die ich original nutze sind : - Splash.jpg ( 130 KB ) - CreditsBG.jpg (160 KB ) - Background.jpg ( 50 KB ) Das mit dem GameStat finde ich eine gute Idee kenne ich so auch von C++ her. Und ja ich stimme zu das ist a) übersichtlicher b) kompackter. Gestehe ich bin ein schlechter Codedesigner :(. Ich werde das mal umbauen. Hier mal die Screens : und hier die verwendeten Grafiken: MfG SM3D |
||
- Zuletzt bearbeitet von SM3D am Sa, Jun 02, 2012 1:22, insgesamt einmal bearbeitet
XeresModerator |
Sa, Jun 02, 2012 0:54 Antworten mit Zitat |
|
---|---|---|
Die Funktion erreicht nie ihr Ende oder Return, stattdessen rufst du eine neue Instanz von MainMenu() auf (die ihrerseits nie zu einem Ende kommt).
3 Bilder, a 800x600, mit 4 byte pro Pixel =3x800x600x4 = ~5,5 MB im Speicher. Wie groß (oder klein) die Bilder komprimiert gespeichert werden, ist an der Stelle egal. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
SM3D |
Sa, Jun 02, 2012 0:56 Antworten mit Zitat |
|
---|---|---|
Das erklärt einiges, Danke Dir.
Das heisst hier ist maßgebend wie das Bild verarbeitet wird, nicht wie es für den Benutzer auf der Platte liegt, das hab ich natürlich völlig übersehen. MfG ps. Wäre dann gelöst, Danke Euch allen für die prompte Hilfe |
||
Übersicht BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group