Y a continuación os dejo el código, en sólo 2 líneas de BASIC, con una pequeña explicación, por si queréis probarlo o usarlo:
Código: Seleccionar todo
10 mode 1:defint A-Z:c=1:RANDOMIZE TIME:s=RND*1024+1:for i=1 to 1023:if s<1001then p=s-1:x=p mod 40+1:y=p\40+1:locate x,y:pen c:print "#";:c=(c mod 3)+1
20 l=s and 1:s=s\2:s=s XOR &240*l:next:call&BB18
- La variable S contiene lo que se llama un Galois Linear-Feedback Shift Register(*) de 10 bits. Básicamente, es un método para obtener una secuencia de números que no se repite y que incluye todos menos el 0. En este caso, como es de 10 bits, son todos los números del 1 al 1023 sin repetición.
- El número S lo utilizo como si fuera el índice de un vector de 1000 elementos, que es la pantalla (40x25 = 1000). Los números superiores a 1001 los descarto, y los inferiores los convierto a coordenadas x,y de pantalla dividiendo por 40 y quedándome el resto.
- El resto es empezar en una posición aleatoria, repetir en bucle y aplicar el método del Linear Shift Register (ah, y cambiar de color).
Espero que os guste .
(*) Vendría a significar algo así como Registro de desplazamiento con retroalimentación lineal de Galois