funcion eliminar de Space Invaders

Iniciado por tomkat, 23 Noviembre 2008, 01:32 AM

0 Miembros y 1 Visitante están viendo este tema.

tomkat

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..... ;)
el placer mas grande es el de la sabiduria->Platon

BlackZeroX

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

Código (vb) [Seleccionar]

Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long

The Dark Shadow is my passion.

BlackZeroX

mmm bueno aca te dejo un ejemplo:

solo copealo y pegalo en un nuevo formulario.¡!

Código (vb) [Seleccionar]

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
The Dark Shadow is my passion.

seba123neo

digamos que ni idea como es el juego ¿no?  :¬¬
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

BlackZeroX

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?
The Dark Shadow is my passion.

Sin Nick xD

Yo solo creería en un Dios que supiese bailar.

AxXioma

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.




.::Cuanto mas conocimiento adquieres, más te das cuenta del que hay a tu alrededor::.

seba123neo

perdona ░▒▓BlackZeroҖ▓▒░ no me referia a vos cuando dije que no tenia idea...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

~~

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.