VB 5/6-Tipp 0464: Verzögerte Mausverfolgung und Tastatursteuerung
von Gregor Wegberg
Beschreibung
Ein Shape kann mit der Maus an einen Punkt bewegt werden. Dies geschieht weich. Genauso auch mit der Tastatur über die Pfeiltasten. Ideal als Grundlage für einfache Spiele.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '----------- Anfang Projektdatei MausTastatur.vbp ----------- '------ Anfang Formular "Form1" alias MausTastatur.frm ------ ' Steuerelement: Timersteuerelement "Timer1" ' Steuerelement: Figur-Steuerelement "Spieler" 'egoweb@swissonline.ch Option Explicit Dim XA As Long Dim YA As Long Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single) XA = x 'Koordinaten des Mausklicks auslesen YA = Y End Sub Private Sub Timer1_Timer() 'Bewegung der Spielfigur Static x As Long, Y As Long Static KeyPressedX As Boolean, KeyPressedY As Boolean Static KeyPressedXDelay As Long, KeyPressedYDelay As Long If KeyPressedXDelay <= 0 Then KeyPressedX = False KeyPressedXDelay = 100 End If KeyPressedXDelay = KeyPressedXDelay - Timer1.Interval If KeyPressedYDelay <= 0 Then KeyPressedY = False KeyPressedYDelay = 100 End If KeyPressedYDelay = KeyPressedYDelay - Timer1.Interval If GetAsyncKeyState(vbKeyLeft) Then If Not KeyPressedX Then XA = XA - 25 KeyPressedX = True ElseIf GetAsyncKeyState(vbKeyRight) Then If Not KeyPressedX Then XA = XA + 25 KeyPressedX = True Else KeyPressedX = False End If If GetAsyncKeyState(vbKeyUp) Then If Not KeyPressedY Then YA = YA - 25 KeyPressedY = True ElseIf GetAsyncKeyState(vbKeyDown) Then If Not KeyPressedY Then YA = YA + 25 KeyPressedY = True Else KeyPressedY = False End If If x <> XA Then If Abs(XA - x) < 5 Then x = XA x = x + (XA - x) * 0.25 End If If Y <> YA Then If Abs(YA - Y) < 5 Then Y = YA Y = Y + (YA - Y) * 0.25 End If ' Me.Cls ' Me.PSet (XA, YA), vbRed If Spieler.Left <> x Or Spieler.Top <> Y Then Spieler.Left = x - Spieler.Width / 2 'Mittig zentrieren... (auskommentiert) Spieler.Top = Y - Spieler.Height / 2 End If End Sub '------- Ende Formular "Form1" alias MausTastatur.frm ------- '------------ Ende Projektdatei MausTastatur.vbp ------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von PowerBauer am 18.09.2007 um 15:40
Der Code funktioniert im Prinzip - mir ist nur nicht klar, warum die Bewegung nach links schneller verläuft als nach rechts - oder ist das nur bei mir so?
Grüße
PB