Ver aquí para Juegos con colisiones
Publicado por Adán (79 intervenciones) el 29/05/2001 06:03:17
Es más fácil si utilizas API's, puedes hacerlo funcionar hasta con triángulos y figuras complejas:
'En un módulo coloca esto:
Type POINT_TYPE
X As Long
Y As Long
End Type
Declare Function PtInRegion Lib "gdi32.dll" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long
Declare Function CreatePolygonRgn Lib "gdi32.dll" (lpPoint As POINT_TYPE, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
'Ahora coloca esto en tu form:
Const ALTERNATE = 1
Dim hRgn As Long
Dim estadentro As Long
Dim retval As Long
Dim Puntos() As POINT_TYPE
Dim NumPts
Sub Form_Load()
Puntos(0).X=100
Puntos(0).Y=100
Puntos(1).X=200
Puntos(1).Y=100
Puntos(2).X=200
Puntos(2).X=200
Puntos(3).X=100
Puntos(3).X=200
NumPts = UBound(Puntos)
'Creas el polígono
hRgn = CreatePolygonRgn(Puntos(0), NumPts, ALTERNATE)
End Sub
estadentro = PtInRegion(hRgn, X, Y) '¿el punto esta dentro del poligono?
If estadentro Then
..............'todo lo que tú quieras: como detener el incremento en X, es decir el movimiento horizontal
.................
End If
Private Sub Form_Unload(Cancel As Integer)
retval = DeleteObject(hRgn)
End Sub
...Pero si quieres juegos buenos con poca programada, usa Div Games Studio o Dark Basic; pero si aún no te desanimas, vas a tener que usar puras API's y si quieres algo mejor (3D), DirectX.
Suerte
'En un módulo coloca esto:
Type POINT_TYPE
X As Long
Y As Long
End Type
Declare Function PtInRegion Lib "gdi32.dll" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long
Declare Function CreatePolygonRgn Lib "gdi32.dll" (lpPoint As POINT_TYPE, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
'Ahora coloca esto en tu form:
Const ALTERNATE = 1
Dim hRgn As Long
Dim estadentro As Long
Dim retval As Long
Dim Puntos() As POINT_TYPE
Dim NumPts
Sub Form_Load()
Puntos(0).X=100
Puntos(0).Y=100
Puntos(1).X=200
Puntos(1).Y=100
Puntos(2).X=200
Puntos(2).X=200
Puntos(3).X=100
Puntos(3).X=200
NumPts = UBound(Puntos)
'Creas el polígono
hRgn = CreatePolygonRgn(Puntos(0), NumPts, ALTERNATE)
End Sub
estadentro = PtInRegion(hRgn, X, Y) '¿el punto esta dentro del poligono?
If estadentro Then
..............'todo lo que tú quieras: como detener el incremento en X, es decir el movimiento horizontal
.................
End If
Private Sub Form_Unload(Cancel As Integer)
retval = DeleteObject(hRgn)
End Sub
...Pero si quieres juegos buenos con poca programada, usa Div Games Studio o Dark Basic; pero si aún no te desanimas, vas a tener que usar puras API's y si quieres algo mejor (3D), DirectX.
Suerte
Valora esta pregunta


0