Hola gente...
Necesito hacer lo siguiente... Mostrar una imagen y rellenar una zona de esa imagen con un color, al estilo de como trabajan los botes de pintura de Photoshop o programas similares.
¿Alguna sugerencia? No se por dónde empezar. He ido al manual a ver si hay alguna función FILL asociada a algunas coordenadas, pero no he encontrado nada.
Mil gracias..
Depende cómo estas dibujando, lo mejor sería dibujar con surfaces (http://www.comunidadgm.org/manual_GM/Dibujando_superficies.htm)
Nunca intenté y no se ve tan fácil, me parece que la única forma es chequear todos los pixeles para ver hasta dónde se va a dibujar.
Se me ocurre que lo hagas con recursión (http://www.comunidadgm.org/index.php?topic=18110.0), no se si es la mejor forma, se me ocurre que hagas un script rellenar(xPos, yPos, c) que hace esto:
Citar- Pintar el pixel en la posicion (xPos, yPos) del color "c"
- Agregar el pixel pintado a una lista
- Con cada uno de los 4 pixeles adyacentes chequear si son del color c y no estan en la lista, si es así llamar al script rellenar() con los argumentos correctos
No es tan dificil, pero se ve muy ineficiente, chequear el color de un pixel según el manual es un poco lento, para colmo si queres rellenar un cuadradito de 100x100 vas a llamar a este script 1000 veces. No creo que el juego se trabe por 5 segundos, pienso que estara 1 segundo sin responder como maximo, otros acá deben saber mas de esto que yo
Entonces si no estas usando surfaces, aprendé a usarlas. Luego intenta implementar el script que te dije (previamente leyendo que es recursion), que es la parte mas divertida de hacer juegos
Gracias Mgbu...
Conozco la recursión, pero tienes razón en que parece que esto será bastante ineficiente, sobre todo si las zonas de la imagen son grandes...
Yo pensaba más bien en si alguien conocía algún script que hiciera esta función, o alguna librería que se pueda cargar en el sistema y que permita esta funcionalidad.
Tengo una solución "a las bravas", que es dibujar la imagen con formas en lugar de cargar un JPG, pero claro, eso lleva un trabajo enorme y los resultados nunca van a ser los mismos que haciendo la imagen con un Photoshop, por ejemplo...
¿Qué es lo que quieres lograr? ¿La figura a rellenar es geométrica o es algo complejo y orgánico? ¿Hay muchas zonas con distinto color o pocas?
A lo mejor necesitas cambiar un color, por ejemplo blanco por negro. Chequeando todos los pixeles y cambiandolos a negro no se si sirve
Pues una cosa sencilla... Una imagen con bordes negros y fondo blanco, y lo que quiero es que al tocar sobre una zona en blanco se pinte de un color que haya seleccionado previamente. Y que luego si elijo un color, por ejemplo azul, lo pueda cambiar a rojo, por ejemplo...
La típica aplicación de dibujo de relleno.
He navegado un poco por el foro y me acabo de descargar una DLL que hace algo, no se qué todavía, que puede ser interesante. Lo probaré y os comentaré.
Por otro lado, si alguien más tiene alguna idea, estoy abierto a todo...
Aunque primero me gustaría subir al Google Play mi primer juego en modo PUBLI, y no logro de una manera sencilla meterle AdMob de Google. Lo tengo en otro post cercano a este, así que si alguien sabe algo... No he visto nada navegando por el foro...
Mil gracias..
Tengo uno por líneas de escaneo, es bastante decente, funciona mucho mejor si lo ponés sobre un array que sobre una imagen, ya que la función get_pixel es lenta. Sería hermoso poder volcar las sprites instantáneamente en un array, pero eso ya es soñar demasiado
Por cierto, con recursividad sigue el problema del desbordamiento de memoria, habría que ver una manera de lograrlo sin recursividad
Gracias Texic.. He descagado el adjunto. Lo probaré y postearé.
Que raro... Bueno te lo paso por dropbox
http://dl.dropbox.com/u/18232060/scan%20fill.gmk
Texic, gracias...
Hoy he vuelto a intentarlo y lo he descarga bien. De hecho acabo de modificar el otro post, para no guardar morralla en el foro y no había visto que me lo habías pasado por dropbox.
Lo estudiaré y portearé a ver qué logro.
Por cierto, ya que te escribo, estoy con el tema de meter publi AdMod al juego. En otro post ya he logrado una ayuda sobre el tema, pero me falta el último paso: lograr obtener el Devide ID para Android. El manual de Yoyo dice que debo de abrir la consola ADB y buscar el código, pero no se a qué se refiere. ¿Alguna idea?
Mil gracias.
Ah, entonces los dibujos a rellenar van a ser siempre los mismos. Si el usuario no puede crear sus propios dibujos podés dividir las partes blancas en objetos que tienen un sprite con una forma igual a la de su seccion de dibujo. Si el usuario hace click sobre ese objeto éste cambia el color del sprite con image_blend.
Sería una opción con buen rendimiento pero tendrías que hacer muchos sprites
Tampoco entiendo por que ocurre desbordamiento de memoria en la forma recursiva, porque si se agregan los pixeles a una lista no se deberia llamar a la funcion dos veces en el mismo lugar, ¿O desbordamiento de memoria se refiere al llamado de muchas funciones? Me gustaria saber porque no se mucho de esto :-[
Cita de: Mgbu en Marzo 07, 2013, 05:54:16 PM
Ah, entonces los dibujos a rellenar van a ser siempre los mismos. Si el usuario no puede crear sus propios dibujos podés dividir las partes blancas en objetos que tienen un sprite con una forma igual a la de su seccion de dibujo. Si el usuario hace click sobre ese objeto éste cambia el color del sprite con image_blend.
Sería una opción con buen rendimiento pero tendrías que hacer muchos sprites
Tampoco entiendo por que ocurre desbordamiento de memoria en la forma recursiva, porque si se agregan los pixeles a una lista no se deberia llamar a la funcion dos veces en el mismo lugar, ¿O desbordamiento de memoria se refiere al llamado de muchas funciones? Me gustaria saber porque no se mucho de esto :-[
El desbordamiento de memoria ocurre cuando se están ejecutando demasiadas funciones al mismo tiempo, por eso no es tan recomendable la recursividad en estos casos
Cita de: internauta en Marzo 07, 2013, 01:29:35 PM
Texic, gracias...
Hoy he vuelto a intentarlo y lo he descarga bien. De hecho acabo de modificar el otro post, para no guardar morralla en el foro y no había visto que me lo habías pasado por dropbox.
Lo estudiaré y portearé a ver qué logro.
Por cierto, ya que te escribo, estoy con el tema de meter publi AdMod al juego. En otro post ya he logrado una ayuda sobre el tema, pero me falta el último paso: lograr obtener el Devide ID para Android. El manual de Yoyo dice que debo de abrir la consola ADB y buscar el código, pero no se a qué se refiere. ¿Alguna idea?
Mil gracias.
Con abrir la consola se refiere a que tenés que abrir el cmd desde inicio-ejecutar y poner adb shell
Luego pones otra instrucción que te devuelve los dispositivos conectados (no me acuerdo cuál es). Antes que nada tenés que configurar el adb. Fijate este post: http://www.htcmania.com/archive/index.php/t-335458.html
Gracias, Texic y Mgbu...
Al final no necesité el ID para meter la publi, aunque funcionó de coña, supongo... Pero ya no lo toco :-)
Me voy a poner con el tema de los colores y las imágenes.
Por cierto, ¿algo de documentación sobre drag&drop, en español? He intentado ver el ejemplo de las cartas, pero todavía es demasiado complejo para mi... Necesito algo más básico...