Hallo,
Ich schreibe derzeit ein Programm, indem man ein Raumschiff steuert, dass andere gegnerische Raumschiffe abschießen muss. Dabei erzeuge ich bei jedem Klick ein Image, dass meinen Laserschuss symbolisiert und dieser wird durch einen Timer im 30ms Takt (damit die Laserbewegung flüssig wird) nach oben verschoben. Wenn der Laser einen Gegner trifft, verliert dieser Leben und wenn das Leben des Gegners <= 0 ist, wird dieser zerstört. Die Gegner wiederum schießen ebenfalls zufällig Laser, denen ich dann ausweichen muss.
Soweit so gut, das Grundkonzept habe ich programmiert und es klappt auch, bis auf einige Bugs, ganz gut. Allerdings verbraucht das Programm
viel zu viel Prozessorleistung. Ich komme sehr schnell an den Punkt, wo das Programm einen Kern meines Prozessors komplett auslastet und die Laser dann nur noch extrem langsam fliegen, da die verschiedenen Timer die 30ms nicht mehr schaffen.
Zudem kommt noch ein weiteres Problem. Sobald ich doublebuffered auf true setzt, um ein nerviges geflimmer zu vermeiden, verbraucht das Programm noch mehr Leistung und ist entgültig unspielbar. Gibt es dazu ressourcensparende Alternativen?
-> In der Version im Anhang ist doublebuffered=false, trotzdem laggt es ab einem gewissem Punkt.
Ansonsten weiß ich selber nicht, wie ich mein Programm "schneller" machen könnte. Ich schließe aber nicht aus, dass es dazu einige einfache Möglichkeiten gibt, die mir einfach nicht einfallen. Ich würde mich sehr freuen, wenn sich einige von euch das Programm mal ansehen könnten( -> Programm kann leider nicht in den Anhang, da die Zip zu groß ist (durch einige Bilder), deswegen gibt es das Programm
hier), sobald sie Zeit haben. Ich freue mich natürlich auch über Links, wo ressourcensparendes Programmieren relativ einfach erklärt wird!
Das Programm wurde mit Delphi 6 geschrieben.
Gruß,
Astobix