Autor Tema: Ayuda, pintado de pantalla de forma aleatoria, mejor metodo?  (Leído 434 veces)

alicesimu

  • Sr. Member
  • ****
  • Mensajes: 256
  • Karma: 2
Ayuda, pintado de pantalla de forma aleatoria, mejor metodo?
« en: Diciembre 11, 2016, 07:09:54 pm »
Este tema, es para discutir o compartir ideas sobre...

pintado de un mapa tileado/casillas, pintado de elementos, de forma aleatoria...

lo bueno que seria usar un % de piezas...

yo poseo 20 elementos diferentes para el mapa tileado.

Como repartirlo???

Esta claro que por ejemplo el elemento numero 15: seria bloques blandos, pondria un 50% de la pantalla....
o si sabemos que la pantalla tiene 10x10 casillas.... seria 10x10/2= piezas que colocar.

Bueno...
tengo un lio cacao a la hora de repartir piezas, con mayor a menor prioridad. menor a mayor cantidad de piezas en la pantalla

Lo que tengo miedo que mientras reparte las piezas, no se me quede en un bucle sin fin, por que ya no tiene ninguna casilla que poner...
Tambien puede pasar que falte algunos elementos que deberian existir, o son muy pocos...

Existen varias tecnicas de pintado, mejor o peor...

Una:
Ir casilla por casilla de forma ordenada, des de la primera hasta la ultima.
en cada casilla, decidir por % que pieza deberia ir... dependiendo del numero eligira uno en concreto.
asi, hasta acabar todas las casillas de la zona.

Dos:
Barridos de forma aleatora. elige una casilla alazar xy, dentro del mapa, dicta de forma aleatoria la probablididad de poner la pieza en cuestion. si supera ese valor de % la pondra.
Va a por el siguiente pieza y vuelve a colocarlo de forma aleatoria...

tres:
Numero de piezas a colocar en la zona, solo elige la casilla aleatoriamente, y pone la pieza... esto resta el numero de piezas de ese tipo a poner... hasta terminar con este tipo de piezas.
Va a por la siguiente tipo de pieza, y vuelve a colocarla a la azar...


Realmente, cuesta mucho pensar el mejor sistema de pintado, y sin que nos pase una de estas dos cosas:
Bloqueo por blucle sin fin(no tener espacios libres)
Falten piezas basicas, menos de las que esperavamos, hasta 0.

Resumiendo,
Tenemos:
-Dimensiones del mapa(grilla)
-Tipo de pieza(cada uno es un elemento de juego diferente)
-Numero de piezas(Cantidad de piezas que se podrian colocar en el mapa)
-Porcentaje de piezas en el mapa(Alternativa de pintado, por %)


Alguien tiene alguna idea.
 :-\

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6187
  • Karma: 157
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Ayuda, pintado de pantalla de forma aleatoria, mejor metodo?
« Respuesta #1 en: Diciembre 12, 2016, 09:00:46 pm »
Bueno, si es sólo un pintado aleatorio, te da realmente igual el método. Ve casilla por casilla, selecciona una pieza aleatoria, y si no te quedan de esa, pasa a la siguiente (o a la primera, si era la última de la lista, haciendo una especie de "lista circular").
O bien, coge la primera pieza, y ponla en una posición aleatoria. Cuando se te acaben todas las piezas de ese tipo, pasa a la siguiente. Si la posición donde la quieres poner está ocupada, busca la siguiente (ve casilla por casilla, de izquierda a derecha, y de arriba a abajo, hasta encontrar una vacía, y si llegas al final, vuelve al principio). Al fin y al cabo, al ser aleatorio, da igual dónde se ponga.
Si lo que quieres es que haya un camino o algo, la lógica se complica ya mucho. Ya tienes que tener en cuenta... lo que realmente quieras tener en cuenta.

Por ejemplo, hace tiempo quise hacer un laberinto, y me recomendaron que intentase crear primero un camino aleatorio desde A hasta B. Una vez conseguido, era cuestión de rellenar el resto del mapa con casillas aleatorias, teniendo en cuenta las que ya se habían puesto. Tuve que dejarlo porque no conseguí hacer que el algoritmo retrocediera unos cuantos pasos en caso de que el camino se hubiera cerrado sobre sí mismo ^^U

Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Futu-block

  • Hero Member
  • *****
  • Mensajes: 2651
  • Karma: 34
  • Superviviente marciano
    • futublock
Re:Ayuda, pintado de pantalla de forma aleatoria, mejor metodo?
« Respuesta #2 en: Diciembre 27, 2016, 11:37:12 am »
Hace tiempo estuve preguntando de como hacer una serie de siete números aleatorios, no hubo solución, asi que opté por hacer pseudo patrones de tres números, segun saliera el primero (1-10) podría salir una media de otras 10 combinaciones aleatorias de tres números puestos en un orden, para luego hacer otras 10 combinaciones de los 3 números restantes. A mi me sirvió

El tema es ese, haz un numero de patrones para la primera parte, ídem para lo demas, siempre saldrá aleatorio dentro de un limite



alicesimu

  • Sr. Member
  • ****
  • Mensajes: 256
  • Karma: 2
Re:Ayuda, pintado de pantalla de forma aleatoria, mejor metodo?
« Respuesta #3 en: Diciembre 27, 2016, 03:15:34 pm »
Si la cosa es que por aproximación, debe tener un minimo obligatorio y un maximo.

y cada tipo de elemento en el juego, tiene mas o menos cantidad.

abria que hacerlo por barridos, por cada tipo de elemento.
de que el menos prioridad y mas abundancia, al que mas prioridad y pocos elementos.