Foro de elhacker.net

Programación => 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
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
  1. Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long
  2.  


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
  1. Option Explicit
  2. Private Type RECT
  3.    Left As Long
  4.    Top As Long
  5.    Right As Long
  6.    Bottom As Long
  7. End Type
  8. Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long
  9. Dim RectR As RECT
  10. Dim CursorR As RECT
  11. Dim PicR As RECT
  12.  
  13. Private Sub Form_Load()
  14.    AutoRedraw = True
  15.    Me.ScaleMode = 3 ' escala en pixeles
  16.    With PicR
  17.        .Top = 100
  18.        .Left = 100
  19.        .Bottom = .Top + 20
  20.        .Right = .Left + 20
  21.    End With
  22.    DrawSquallInObject Me, True, PicR, vbRed
  23. End Sub
  24.  
  25. Public Function CursorMove(ByVal X As Single, ByVal Y As Single)
  26.    With CursorR
  27.        .Top = Y
  28.        .Left = X
  29.        .Bottom = .Top + 1
  30.        .Right = .Left + 1
  31.    End With
  32.    Caption = IntersectRect(RectR, CursorR, PicR)
  33. End Function
  34.  
  35. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  36.    CursorMove X, Y
  37. End Sub
  38.  
  39. Private Function DrawSquallInObject(obj As Object, clear As Boolean, RectSource As RECT, ColorLines As Long) As Long
  40. On Error GoTo errores
  41.    Dim linea As Long
  42.    linea = ColorLines
  43.    If clear Then obj.Cls
  44.    obj.Line (RectSource.Left, RectSource.Top)-(RectSource.Left, RectSource.Bottom), linea '(0) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
  45.    obj.Line (RectSource.Left, RectSource.Top)-(RectSource.Right, RectSource.Top), linea '(1) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
  46.    obj.Line (RectSource.Right, RectSource.Bottom)-(RectSource.Right, RectSource.Top), linea '(2) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
  47.    obj.Line (RectSource.Right, RectSource.Bottom)-(RectSource.Left, RectSource.Bottom), linea '(3) 'RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
  48.    DrawSquallInObject = True
  49.    Exit Function
  50. errores:
  51.    DrawSquallInObject = False
  52.    Err.clear
  53. End Function
  54.  

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
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...

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.