Hace un tiempo intenté hacer un programa en Pascal que simulara el movimiento aleatorio de una figura. En Pascal hay una función que te permite generar números enteros al azar (Randomize y Random(x), la "x" para establecer un límite), y en función de estos obtener coordenadas aleatorias.
El movimiento tenía que ser continuo, así que por cada nueva coordenada tenía 8 posibilidades (4 píxeles arriba-abajo-iziquiera-derecha y 4 píxeles para cada esquina). Si del Random(8) me salía un 1 la nueva coordenada era CordX = CordX - 1 y CordY = CordY + 1, si salía un 2 la nueva coordenada era CordX = CordX y CordY = CordY + 1, etc..
El caso es que observando el movimiento de la figura (un comecocos cutre ) me di cuenta de que tarde o temprano siempre acaba en el mismo lugar, aunque no siguiera la misma trayectoria para llegar o no tardara lo mismo.
A veces se quedaba "oscilando" en el centro un buen rato, pero una vez empezaba a salirse de él lo hacía siempre en la misma dirección, y acababa en el borde de la pantalla de arriba tirando a la derecha (pero sin llegar a la esquina).
Repasé el programa de arriba a abajo para ver si repetí alguna coordenada, pero todas eran distintas y cada una de ellas representaba un píxel distinto, y como lo máximo que les sumaba o restaba era un "1" no se podía producir ningún salto en ninguna dirección (de hecho, no se producían, sólo que siguiendo una trayectoria continua llegaba siempre a ese borde).
No sé muy bien cómo se generan esos números aleatorios, creo que tiene que ver con algo del reloj del microprocesador pero no sé si esa es la razón de que me saliera así, o es un error de programación o de algo que no estoy teniendo en cuenta.
No es urgente (ná, lo hice para pasar el rato ), pero si a alguien se le ocurre alguna idea..
Saludos.
El movimiento tenía que ser continuo, así que por cada nueva coordenada tenía 8 posibilidades (4 píxeles arriba-abajo-iziquiera-derecha y 4 píxeles para cada esquina). Si del Random(8) me salía un 1 la nueva coordenada era CordX = CordX - 1 y CordY = CordY + 1, si salía un 2 la nueva coordenada era CordX = CordX y CordY = CordY + 1, etc..
El caso es que observando el movimiento de la figura (un comecocos cutre ) me di cuenta de que tarde o temprano siempre acaba en el mismo lugar, aunque no siguiera la misma trayectoria para llegar o no tardara lo mismo.
A veces se quedaba "oscilando" en el centro un buen rato, pero una vez empezaba a salirse de él lo hacía siempre en la misma dirección, y acababa en el borde de la pantalla de arriba tirando a la derecha (pero sin llegar a la esquina).
Repasé el programa de arriba a abajo para ver si repetí alguna coordenada, pero todas eran distintas y cada una de ellas representaba un píxel distinto, y como lo máximo que les sumaba o restaba era un "1" no se podía producir ningún salto en ninguna dirección (de hecho, no se producían, sólo que siguiendo una trayectoria continua llegaba siempre a ese borde).
No sé muy bien cómo se generan esos números aleatorios, creo que tiene que ver con algo del reloj del microprocesador pero no sé si esa es la razón de que me saliera así, o es un error de programación o de algo que no estoy teniendo en cuenta.
No es urgente (ná, lo hice para pasar el rato ), pero si a alguien se le ocurre alguna idea..
Saludos.
Comentario