vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
SpaceShooter - 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.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
SpaceShooter - Bewegung sehr abgehackt1.288xy_keineahnung14.07.09 16:03
Re: SpaceShooter - Bewegung sehr abgehackt670Maas14.07.09 16:12
Re: SpaceShooter - Bewegung sehr abgehackt732ModeratorDaveS14.07.09 16:18
Re: SpaceShooter - Bewegung sehr abgehackt614xy_keineahnung14.07.09 19:50

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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