| |

VB.NET - Ein- und UmsteigerSpaceShooter - Bewegung sehr abgehackt | |  | Autor: xy_keineahnung | Datum: 14.07.09 16:03 |
| Hi Leute!
Ich brauche wieder mal eure Hilfe. Im Moment versuche ich aus reiner Langeweile in VB.NET einen einfachen 2D-SpaceShooter zu programmieren, den ich vorher schonmal in C++ geschrieben habe.
Mein Problem ist, dass sich die Objekte nicht so schön bewegen. Wenn ich den Timer auf wenige ms stelle und dafür die Objekte um weniger Pixel bei jedem Tick verschiebe, flackern die Objekte etwas, weil sie immer neu gezeichnet werden müssen. Wenn ich umgekehrt den Timer hochstelle und dafür die Objekte um mehr Pixel verschiebe, sieht die Bewegung aus naheliegenden Gründen auch nicht so toll aus.
Und dabei ist das im Moment noch das absolute Grundgerüst! Ich habe weder Schüsse eingebaut, noch unterschiedliche Bilder, um die Kometen und das Raumschiff bei der Bewegung realistischer zu machen. Irgendwie hat es ja auch jemand geschafft, CounterStrike etc. ohne flackern zu programmieren.
Gibt es eine Möglichkeit, wie ich den Timer so niedrig stellen kann, dass die Bewegung schön fließend aussieht und gleichzeitig nichts flackert? Im Moment habe ich alles in PictureBoxen. Ich habe gehört, es gibt auch eine Möglichkeit, irgendwie alles in eine Picturebox zu zeichnen. Würde das helfen?
Zur Info:
- 15 Instanzen der Klasse "komet"
- obige Klase erschafft 15 PictureBox 60x60px für die Kometen
- 1 Picturebox 80x100px für das Raumschiff
- Timer Interval 50
- bei jedem Tick werden die Kometen um 5px nach unten und das Raumschiff ggf. um 7 px verschoben
und hier nochmal die Klasse komet:
Public Class komet
Dim bild As PictureBox
Public Sub neueinrichten() 'wird ausgelöst, wenn das Bild am unteren Rand
' verschwindet
Randomize()
'koordinaten zufällig am oberen Rand setzen, nur so, dass das Bild ganz
' zu sehen ist
bild.Location = New Point(Int(Rnd() * (Form1.Width - bild.Width)), 0)
'Bild setzen
bild.Image = Image.FromFile("C:\ARP\kometenkämpfer2\komet.jpg")
'Größe auf Autosize
bild.SizeMode = PictureBoxSizeMode.AutoSize
End Sub
Public Sub bewegen() 'Komet um eine Einheit bewegen - mit Kollisionsabfrage
bild.Top += 5
If bild.Top > Form1.Height Then
neueinrichten()
End If
'Kollisionsabfrage mit Form1.Picturebox1
If ((bild.Left > Form1.PictureBox1.Left And bild.Left < _
Form1.PictureBox1.Right) Or (bild.Right > Form1.PictureBox1.Left _
And bild.Right < Form1.PictureBox1.Right)) And ((bild.Top > _
Form1.PictureBox1.Top And bild.Top < Form1.PictureBox1.Bottom) Or ( _
bild.Bottom > Form1.PictureBox1.Top And bild.Bottom < _
Form1.PictureBox1.Bottom)) Then
Form1.getroffen() 'getroffen-Funktion auslösen
End If
End Sub
Sub New()
bild = New PictureBox()
neueinrichten()
Form1.Controls.Add(bild)
bild.Show()
End Sub Bin für alle Anregungen dankbar,
mfg
Beitrag wurde zuletzt am 14.07.09 um 16:04:02 editiert. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|