Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: tomkat en 23 Noviembre 2008, 01:32 AM

Título: funcion eliminar de Space Invaders
Publicado por: 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..... ;)
Título: Re: funcion eliminar de Space Invaders
Publicado por: BlackZeroX en 23 Noviembre 2008, 01:57 AM
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

Título: Re: funcion eliminar de Space Invaders
Publicado por: BlackZeroX en 23 Noviembre 2008, 02:26 AM
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
Título: Re: funcion eliminar de Space Invaders
Publicado por: seba123neo en 23 Noviembre 2008, 04:05 AM
digamos que ni idea como es el juego ¿no?  :¬¬
Título: Re: funcion eliminar de Space Invaders
Publicado por: BlackZeroX en 23 Noviembre 2008, 05:41 AM
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?
Título: Re: funcion eliminar de Space Invaders
Publicado por: Sin Nick xD en 23 Noviembre 2008, 06:00 AM
é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

Título: Re: funcion eliminar de Space Invaders
Publicado por: AxXioma en 23 Noviembre 2008, 14:53 PM
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.
Título: Re: funcion eliminar de Space Invaders
Publicado por: seba123neo en 23 Noviembre 2008, 15:23 PM
perdona ░▒▓BlackZeroҖ▓▒░ no me referia a vos cuando dije que no tenia idea...
Título: Re: funcion eliminar de Space Invaders
Publicado por: ~~ en 23 Noviembre 2008, 17:49 PM
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.