Zitat von
devnull:
Kann man das so machen oder gibts da ne andere Lösung (ich hab da nich voll durchgeblickt, und verschiebe nur das
raumschiff mittels bitblt)
In welche Richtung anders?
Bei Programmieren wirst du fast immer mehr als eine Lösung finden
Du kannst beispielsweise auch jeden Planeten anstatt der Draw mit BitBlt blitten, dann wäre das:
BitBlt(Form1.Paintbox1.Canvas.Handle, i*22, o*22, Bmp.Width, Bmp.Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
Der Geschwindigkeitszuwachs dürfte je nach Anzahl der Planeten gerade noch meßbar sein...
Zitat:
Ich hab mal die Oberfläche angehängt. Ich glaube, es ist besser, wenn nur der Sichtbereich bewegt wird, wenn das Raumschiff sich in den Bildschirmrand-Bereich begibt; da ansonsten der Anflug auf einen Planeten schwierig wird...
Nein, wieso? Du musst nur als Zielpunkt des jeweiligen Zuges auch die absolute Position auf dem Spielfeld und nicht die auf dem Sichtbereich wählen. Wenn sich das Raumschiff unbedingt frei bewegen muss (und nicht in einem 22*22-Raster), kannst du die Positionsangabe auch aufsplitten, einmal in das Feld im Raster und einmal in die relative Position zur linken, oberen Ecke des Rasters, sodaß du zwei Koordinaten hast, die dann dann beim Zeichnen zusammenfügen kannst wie bei den Planeten.