Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Como guardar comparaciones

Iniciado por shephiroth, 20 de Noviembre de 2006, 09:32:53 PM

« anterior - próximo »

shephiroth

Buenas.

Lo primero decir que no estoy seguro de haber puesto el titulo correcto, asi que lo mejor será que me explique.

Hasta ahora para comprobar colisiones le daba un cuadrado a cada personaje y comprobaba si un cuadro entraba en el otro. Hace poco en clase nos enseñaron a hacer mapas de karnaugh y luego con MC-Cluskey. El tema viene cuando se me ocurre llevarlo a la practica y en vez añadir un cuadrado a cada personaje se me ocurre la idea de crearle un sistema parecido precalculado para las colisiones.

Estoy poco a poco probandolo en directo en un mini proyecto, aunque aun tengo que solucionar un par de problemas para poder hacer una prueba seria y testear tiempos y asi sopesar calidad/coste.

El problema viene en como almacenar esto, teniendo en cuenta q aqui uso 6 variables, pero llevandolo a un sistema normal podrían llegar a ser (que lo mas seguro lo sean) 8 varibles o incluso mas:
z = (x3 & !x2 & !y3 & y2) | (x3 & !x1 & !y3 & y2) | (x3 & !x2 & y3 & !y2) | (x3 & !x1 & y3 & !y2) | (!x3 & x2 & x1 & y3 & !y2) | (!x3 & x2 & x1 & !y3 & y2);

SALUDOS ^^

kiko

¿Que lenguaje utilizas?



Si es VB puedes usar arrays.

Dimensionar un array es  muy simpe y tan sólo tendrías que igualarlas según creas que es mejor.
iko Igorra

Programador (Cold Fusion, php,   vb....)
Torremolinos
Málaga
España

shephiroth

Si te refieres a como guardar las variables en memoria, es facil...y no es eso lo q pido exactamente. Lo q quiero es poder crear un metodo para poder "serializar" dichas comparaciones.

Arriba puse un ejemplo muy basico con 6 variables (a todo esto aclarar que son booleanas), pero tu imaginate saltar a....16 variables!!!!! Luego fue un mapa bastante sencillo y salieron solo 6 or....imaginate alguno raro que salgan 20 or....

En clase hoy vimos las matrices virtuales programables de las rom. Creo que me creare una rom virtual xDD

Pero bueno, si a alguien se le ocurre algo puede postear, NO SEAIS TIMIDOS CABRONES!!!!  :evil:  :evil:  :evil:

P.D: Trabajo en c++

marcode

un byte que indica el número de grupos de variables en la comparación OR.

un byte que indica el total de variables de cada grupo en la comparación AND.

una lista de bytes para cada valor a comparar hasta un total determinado por el byte anterior.

De cada byte, el primer bit indica si el valor ha de ser negado o no, el siguiente para para determinar si es X o Y, y los 6 últimos para indicar el número de variable con lo que tienes hasta un máximo de 64.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

tamat

qué tiene de malo una funcion con N parametros? o una funcion de parametros variables.
Por un stratos menos tenso

kiko

sabrías algo con respecto a mi post http://www.stratos-ad.com/forums3/viewtopic.php?t=7818?

Es que es algo para lo que no tengo conocimientos. O al menos darme algo de norte.

gracias
iko Igorra

Programador (Cold Fusion, php,   vb....)
Torremolinos
Málaga
España

shephiroth

Buenas.

Solo decir que ya consegui un sistema "mas o menos" claro. Si a alguien le interesa el codigo que me avise y lo pongo (asi aprobecho y me criticais la rutina, q fijo que algo esta utilizando demasiados ciclos xDD).

Respecto al sistema, al final hice mas o menos lo q puso marcode, aunque con algunas modificaciones.....al final necesitare 16 bits, 8 de altura y 8 de anchura (1024*1024)....traducido a un fichero de:
- 1byte que indica la cantidad de ORs que habra (es decir, limitado a 256...demomento suficiente xDD).
- Grupos de 4 bytes por cada comparacion. Los dos primeros bytes indican si esa variable sera comparada o no. Los otros dos bytes indicaran si se comparara positiva o negativamente.

En general gracias a todos ^_^






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.