Escribir un programa protector de pantalla de lluvia digital en un lenguaje sencillo. ¿Alguien puede darme algunas ideas?
Preparación: una ventana (ventana _startup), un tablero de dibujo (tablero de dibujo 1), un reloj (reloj 1)
Las visualizaciones de la ventana _startup y del tablero de dibujo 1 son ambas falsas , y la visualización del reloj 1 El período de tiempo es 0, y el que siempre está al frente en la ventana _startup es verdadero.
Vaya al ensamblado de la ventana correspondiente a la ventana _startup y copie el siguiente código. .¿Versión? 2
. ¿Biblioteca de soporte? OPenGL
. ¿Biblioteca de soporte? EHilo
. Biblioteca de especificaciones de soporte
Biblioteca de soporte ?iext
. Ensamblaje de Windows 1, ?, ?, ? matriz
. Variable de ensamblaje ?t, ? tipo entero
Variable de configuración del programa x, tipo entero. El programa establece la variable y, número entero
. Variable ensambladora z, tipo entero
. Variables de ensamblaje ?altura-pantalla, entero,?,?,?altura-pantalla
. Variables de ensamblaje ?ancho de pantalla, número entero? Ancho de pantalla. Subrutina ?Iniciar ventana_Altura de pantalla creada (altura de pantalla) = ?Obtener altura de pantalla? ()
¿Ancho de pantalla? ¿Obtener el ancho de pantalla? ()
Panel 1. ¿Color de fondo del panel? #negro
_Ventana de inicio. Mover(0,?0,?Ancho de pantalla,?Alto de pantalla)
Panel 1. ¿Mover? (0,?0,?Ancho de pantalla,?Alto de pantalla)
t? /p>
z?=?Alto de la pantalla?÷20)
Mostrar cursor (falso)
_Iniciar ventana. ¿visible? Verdadero
Panel 1.Verdadero
_Iniciar ventana. ¿Ajustar jerarquía? (1)
Definir?()
Panel 1.()
Reloj 1. El intervalo de tiempo para generar cada columna (ms)
¿Iniciar hilo? (amp; salida de lluvia digital,?,?)
¿Retraso? (400)
¿Iniciar hilo? (amp; salida de lluvia digital,?,?)
¿Retraso? (300)
¿Iniciar hilo? (¿y salida de lluvia digital,?,?)
¿Retraso? (200)
¿Iniciar hilo?( (amp; salida de lluvia digital, ?,?)
Retraso? (200)
¿Iniciar hilo? (amp; salida de lluvia digital, ?,?)
¿Retraso? (200)
¿Iniciar hilo? (y salida de lluvia digital, ?, ?)
¿Retraso? (200)
Reloj 2.( )
.Subroutine_Panel1_mouse_position_moved,?Tipo lógico
. Parámetros?posición horizontal,?entero
. ¿Parámetros? Posición vertical, tipo entero
. ¿parámetro? Estado de la tecla de función, tipo entero.
si es cierto? (Valor absoluto (¿posición horizontal?)> ¿O tomar el valor absoluto de la posición vertical?>?50)
Definir?()
t=t 1
. si es cierto?(t? > ?3) ?' ?no sucederá más de tres veces
end ? ()
.if end. Terminar si es verdadero
. ¿Subrutina?_Panel1_Presionar una tecla,?Tipo lógico
. ¿parámetro? Código clave, número entero
. ¿parámetro? Estado de la tecla de función, ? Fin entero?()
Definición de subrutina x?=? ¿Obtener la posición vertical del mouse? Subrutina de salida digital de lluvia,?,?,?Salida digital de lluvia
. Variables locales ?E, ? entero, ?, ?, ?posición vertical
. Variables locales ?F, ? Entero, ?, ?, ? Posición horizontal, punto de partida
. Las variables locales ?G, ? Entero, ?, ?, ? muestran la longitud en bits
. ¿Variable local?H,?entero,?,?,tasa de disminución
.Variable local?I,?entero,?,?,número de movimientos
.Variable local?J, ? entero, ?, ? , ? verde y blanco
Variable local ?CHR, ?tipo de texto, ? "1000" como semilla de número aleatorio ()
=?Obtener un número aleatorio? (1,?5)
. Si (J? =?1? o ?J? =?3? o ?J? =?5)
¿Colocar semilla de número aleatorio?()
E?Obtener número aleatorio (0, ancho de pantalla)
Colocar semilla de número aleatorio ()
F?=?Obtener número aleatorio (0,?a entero?(alto de pantalla×x?0.75))
Colocar una semilla de número aleatorio ()
G?=?Obtener un número aleatorio (z×0.2, z×0.65)
Colocar una semilla de número aleatorio ( )
p>H=?Tomar un número aleatorio? (10,?600)
. Determine el primer ?(verdadero) del bucle
'?Mesa de trabajo 1. Fuente. Nombre de fuente = ?"Bold"
'?Palette1.Font.Tamaño de fuente=?16
CHR[I] [1]?GetCharacter()
Panel1.Color del texto? =?#Verde
Panel1.localizar escritura?(E,?F? ?I?×?20,?CHR?[I? ?1])
.¿Si es cierto?(I?≠?0)
Panel 1.# Verde oscuro
Panel 1. Encuentra y escribe ?(e,?f? ? ( i?- ?1)?×?20,?CHR?[I])
Si es verdadero, final
. si es cierto? (I?>?G? ?1)
Panel 1. Color del texto =? ¿Obtener valor de color? (0, ? 40, ? 0)
Panel 1. ¿Buscar y escribir? Ingrese?(e,?f? (i?-?g?-?1)?×?20,?CHR?[I?-?G])
Panel 1. Color del texto =? Negro
Panel 1. Encuentra y escribe ?(E,?F? ? (I?-?G?-?2)?×?20,?CHR?[I?-?G? -? 1])
.
Si es verdadero final
I?1
.Si es verdadero (F? ?I?×?20?>?altura de la pantalla)
Salir del ¿bucle? ()
. Finalizar si es verdadero
¿Retraso? (H)??Evitar sobrecarga de CPU
. si es cierto? (I? > ?1000)
Fin?()
Si es verdadero, termina. ¿Estás seguro de que el ciclo ha terminado? ()
¿Determinar el punto inicial del bucle? (verdadero)
.¿Si es cierto? (I?>?G? ?1)
Panel 1. Color del texto = ?Obtener valor de color? (0, ?40, ?0)
Panel 1. Buscar y escribir Ingrese?(e,?f? (i?-?g?-?1)?×?20,?CHR?[I?-?G])
Panel 1. Color del texto =? Negro
Panel 1. Encuentra y escribe ?(E,?F? ? (I?-?G?-?2)?×?20,?CHR?[I?-?G? -? 1])
. Si es verdadero final
I?1
.Si es verdadero (F? ?I?×?20?-? (G? ?2)?×alto de pantalla) p >
¿Salir del circuito? ()
. Si es verdadero,
¿Retraso? (H)??Evitar sobrecarga de CPU
. ¿Si es verdadero?(I > ?1000)
¿Fin?()
Si es verdadero, finalice. ¿Estás seguro de que el ciclo ha terminado? ()
. De lo contrario, use un número aleatorio como semilla()
E?=?Tome un número aleatorio (0, ancho de pantalla)
Coloque un número aleatorio seed()
F ?=?Obtener un número aleatorio (0,?a un número entero?(alto de la pantalla × x?0.75))
Colocar una semilla de número aleatorio ()
G?=?Obtener un número aleatorio ( z×0.2, z×0.65)
Colocar una semilla de número aleatorio ()
H=?Obtener un número aleatorio (10,?600)
. Determine el primer ?(verdadero) del bucle
'?Mesa de trabajo 1. Fuente. Nombre de fuente = ?"Bold"
'?Palette1.Font.Tamaño de fuente=?16
CHR[I] [1]?GetCharacter()
Panel1.Color del texto? =?#Blanco
Panel 1. ¿Dónde escribir? (E,?F?I?×?20,?CHR?[I??1])
. Si es verdadero ?(I?≠?0)
Panel 1.# gris claro
Panel 1. Encuentra y escribe ?(e, ?f? ? (i?-? 1 )?×?20,?CHR?[I])
Si es verdadero, final
. si es cierto? (I?>?G? ?1)
Panel 1.# Gris
Panel 1. Encuentra y escribe ?(E,?F? ? (I?-?G ? -?1)?×?20,?CHR?[I?-?G])
Panel 1. ¿Color del texto?#Negro
Panel 1. ¿Buscar y escribir?( E,?F? (I?-?G?-?2)?×?20,?CHR?[I?-?G?-?1])
. Si es verdadero final
I?1
.Si es verdadero (F? ?I?×?20?>?altura de la pantalla)
Salir del ¿bucle? ()
.
Finalizar si es verdadero
¿Retraso? (H)??Evitar sobrecarga de CPU
. si es cierto? (I? > ?1000)
Fin?()
Si es verdadero, termina. ¿Estás seguro de que el ciclo ha terminado? ()
¿Determinar el punto inicial del bucle? (verdadero)
.¿Si es cierto? (I?>?G? ?1)
Panel 1. Color del texto = ?# Gris
Panel 1. Encuentra y escribe ?(E, ?F? ? (I ? -?G?-?1)?×?20,?CHR?[I?-?G])
Panel 1.Color del texto?#Negro
Panel 1. Buscar y escribe ?(E, ?F? ? (I?-?G?-?2)?×?20, ?CHR?[I?-?G?-?1])
. Si es verdadero final
I?1
.Si es verdadero (F? ?I?×?20?-? (G? ?2)?×alto de pantalla) p >
¿Salir del circuito? ()
. Si es verdadero,
¿Retraso? (H)??Evitar sobrecarga de CPU
. ¿Si es verdadero?(I > ?1000)
¿Fin?()
Si es verdadero, finalice. ¿Estás seguro de que el ciclo ha terminado? (). ¿Y si se acaba?
.¿Subrutina? Obtener carácter, tipo de texto
. Variable local A, ?A, ?semilla textual con número aleatorio ? ()
A?=?A? (¿tomar número aleatorio? (27,?127))
.Determina el primer dígito del bucle. (A?=? ""? o ?A?=? "?" ? o ?A?=? " ")
¿Colocar semilla de número aleatorio?()
A? =?(¿Tomar un número aleatorio? (27,?127))
¿Determinar la posición final del bucle? ()
A?=? al ancho completo? (A)
retorno?(A)
Subrutina?_clock1_cycle hilo de inicio (amp; número). ¿Salida de lluvia?