Código fuente de la aplicación de demostración de recompensa
Comience con el método principal, que es el punto de entrada del programa. ? Primero, genere un objeto TestHoney, que se deriva de la clase Frame. En principal, las propiedades de esta ventana se configuran primero con setSize. Aquí están el color y el tamaño del fondo, y setVisible es para mostrar TestHoney. Entonces Graphics g = th . get Graphics(); obtiene una instancia de Graphics, porque Graphics es una clase abstracta y no puede usar directamente new Graphics() para generar objetos. De hecho, aquí get gráficos(); obtiene un ejemplo de una subclase de gráficos. Luego genera una instancia de la bala de cañón. Entremos en el circuito. En el bucle, primero duerma (4), primero duerma durante 4 milisegundos, es decir, este bucle no se puede ejecutar continuamente, por lo que la CPU se volverá loca. Y después de dormir (4), ejecute el siguiente código una vez para implementar el redibujado de imágenes y la detección de información. Vuelva a dibujar cada 4 milisegundos. Rápido, pero no necesario. (Además, la imagen en movimiento aquí se vuelve a dibujar en la pantalla cada 4 milisegundos. Debido a que el intervalo es corto, los ojos sienten que la imagen está en movimiento continuo). El sueño puede generar excepciones e intentar detectarlas. cb.paint(g, x 1); hacerlo cada 4 milisegundos es lo más importante. El propósito de agregar un parámetro adicional x1 es pasar el valor de la coordenada X de la elipse azul a la bala de cañón, de modo que el punto rojo permanezca con la elipse cuando no se dispare.
Clase Cannonball:
Estático int y=560, puntuación = 0; Y aquí debería ser "bala", que es la coordenada Y del "punto rojo" en la imagen ( en píxeles como unidades). La puntuación es la puntuación, int temp=240, que debe ser el valor de la coordenada x del punto rojo inicializado, que inicialmente es 240. Luego obtenga el objeto
ClassLoader, que se usa principalmente para el siguiente objeto AudioClip, que se usa al cargar archivos de sonido. ? El siguiente es un método de dibujo para dibujar y emitir juicios. Primero, se define int t. Según el código posterior, T se utiliza para registrar el número de líneas de puntos negros en la imagen. if(y = = 560)temp = x2; cuando y es igual a 560, significa que el punto rojo no se ha disparado. Como se puede ver en el código siguiente, cuando el punto rojo golpea el punto negro, también se crea y == 560, lo que significa que cuando la bala golpea el punto negro, regresa automáticamente a la posición inicial. A continuación se muestra la parte del dibujo, dibujando en la ubicación especificada. Tenga en cuenta que hay una y- aquí. Tenga en cuenta que el método de pintura se llama cada 4 milisegundos, es decir, y- se llama cada 4 milisegundos, lo que reduce la coordenada y del punto rojo en 1 y mueve el punto rojo hacia arriba. A continuación se muestran un montón de juicios, que consisten en juzgar si el punto rojo toca el punto negro. Si es así, el punto rojo volverá a su posición inicial (y=560). Si y==0, es decir, aún no se ha alcanzado el punto negro, la pantalla (ventana del programa) se ha abierto, por lo que volverá a la posición inicial.
Clase TestHoney
Static int a=200, que es el valor x inicial de la elipse azul. Utilice una matriz de dos dígitos para dibujar puntos negros, igual a 1, lo que indica que hay un punto negro en esa posición; de lo contrario, no hay ningún punto negro. ClassLoader y AudioClip también se utilizan para generar sonidos. Hay dos addlisteners aquí. El primero, addWindowListener, monitorea si TestHoney se agrega a la ventana (debido a que TestHoney se deriva de la clase Frame, ¿se puede agregar esto)? Anula el método windowClosing en WindowAdapter. De hecho, la clase WindowAdapter implementa todos los métodos abstractos en WindowListener, pero todas son implementaciones vacías. Es decir, después de escribir la declaración del método, agregue un {} a continuación y no escriba nada en {}. Si no utiliza WindowAdapter, utilice WindowListener directamente. Debido a que es abstracto, es necesario implementar todos los métodos que contiene, pero muchos métodos son inútiles para este programa.
Por ejemplo, hay un método windowClosed que es inútil, pero aún es necesario escribirlo. Así que simplemente use WindowAdapter y reescriba directamente el método que desea usar. ? El método windowClosing se reescribe aquí, es decir, el mouse hace clic en la "X" roja en la esquina superior derecha del programa para cerrar la función. Si no se agrega, "X" no cerrará el programa.
Agregue KeyLIstener a continuación para agregar monitoreo de teclado. VK _right apunta a la tecla → en el teclado, es decir, después de presionar →, x 1+= 10 (el óvalo azul se mueve hacia la derecha) Lo mismo ocurre con todos los demás. Tenga en cuenta que hay un repintado(). En public void Keypressed (KeyEvent e), este método se llama automáticamente cuando se presiona una tecla en el teclado, y se llama a repaint () cada vez que se presiona, es decir, se logra volver a dibujar. TestHoney hereda este método de la clase principal. No parece estar escrito aquí, pero se hereda, lo que significa volver a dibujar y actualizar la imagen.
Luego está el método paint(), que consiste en dibujar puntos negros según sea necesario. No hay mucho que decir.
En resumen, esta es la situación inicial como se muestra en la figura. Presione "→" o "↓" para moverse hacia la izquierda y hacia la derecha respectivamente, y presione "ESPACIO" (barra espaciadora) para iniciar. (Y = 559 después de presionar. En "Cannonball", se considera que mientras Y sea menor que 560, Y- comenzará y el punto rojo continuará moviéndose hacia arriba). Determine la posición del punto rojo y la posición del punto negro. Después de tocar el punto negro, el punto rojo Y cambia a 560, lo que significa que regresa a la elipse, y el valor de la matriz bidimensional correspondiente a la posición del punto negro se vuelve 0, lo que indica que no hay ningún punto negro en ese lugar. . Si no se alcanza el punto rojo, porque y- sigue ejecutándose, y finalmente llega a 0, luego cambia a 560 y regresa a la elipse, completando un ciclo.
Se vuelve a dibujar cada 4 milisegundos y se actualiza constantemente.