Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Una ayuda a este novato por favor

Iniciado por Halcon07, 02 de Marzo de 2008, 03:31:24 PM

« anterior - próximo »

Halcon07

Saludos a toda la comunidad, hace poco encontre esta libreria y creo que me ha cido de gran ayuda ya que en estos momentos me encuentro haciendo un videojuego isometrico y apenas eh conseguido cargar imagenes en la pantalla y otras cosas. El problema es que cada vez que tengo un proyecto en pantalla completa cuando intento cerrarlo se queda la pantalla con los graficos que eh incertado (como si no lo hubiese cerrado) pero el programa deja de funcionar, quisiera que por favor me ayudaran a corregir el problema ya que eh mirado y no encuentro que puede ser. Eh aqui el codigo que maneje:

Option Explicit
Public DirectDraw As dx_GFX_Class

Public ImgPared1 As Long

Public Ciclo As Boolean

Private Sub Form_KeyPress(KeyAscii As Integer)
   End
End Sub

Private Sub Form_Load()
   Me.Show
   
   Set DirectDraw = New dx_GFX_Class

   Call DirectDraw.Init(Me.hWnd, 1024, 768, , False)

   ImgPared1 = DirectDraw.MAP_Load("Pared1.png", 0)

   Ciclo = True

   While Ciclo
       Call DirectDraw.DRAW_AdvMap(ImgPared1, 288, 160, 0, 50, 50, Blendop_Color, &HFFFFFFFF, Mirror_None, Filter_Bilinear, Isometric_Base)
       Call DirectDraw.Frame(DirectDraw.ARGB_Set(0, 0, 0, 0))
   Wend

   Call DirectDraw.MAP_Unload(ImgPared1)
   Call DirectDraw.Terminate
   Set DirectDraw = Nothing
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Ciclo = False
End Sub

[EX3]

Wenas.

Lo primero un apunte. La instruccion End de Visual Basic no invoca ningun evento en los controles y objetos que tengas en ejecucion, por lo que el siguiente codigo:
Private Sub Form_KeyPress(KeyAscii As Integer)
   End
End Sub

Cambiaria la llamada a End por Ciclo = False. End lo llamaria justo al final del programa despues de cerrar todos los objetos, en este caso al final del evento Load del formulario. Yo dejaria el codigo asi:

Option Explicit

Public DirectDraw As dx_GFX_Class
Public ImgPared1 As Long
Public Ciclo As Boolean

Private Sub Form_KeyPress(KeyAscii As Integer)
   Ciclo = False
End Sub

Private Sub Form_Load()
   Me.Show
 
   Set DirectDraw = New dx_GFX_Class
   Call DirectDraw.Init(Me.hWnd, 1024, 768, , False)

   ImgPared1 = DirectDraw.MAP_Load("Pared1.png", 0)
   Ciclo = True

   While Ciclo
       Call DirectDraw.DRAW_AdvMap(ImgPared1, 288, 160, 0, 50, 50, Blendop_Color, &HFFFFFFFF, Mirror_None, Filter_Bilinear, Isometric_Base)
       Call DirectDraw.Frame()
   Wend

   Call DirectDraw.MAP_Unload(ImgPared1)
   Call DirectDraw.Terminate
   Set DirectDraw = Nothing

   End
End Sub

Cerrando previamente el objeto grafico no deberia darte problemas al cerrar en modo a pantalla completa.

Salu2...

P.D.: Por cierto, solo por evitar confusiones, la clase grafica de dx_lib32 funciona sobre Direct3D y no sobre DirectDraw (DirectDraw solo lo usa en la version actual para lectura de valores de memoria). Lo digo mas que nada por como has llamado a la instancia en tu codigo :)
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

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

Halcon07

Vaya era una tonteria  :D
Si no me hubieras colaborado compañero tal vez no lo hubiera conseguido solucionar.
Muchas gracias y tendre muy en cuenta tus sugerencias . 8)

Ahora por otro lado el juego que estoy haciendo maneja sprites isometricos y no tengo idea como manejar las coliciones. No se si sabrian donde puedo conseguir un tutorial o ejemplo donde manejen ese tipo de imagenes.

[EX3]

Cita de: "Halcon07"Ahora por otro lado el juego que estoy haciendo maneja sprites isometricos y no tengo idea como manejar las coliciones. No se si sabrian donde puedo conseguir un tutorial o ejemplo donde manejen ese tipo de imagenes.
Ahi ni idea ya que nunca he implementado un motor isometrico a excepcion de la funcion de dibujo en perspectiva de dx_lib32. Eso preguntalo en el foro de programacion general, que mas gente te leera y que seguro alguien sabra decirte paginas con tutoriales o articulos sobre desarrollos de motores isometricos y como calcular la colision aunque imagino que sera parecido a como se calcularia en perspectiva ortogonal :)

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.