Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Hola, me presento yo y mis preguntas :D

Iniciado por ArrayDude, 27 de Marzo de 2007, 05:08:22 AM

« anterior - próximo »

ArrayDude

Hola, Primero me queria presentar.
Mi nombre es nahuel y bueno se programar en varios lenguajes pero VB es uno que nunca termino de acoplarme bien.

Hace ya un tiempo hice yo un juego en vb de un autito , bastante simplon(mi primer juego).
Luego de que lo empeze encontre esta libreria, gracias a ella se me simplificaron un par de pasos,tales como reproduccion de sonidos y alguna que otra cosa igual no la explote al maximo es mas creo que casi nada xD.


Lo que queria saber, es si es que hay algun juego o algun opensource para ver como es bien el manejo de esta magnifica libreria o en su defecto algunos tutoriales como para hacerse algo lindo ^^ y aprender, gracias.
nly a simple dude

kaeris

Cuando instalas la dx_lib32 te trae una documentacion, ahi te explica que es cada funcion o procedimiento del mismo, tambien te trae ejemplos muy utiles

[EX3]

Hace unos meses escribi un pequeño ejemplo inacabado de un sencillo matamarcianos con dx_lib32 que quiero mejorar para incluirlo en la proxima release de la libreria. Bajatelo y echale un vistazo y me cuentas:

Matamarcianos.zip (140 Kb)

No es la perfeccion en cuanto a programacion pero al menos ilustra mejor el escenario de dx_lib32 a la hora de desarrollar con ella que los propios tutoriales.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

ArrayDude

nly a simple dude

tewe76

Como nadie lo dice, tengo que ser yo el malo de la película ;) :
ArrayDude, no se permiten imágenes en las firmas...
Tewe
www.TAPAZAPA.com : Funny and easy to play games for all ages! - Fairy Match - Brain Crash
www.LaRebelionDelBiberon.com : Experiencias de unos padres primerizos

[EX3]

Cita de: "tewe76"Como nadie lo dice, tengo que ser yo el malo de la película ;) :
ArrayDude, no se permiten imágenes en las firmas...
Te me adelantastes tewe, ya no le mando el privado pues :P
Cita de: "[url=http://www.stratos-ad.com/forums3/viewtopic.php?t=793SOBRE EL FORO Y SUS REGLAS (Obligada lectura)[/url]"]SOBRE LOS AVATARES Y LAS FIRMAS
- Los avatares externos no podran exceder el tamaño máximo (100x100 píxels)
- Un avatar externo no puede tardar mas de 5 segundos en cargar (básicamente esto es para prevenir avatares que esten en servers 'malos' y retrasen la carga de la pagina)
- La firma NO puede contener imagenes de ningun tipo. Si se permite en cambio la publicidad personal en los mismos.
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

ArrayDude

Perdón ya la saco.
Con respecto a la lib :P

Hice lo siguiente:

En el Form_Main:
Public m_Input As dx_Input_Class    ' Objeto que hace referencia a la clase de lectura de perifericos.
Dim Ok As Boolean
Dim BackGround As Long
Dim Arriba As Long
Dim Abajo As Long
Dim Izquierda As Long
Dim Derecha As Long
Dim Playerz As Long
Dim frm_main As Form1


Private Sub Form_Load()
Me.Show ' Forzamos a que se muestre la ventana.
   
   ' Creamos los objetos de dx_lib32:
   Set m_Gfx = New dx_GFX_Class
   Set m_Input = New dx_Input_Class
   
    'Inicializamos los objetos:
   Call m_Gfx.Init(Me.hWnd, 309, 310, 32, True, False, False, 60)
   Call m_Input.Init(Me.hWnd)
   
BackGround = m_Gfx.MAP_Load(App.Path & "\Grafico\fondo.jpg", 0, True)
Arriba = m_Gfx.MAP_Load(App.Path & "\Grafico\arriba.bmp", m_Gfx.ARGB_Set(100, 0, 0, 0), True)
Abajo = m_Gfx.MAP_Load(App.Path & "\Grafico\abajo.bmp", m_Gfx.ARGB_Set(100, 0, 0, 0), True)
Izquierda = m_Gfx.MAP_Load(App.Path & "\Grafico\izquierda.bmp", m_Gfx.ARGB_Set(100, 0, 0, 0), True)
Derecha = m_Gfx.MAP_Load(App.Path & "\Grafico\derecha.bmp", m_Gfx.ARGB_Set(100, 0, 0, 0), True)

Ok = True

Do While Ok
If Not Player Is Nothing Then Call Player.Update
Call m_Gfx.DRAW_Map(BackGround, 0, 0, 0, 0, 0)
   
   If Not Player Is Nothing Then Call Player.Draw
   
   'Ejecutamos las llamadas de la clase grafica:
   Call m_Gfx.Frame(0, 60)
   
   DoEvents
Loop
'Descargamos el grafico de la memoria:
Call m_Gfx.MAP_Unload(BackGround)
Call m_Gfx.MAP_Unload(Arriba)
Call m_Gfx.MAP_Unload(Abajo)
Call m_Gfx.MAP_Unload(Izquierda)
Call m_Gfx.MAP_Unload(Derecha)
'Terminamos la ejecucion de la clase:
Call m_Gfx.Terminate

