| |

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 |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP! Unser Nr. 1 
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere 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
|
|