Este artículo describe el pequeño juego de jugar a Gopherry implementado en Java. Compártelo para su referencia, como sigue:
Esto implica un conocimiento relacionado sobre los hilos de Java y la GUI. Un simple juego de Java para luchar contra Gophers. Los amigos interesados pueden optimizarlo. Echemos un vistazo al efecto de carrera:
Código específico:
Mouse.java:
import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.Image; import java.awt.toolkit; import java.awt.event.keyevent; import java.util.hashmap; import java.util.map; importar java.utilil.util.util x, y; pestaña privada int; datos privados int; RD aleatorio = new Random (); Private Boolean Live = True; privado int mouseTime = 10; MC MOUSECLIENTE PRIVADO; kit de herramientas estáticas privadas tk = toolkit.getDefaultToolkit (); Imagen estática privada [] imgs = nulo; Mapa estático privado <Image, String> imgkv = new Hashmap <Image, String> (); static {imgs = new image [] {tk.getImage (mouse.class.getclassloader (). getResource ("imágenes/a.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/b.png")), tk.getimage (mouse.getClassLoader (getResource (). "Images/c.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/d.png")), tk.getImage (mouse.class.getClassLoader (). getResource ("Images/e.png")), tk.getimage (mouse.getClassLoader (). "Images/f.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/g.png")), tk.getImage (mouse.class.getclassLoader (). getResource ("Images/h.png")), tk.getimage (mouse.class.classloader () (). "Images/j.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/j.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/k.png")), tk.getimage (mouse.class.getClassloader () () (). "Images/l.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/m.png")), tk.getImage (mouse.class.getClassLoader (). getResource ("Images/n.png")), tk.getiMage (mouse.getClassLoader () "Images/o.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/p.png")), tk.getImage (mouse.class.getclassassloader (). getResource ("Images/q.png")), tk.getiMage (mouse.classclasscarer () (). "Images/s.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/s.png")), tk.getImage (mouse.class.getClassLoader (). getResource ("Images/t.png")), tk.getiMage (mouse.class.getClassloader () () (). "Images/u.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/v.png")), tk.getImage (mouse.class.getclassLoader (). getResource ("Images/w.png")), tk.getiMage (mOUSE.Class.getClassLoader () (). "Images/x.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/y.png")), tk.getImage (mouse.class.getclassLoader (). getResource ("Images/z.png")), tk.getiMage (mouse.class.classloader () (). "Images/1.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imágenes/1.png")), tk.getImage (mouse.class.getclassassloader (). getResource ("imágenes/2.png")), tk.getimage (mouse.class.getClassloader () "Images/3.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imágenes/4.png")), tk.getImage (mouse.class.getClassLoader (). getResource ("imágenes/5.png")), tk.getimage (mouse.class.getClassloader () "Images/6.png")), tk.getImage (mouse.class.getclassloader (). getResource ("Images/7.png")), tk.getImage (mouse.class.getclassassloader (). getResource ("imágenes/8.png")), tk.getimage (mouse.class.getClassLoader () "Imágenes/9.png"))}; imgkv.put (imgs [0], "A"); imgkv.put (imgs [1], "b"); imgkv.put (imgs [2], "c"); imgkv.put (imgs [3], "d"); imgkv.put (imgs [4], "e"); imgkv.put (imgs [5], "f"); imgkv.put (imgs [6], "g"); imgkv.put (imgs [7], "h"); imgkv.put (imgs [8], "i"); imgkv.put (imgs [9], "j"); imgkv.put (imgs [10], "k"); imgkv.put (imgs [11], "l"); imgkv.put (imgs [12], "m"); imgkv.put (imgs [12], "m"); imgkv.put (imgs [10], "k"); imgkv.put (imgs [11], "l"); imgkv.put (imgs [12], "m"); imgkv.put (imgs [13], "n"); imgkv.put (imgs [14], "o"); imgkv.put (imgs [15], "p"); imgkv.put (imgs [16], "Q"); imgkv.put (imgs [17], "r"); imgkv.put (imgs [18], "s"); imgkv.put (imgs [19], "t"); imgkv.put (imgs [20], "u"); imgkv.put (imgs [21], "v"); imgkv.put (imgs [22], "w"); imgkv.put (imgs [22], "w"); imgkv.put (imgs [20], "u"); imgkv.put (imgs [21], "v"); imgkv.put (imgs [22], "w"); imgkv.put (imgs [22]); imgkv.put (imgs [22 "); imgkv.put (imgs [23]," x "); imgkv.put (imgs [24]," y "); imgkv.put (imgs [25]," z "); imgkv.put (imgs [26]," 0 "); img.put (imgs [27]," 1 "); imgkv.put (imgs [28], "2"); imgkv.put (imgs [30], "4"); } Public mouse (int x, int y, int, mouseClient MC) {this.x = x; = 0 return; Mc.eclipsetime ++; {public void run () {while (true) {mouseTime--;Mouseclient.java:
import java.awt.Color;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.arrayList; import java.util.list; import java.util.random; public class Mouseclient extiende marco { /** Especificaciones de toda la interfaz del juego* / public static final int juego_width = 1000; Public static final int juego_height = 700; Pública estática int mousecount; Conteo público estático público; Pública estática int gametime; Pública estática int eclipSetime; Lista <Mouse> Mouses = New ArrayList <Mouse> (); RD aleatorio = new Random (); public int initMouseCount = 2; // El número de gophers que se muestran al mismo tiempo pública int [] tab = new int [10]; // Marque si hay gophers en la imagen de box fuera de la pantalla = nulo; /** Este método muestra la ventana principal*/ public void Launchframe () {this.setLocation (200, 10); this.setsize (game_width, game_height); this.settitle ("mouseclient"); this.addwindowlistener (nuevo WindowAdapter () {public void WindowClosing (WindowsEvent E) {System.exit (0);}}); this.setVisible (verdadero); this.setbackground (color.green); this.setResizable (falso); this.addkeylistener (new KeyMonitor ()); nuevo hilo (new PaintThread ()). Start (); nuevo hilo (new GameTime ()). Start (); } private clase gameTime implementos runnable {public void run () {while (true) {gameTime ++; intente {Thread.sleep (1000); } catch (InterruptedException e) {E.PrintStackTrace (); }}}}} de la clase privada pintThread implementos runnables {public void run () {while (true) {repint (); intente {thread.sleep (10); } catch (InterruptedException e) {E.PrintStackTrace (); }}}} public void Update (Graphics g) {if (OffSeNImage == NULL) {OffSeNImage = this.CreateImage (Game_Width, Game_Height); } Gráficos goffscreen = OffSeNImage.getGraphics (); Color c = goffscreen.getColor (); goffscreen.setColor (color.green); goffscreen.fillrect (0, 0, game_width, game_height); goffscreen.setColor (c); pintura (goffscreen); G.DrawImage (fuera de escena, 0, 0, nulo); } public void Paint (Graphics g) {color c = g.getColor (); G.SetColor (color.gray); para (int i = 1; i <= 3; i ++) para (int j = 1; j <= 3; j ++) g.filloval (game_width / 4 * i - 60, game_height / 4 * j - 25, 120, 50); G.SetColor (C); G.DrawString ("Número de golpes:" + recuento, 20, 40); G.DrawString ("Número de golpes:" + MouseCount, 20, 60); G.DrawString ("Número de ejecuciones:" + eclipsetime + "", 20, 80); G.DrawString ("Número de ejecuciones:" + eclipsetime + "", 20, 80); G.DrawString ("Número de ejecuciones:" + eclipsetime + "", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 20, 80); G.DrawString ("Número de ejecuciones:" + eclipsetime + "", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 20, 80); G.DrawString ("Número de ejecuciones:" + GameTime + "S", 2 100); if (mouseCount> = 80) initMouseCount = 8; else if (mouseCount> = 50) initMouseCount = 6; else if (mouseCount> = 20) initMouseCount = 4; int temp; while (mouses.size () <initMouseCount) {temp = rd.nextint (9); while (tab [temp] == 1) {temp ++; if (temp == 9) temp = 0; } tab [temp] = 1; mouses.add (nuevo mouse (game_width / 4 * (tempt % 3 + 1) - 70, game_height / 4 * (temp / 3 + 1) - 100, temp, this)); } para (int i = 0; i <mouses.size (); i ++) {mouse m = mouses.get (i); m.draw (g); }} public static void main (string [] args) {mouseClient km = new MouseClient (); KM.LaunchFrame (); } La clase privada KyMonitor extiende KeyAdapter {public void KeyReleaded (KeyEvent E) {System.out.println (E.GetKeyCode ()); contar ++; para (int i = 0; i <mouses.size (); i ++) {if (mouses.get (i) .KeyReleaded (e)) ruptura; }}}}Anexo: haga clic aquí para descargar el código de ejemplo completo.
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.