Shit Ant Simulator

Started by Danielo515, April 06, 2011, 02:38:34 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Danielo515

Por cierto splinter, tengo otra duda sobre el path find (que la postearé en cuanto me contestes en su hilo correspondiente, para tenerlo organizado)

El mapa de búsqueda, debe ser de 8 bits, eso lo tengo claro, pero ¿debe ser blanco y  negro obligatoriamente? o puede ser color 0 y cualquier otro color dentro de la paleta de 8 bits?

Muchas gracias de nuevo, dios, que haría sin este foro.

Abram

Puedes poner muchos mas colores, incluso para indicar un grado de dificultad para pasar por ellos, asi por ejemplo, podrias tener 10 colores, en los cuales el 0 indica no traspasable, y del 1 al 10 van de menos a mas traspasables, siendo el 10 el mas sencillo, el algoritmo buscara que camino es el mas rapido para llegar del punto A al B sorteando esos colores (el 1 podria ser por ejemplo un rio, el 2 un desierto, el 3 un bosque, etc.. y el 10 una carretera, entonces el algoritmo siempre intentaria ir por la carretera, pero si no le queda otra, buscaria los siguientes caminos para llegar al destino)

Danielo515

Eso supongo que lo dices refiriendote a algún algoritmo que haya implementado yo mismo o de alguna librería externa no?

Porque que yo sepa el algoritmo de path find que trae bennu solo distingue entre traspasable o no traspasable.

De todos modos he ido a consultar la wiki y la página está en blanco. Tal vez me podría animar a escribir algo, pero no tengo suficiente info y no se que tal se me dará la redacción técnica.

Abram

path_wall(VALOR)

Esta función, definida en el módulo "mod_path", modifica el valor de "pared" empleado por la función path_find().
Este valor de pared será un número que indica la posición mínima del color dentro de la paleta (perteneciente al
gráfico de 8 bits que representa el camino) a partir del cual un punto del gráfico es intraspasable. Es decir, si por
ejemplo el parámetro vale 5, todos los píxeles del gráfico del camino pintados con los colores que ocupan las
posiciones 0,1,2,3 y 4 de la paleta serán traspasables, y el resto no.
El orden de los colores traspasables influye en la facilidad de "traspase". En el ejemplo anterior, el color 1 es el más
fácil de traspasar porque no ofrece apenas resistencia para los móviles; en cambio, el color 4 será más dificultoso, y en
principio no será la opción escogida para crear un camino, a no ser que no haya otra opción. Es decir, la posición de
los colores en la paleta se interpreta como el "coste" de movimiento de un punto dado, hasta llegar a la posición
marcada por el parámetro, la cual marca la barrera infranqueable. Más concretamente: cada posición en la paleta
requiere el doble de pasos que la anterior, hasta llegar a la posición infranqueable (1ª posición, 1 paso necesario; 2ª
posición, 2 pasos necesarios,etc)
Evidentemente, esta función se ha de invocar siempre antes de path_find(), ya que ésta utiliza el valor previamente
definido por path_wall() para calcular el camino más adecuado. Si no se utiliza esta función, por defecto, el valor de
la "pared" que utilizará path_find() está a 1, lo que significa que sólo los puntos a 0 serán traspasables por el camino
a resolver. Por otro lado, si a la función se le pasara como parámetro un valor menor a 0, éste no será modificado.

Danielo515

Bueno, pongo el código de la penúltima (ya que la última versión está en fase experimental y no me gusta nada) de mi particular hormiguero.

Ahora mismo tiene la configuración más segura, dentro de lo que se considera seguro para un programa que cada dos por tres se pega la hostia, aunque a veces funciona durante horas y horas sin problema. Misterios de la vida. De momento esa configuración segura incluye a una sola hormiga.

A veces las hormigas no les apetece hacer nada, por lo que simplemente se pasearán por el hormiguero, dejadlas vivir su vida y no las agobiéis.

Si quereis más velocidad os recomiendo que aumentéis las probabilidades de que a la hormigua le apetezca cabar, es un porcentaje dentro del código de la ant, algo así como rand(0,100)<10, pues ponéis 20 y listo.

Fede

Estooooo. Me da un error en el tratamiento de la variable timer. Lo he tenido que corregir para que compile.

process screen_shot()
private
int tiempo;
begin
tiempo=timer[0];
repeat
   if ( timer[0]-tiempo > (minutos_screenshot*60*100) )//cada minuto
tiempo=timer[0];
graph=screen_get(); // grabs the screen and sets it as the program graphic
png_save(0,graph,"hormiguero"+ftime("%d-%m-%Y_%H%M%S",time() )+".png"); // saves the graphic as png                                                   
say("Tomando screenshot el: "+ftime("%d-%m-%Y_%H:%M:%S",time() ) );
map_unload(0,graph);  //frees the graphic
   else
frame;
   end
until( key(_esc));
end


La hormiga no debería de cavar tan 'recto'. Si ves cualquier documental donde se han sacado moldes de hormiguero son un autentico churro.



Por lo demás te está quedando chulo. A ver cuando metes más hormigas, con diferentes tipos.  ;D
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.