tengo q hacer un juego q es Space Invaders se trata de una nave que mata 3 tipos de aliens antes q lleguen a la altura de la nave, ya he dubujado en el canvas todos los objetos y la nave q incluso tambien dispara ¿pero como hago para que cuando la bala llegue a la posicion del alien este se elimine,¿en q evento,y si son clases diferentes como relaciono las posiciones , una ayudadita plissss xevere..... ;)
Cita de: tomkat en 23 Noviembre 2008, 01:32 AM
tengo q hacer un juego q es Space Invaders se trata de una nave que mata 3 tipos de aliens antes q lleguen a la altura de la nave, ya he dubujado en el canvas todos los objetos y la nave q incluso tambien dispara ¿pero como hago para que cuando la bala llegue a la posicion del alien este se elimine,¿en q evento,y si son clases diferentes como relaciono las posiciones , una ayudadita plissss xevere..... ;)
si los pones en un picturebox o no se como este tu juego usa esta api para detectar coliciones y lo demas es a tu ingenio
Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long
mmm bueno aca te dejo un ejemplo:
solo copealo y pegalo en un nuevo formulario.¡!
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long
Dim RectR As RECT
Dim CursorR As RECT
Dim PicR As RECT
Private Sub Form_Load()
AutoRedraw = True
Me.ScaleMode = 3 ' escala en pixeles
With PicR
.Top = 100
.Left = 100
.Bottom = .Top + 20
.Right = .Left + 20
End With
DrawSquallInObject Me, True, PicR, vbRed
End Sub
Public Function CursorMove(ByVal X As Single, ByVal Y As Single)
With CursorR
.Top = Y
.Left = X
.Bottom = .Top + 1
.Right = .Left + 1
End With
Caption = IntersectRect(RectR, CursorR, PicR)
End Function
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
CursorMove X, Y
End Sub
Private Function DrawSquallInObject(obj As Object, clear As Boolean, RectSource As RECT, ColorLines As Long) As Long
On Error GoTo errores
Dim linea As Long
linea = ColorLines
If clear Then obj.Cls
obj.Line (RectSource.Left, RectSource.Top)-(RectSource.Left, RectSource.Bottom), linea '(0) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
obj.Line (RectSource.Left, RectSource.Top)-(RectSource.Right, RectSource.Top), linea '(1) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
obj.Line (RectSource.Right, RectSource.Bottom)-(RectSource.Right, RectSource.Top), linea '(2) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
obj.Line (RectSource.Right, RectSource.Bottom)-(RectSource.Left, RectSource.Bottom), linea '(3) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
DrawSquallInObject = True
Exit Function
errores:
DrawSquallInObject = False
Err.clear
End Function
Saludos
digamos que ni idea como es el juego ¿no? :¬¬
jaja lo que entendi es que es algo asi como el juego de tetris ese que debes eliminar los cuadritos antes de que lleguen a la linea de la nave ja o como el juego de Galaxi solo que las naves van cayendo hasta la nave que se controla eso creo o no tomkat?
échale un ojo a esto esta en java pero quizá te sirva de algo
http://foro.elhacker.net/java/ejercicios_open_source-t220190.0.html
saludos
Cita de: tomkat en 23 Noviembre 2008, 01:32 AM
tengo q hacer un juego q es Space Invaders se trata de una nave que mata 3 tipos de aliens antes q lleguen a la altura de la nave, ya he dubujado en el canvas todos los objetos y la nave q incluso tambien dispara ¿pero como hago para que cuando la bala llegue a la posicion del alien este se elimine,¿en q evento,y si son clases diferentes como relaciono las posiciones , una ayudadita plissss xevere..... ;)
No se puede postear el mismo post mas de una vez. Ya te respondí en el otro.
Leete las reglas.
perdona ░▒▓BlackZeroҖ▓▒░ no me referia a vos cuando dije que no tenia idea...
O lo preguntas en el foro de C o lo preguntas aquí, pero no lo preguntes en los dos :P En que lenguaje estás programando? aunque básicamente ya te han dicho la solución...
Cita de: SλrκΥs en 23 Noviembre 2008, 14:26 PM
Supongo que cada enemigo será un Sprite guardado en un arreglo. Tienes que insertar una condición que verifique si la bala ha llegado a los enemigos, y si llega que se borre la unidad en la que está el enemigo, lo cual mostraría su coordenada vacía.
Para hacer lo que te estoy intentando explicar, hay algunos algoritmos de choques de sprites, te dejo aquí uno que creo que es bastante útil:
http://softwarelibre.uca.es/wikijuegos/Colisiones
Saludos.