Anuncios Google

Movimiento de imagen raro SDL & C++

Pues uno más de mis problemas con programación en este caso más que problema es que la solución que me planteo me es rara y no me parece adecuada. Después de resolver mil y un problemas ya tengo mis funciones "funcionando" puedo mostrar, cargar, iniciar y mover imagenes en pantalla, el problema viene con esta última función, cómo dicen una imagen vale más que mil palabras.

Esa barra alargada no es más que el movimiento, la solución que me he planteado es refrescar la pantalla con el fondo negro en cada ciclo y blitear las imagenes en cada ciclo. Sin embargo me parece que "estresa" demasiado la carga de la CPU igual y estoy equivocado.

Mi pregunta es: ¿Que es lo que puedo hacer para que la barra no se alargue? Lo único que quiero es que cambie de posición pero borrando el rastro de su anterior posición.

Espero haberme dado a entender.

Saludos.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de pspgorrister

Esa barra alargada no es

Esa barra alargada no es más que el
movimiento, la solución que me he planteado es refrescar la pantalla
con el fondo negro en cada ciclo y blitear las imagenes en cada ciclo.
Sin embargo me parece que "estresa" demasiado la carga de la CPU igual
y estoy equivocado.

No, realmente no se gasta tanta carga de CPU, y si encima al iniciar el modo de video usas SDL_DOUBLEBUF, se trabaja con la memoria de video, lo que lo hace mucho más rápido y sin cargar la CPU. Mover bytes de una zona a otra de memoria está muy optimizado. Por otro lado usando esta técnica te puedes permitir el lujo por ejemplo poner una imagen de fondo ¿un campo de tenis quizás Lengua fuera?. No obstante, si te parece que lo ves lento igual es que estás haciendo algo mal, pon esa parte de código si tienes duda.

Mi pregunta es: ¿Que es lo que puedo hacer
para que la barra no se alargue? Lo único que quiero es que cambie de
posición pero borrando el rastro de su anterior posición.

El método a grosso modo sería el siguien por frame:

  1. Calcular las nuevas posiciones de las barras y la pelota
  2. Dibujar el fondo de pantalla
  3. Dibujar el resto de sprites que hubiera (en este caso serían las 2 barras y la pelota)
  4. Hacer un Flip() para mostarlo por pantalla.

La barra se te alarga porque no estás borrando bien "el rastro" que deja al usar ese método alternativo.

Espero haberme dado a entender.

Yo también Guiño

 

 


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de burnxez

Gracias leyenda

Entendido, he encontrado una mejor forma que lo que estaba haciendo, en lugar de cargar imagen y blitearla cómo fondo, rellenar de color la ventana, ahora si, movimiento funcionando, sólo quedan colisiones, inteligencia artifical y menú, cada vez más cerca :D

Saludos.

Imagen de P22

La otra barra funciona bien?

La otra barra funciona bien?

Imagen de burnxez

A la otra

No le he implementado movimiento así que sólo está siendo "mostrada" (Bliteada si lo prefieres) sin embargo no cuenta con ningún tipo de interacción aún, lo mismo con la bola.

Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.