'Destruimos la instancia de la clase:
Set m_Gfx = Nothing
End Sub


Y en el módulo de clase

Option Explicit

' Define la posicion y el area que ocupa el objeto en pantalla:
Public X As Long, Y As Long, Width As Long, Height As Long

' Constructor de la clase:
Private Sub Class_Initialize()
   ' Posicionamos la entidad en pantalla:
   X = Form1.m_Gfx.Screen.Width / 2
   Y = Form1.m_Gfx.Screen.Height - 48
   
   Dim inf As GFX_Info
   Call Form1.m_Gfx.MAP_GetInfo(Form1.gfx_Player, inf)
   Width = inf.Image_Width
   Height = inf.Image_Height
   
End Sub

' Destructor de la clase:
Private Sub Class_Terminate()
   
   
End Sub

' Actualiza la logica del objeto:
Public Sub Update()
   
   ' Si mantenemos pulsada la tecla flecha izquierda moveremos en esa direccion la entidad:
   If Form1.m_Input.Key(Key_Left) Then
       Form1.Playerz = Izquierda
       X = X - 10
       
       If X < 10 Then X = 10
   
   ' Si mantenemos pulsada la tecla flecha derecha moveremos en esa direccion la entidad:
   ElseIf Form1.m_Input.Key(Key_Right) Then
       Form1.Playerz = Derecha
       X = X + 10
       
       If X > Form1.m_Gfx.Screen.Width - 10 Then X = Form1.m_Gfx.Screen.Width - 10
   
   End If
       
End Sub

' Dibuja el objeto:
Public Sub Draw()
   Call Form1.m_Gfx.DRAW_MapEx(Form1.Playerz, X, Y, 0, 0, 0, 0, Blendop_Color, &HFFFFFFFF, Mirror_None, Filter_Bilinear, True)
   
   ' Descomenta esta linea para poder ver el area de colision del objeto.
   ' Podras comprobar que el area es altearada respecto al espacio real que ocupa la imagen
   ' para que la colision de los disparos con las naves evite ser en zonas vacias de la imagen:
   'Call Form1.m_Gfx.DRAW_Box(X - (Me.Width / 2), Y - (Height / 2), X + (Me.Width / 2), Y + (Height / 2), 0, -1)
   
End Sub

Lo hice ayudandome con lo que me pasaste exe.
Ya se que hice un quilombo y cualquier cosa, pero bueno recien la comienzo a utilizar.

Queria saber por que cuando muevo el grafico No aparece.

Me parece que el problema es que el gráfico se esta dibujando debajo del background :(
nly a simple dude

[EX3]

Fijate en el codigo del formulario, no has declarado ningun objeto de la clase Player_Class (que se supone que sera el modulo clase que has implementado) por lo tanto no existe el jugador y por lo tanto no se ejecuta su codigo en el bucle. Si el objeto no esta inicializado su valor es igual a Nothing, por eso el "If Not Player Is Nothing Then Call Player.Draw" que viene a decir que si no se creo el objeto no se llama a su funcion Draw(), lo que en caso contrario provocaria un error.

Fijate bien en el codigo del matamarcianos como se crean tanto el jugador como los enemigos y los disparos a partir de sus respectivas clases (busca las sentencias Set <objeto> = New <clase>). Es similar a lo que seria programacion orientada a objetos dado que Visual Basic 6.0 no soporta esta filosofia por completo. Si te fijas en el matamarcianos se crean 3 enemigos en base a la clase Enemy_Class, y los disparos se crean en base a la clase Shoot_Class. Un solo modulo clase varios objetos que usan el codigo de esa clase.

Esto no solo resulta comodo de implementar dado que programas el codigo del objeto una sola vez (sus metodos, funciones y propiedades) y puedes hacer tantas copias como quieras del mismo y cada una independiente de las demas, si no que reutilizas codigo de una forma muy rapida y comoda respecto a hacerlo mediante estructuras por ejemplo, que es lo mas comun si no se usan objetos.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

ArrayDude

Gracias, hay cosas que no me quedaron muy claro pero igual es cuestión de practicar y seguir informandome.

De nuevo Gracias.

Una pregunta entonces, como haria para poner un background y ensima de este poner una imagen y al tocar las teclas que pueda ir moviendola.

en resúmen

quiero que esto sea el back


y la otra imagen que vaya recorriendo el laberinto

PD.: Viste saque la firma ;)[/img]
nly a simple dude

[EX3]

Cita de: "ArrayDude"Una pregunta entonces, como haria para poner un background y ensima de este poner una imagen y al tocar las teclas que pueda ir moviendola.
Para dibujar una imagen como fondo tan simple como hacer un DRAW_Map()  en el bucle principal, y si no configuras el orden por medio de la coordenada Z tendras que dibujar en orden de altura, dicho sea, el fondo que es lo mas lejano a la camara tendra que ser dibujado en primer lugar y el resto de elementos segun como se quieran posicionar. Sobre como hacer que el jugador responda al teclado, todo eso lo tienes en el mismo ejemplo del matamarcianos.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.