vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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

Visual-Basic Einsteiger
Collisionserkennung ala VB@RCHIV 
Autor: unbekannt
Datum: 24.03.02 19:37

Hi MasterM,

so, da ist sie die Klasse clsWall!

Es folgt gleich weiteres.

In das Projekt ein KLassenmodul einfügen, die Klasse: clsWall nennen, diesen Code einfügen, die Class ist fertig.

Eigenschaften:

Target = das gerade bewegte Object
Wall = die Mauer, die die Klasse repräsentiert
WallID = Eine Nummer, die die Wall erhalten wird
Collision = Wahr, wenn Collision, False wenn nein

Methode:

MoveTarget = hier wird die Wall bei jedem Spielzug angesprochen .

Leider blieb von Deinem Code gar nichts übrig, weil die Collisionserkennung rein mit WINAPI gelöst ist.

<code>
Private Declare Function GetWindowRect Lib "user32" _
   (ByVal hWnd As Long, lpRect As RECT) As Long
 
Private Declare Function CreateRectRgnIndirect Lib "gdi32" _
   (lpRect As RECT) As Long
 
Private Declare Function RectInRegion Lib "gdi32" _
   (ByVal hRgn As Long, lpRect As RECT) As Long
 
Private Declare Function SetRect Lib "user32" _
   (lpRect As RECT, ByVal X1 As Long, _
    ByVal Y1 As Long, ByVal X2 As Long, _
    ByVal Y2 As Long) As Long
 
Private Declare Function DeleteObject Lib "gdi32" _
   (ByVal hObject As Long) As Long
 
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
 
Private tmpWall As Object
Private tmpTarget As Object
Private tmpWallID As Long
Private tmpColl As Boolean
 
'Objekt Wall
Public Property Get Wall() As Object
   Set Wall = tmpWall
End Property
Public Property Set Wall(ByRef oWall As Object)
   Set tmpWall = oWall
End Property
 
'Objekt Target
Public Property Get Target() As Object
   Set Target = tmpTarget
End Property
Public Property Set Target(ByRef oTarget As Object)
   Set tmpTarget = oTarget
End Property
 
Public Sub MoveTarget()
   Dim tRect As RECT
   Dim wRect As RECT
   Dim hRgn As Long
   tmpColl = False
 
   GetWindowRect tmpTarget.hWnd, tRect
   GetWindowRect tmpWall.hWnd, wRect
 
   hRgn = CreateRectRgnIndirect(wRect)
 
   If RectInRegion(hRgn, tRect) <> 0 Then
      tmpColl = True
   End If
 
   DeleteObject hRgn
End Sub
 
Public Property Get WallID() As Long
    WallID = tmpWallID
End Property
 
Public Property Let WallID(ByVal vNewValue As Long)
    tmpWallID = vNewValue
End Property
 
Public Property Get Collision() As Boolean
   Collision = tmpColl
End Property</code>
bis gleich,

cu
Lordchen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
!!! HILFE !!!59MasterM24.03.02 13:28
Re: !!! HILFE !!!318unbekannt24.03.02 13:49
Re: !!! HILFE !!!45MasterM24.03.02 14:47
Re: !!! HILFE !!!497unbekannt24.03.02 15:01
!!! OK !!!!28MasterM24.03.02 15:06
Collisionserkennung ala VB@RCHIV587unbekannt24.03.02 19:37
Und so gehts weiter:297unbekannt24.03.02 20:07
Tjaja, das ist ooP (oT)282unbekannt24.03.02 20:19
Ups Formatierung verrutscht 325unbekannt24.03.02 20:33
!!! DANKE !!!28MasterM24.03.02 20:53
Ups, aber nicht die Class:clsWall305unbekannt24.03.02 21:58
Na bitte: So ein Umsetzung von RectInRegion hat nicht mal Al...362unbekannt24.03.02 22:06

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