Este artigo descreve o pequeno jogo de jogar Gopherry implementado em Java. Compartilhe -o para sua referência, como segue:
Isso envolve conhecimento relacionado sobre tópicos Java e GUI. Um mini -jogo Java simples para lutar contra os Gophers. Amigos interessados podem otimizá -lo. Vamos dar uma olhada no efeito de execução:
Código específico:
Mouse.java:
importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.image; importar java.awt.toolkit; import java.awt.event.keyevent; import java.util.hashmap; importrapAp.Map.MavAp.event; x, y; guia privada int; Dados privados int; RD RD = novo aleatório (); Private Boolean Live = True; private int mousetime = 10; MC privado mousecliente; STATIC TOLSTIC STATION TK = Toolkit.getDefaultToolkit (); imagem estática privada [] imgs = null; mapa estático privado <imagem, string> imgkv = new hashmap <imagem, string> (); static {imgs = nova imagem [] {tk.getImage (mouse.class.getclassloader (). getResource ("imagens/a.png")), tk.getImage (mouse.class.getClassImage (). getResource ("imagens/b.png")), tk.gl.glast (). "Images/c.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/d.png")), tk.getImage (mouse.class.getclassloader (). "Images/f.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/g.png")), tk.getImage (mouse.classLover.glast). "Images/j.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/j.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/k.png")), tk.getiMage (). "Images/l.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/m.png")), tk.getImage (mouse.class.getclassloader (). "Images/O.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/p.png")), tk.getImage (mouse.class.getClassloader (). "Images/s.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/s.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/t.png")), tk.getImage (). "imagens/u.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/v.png")), tk.getImage (mouse.class.getClassloader (). "Images/x.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/y.png")), tk.getImage (mouse.classLover.glast). "Images/1.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/1.png"))), tk.getImage (mouse.class.getclassloader (). "Images/3.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/4.png"))), tk.getImage (mouse.class.getclassloader (). "Images/6.png")), tk.getImage (mouse.class.getclassloader (). getResource ("imagens/7.png")), tk.getImage (mouse.class.getclassloader (). "Images/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]; imgkv.put (imgs [28], "2"); imgkv.put (imgs [30], "4"); } mouse public (int x, guia int, mouseclient mc) {this.x = x; = 0; Mc.eclipsetime ++; {public void run () {while (true) {mousetime--;Mouseclient.java:
importar java.awt.color; importar java.awt.frame; importar java.awt.graphics; importar java.awt.image; importar java.awt.event.keyAdapter; importapter.awt.event.keyevent; import.event.event.wndapter; import.event.eevent; java.awT.Estent.Wadapter; java.util.ArrayList; importar java.util.list; importar java.util.random; public class mouseclient estende o quadro { /** especificações de toda a interface do jogo* / public static final int game_width = 1000; public static final int game_height = 700; public static int mousecount; public static int contou; public static int gametime; public static int eclipsetime; List <Mouse> Mouses = new ArrayList <Mouse> (); RD RD = novo aleatório (); public int initmouseCount = 2; // O número de Gophers exibido ao mesmo tempo Public Int [] tab = new int [10]; // Marque se existem Gophers na imagem da imagem fora da tela = NULL; /** Este método exibe a janela principal*/ public void LaunchFrame () {this.setLocation (200, 10); this.SetSize (game_width, game_height); this.setTitle ("Mouseclient"); this.addwindowlistener (new windowAdapter () {public void windowclosing (WindowEvent e) {System.exit (0);}}); this.setVisible (true); this.setBackground (color.green); this.setResizable (false); this.addkeyListener (new Keymonitor ()); novo thread (new PaintThread ()). start (); novo thread (novo gametime ()). start (); } classe privada gametime implementa runnable {public void run () {while (true) {gametime ++; tente {thread.sleep (1000); } catch (interruptedException e) {e.printStackTrace (); }}}}} classe privada PaintThread implementa runnable {public void run () {while (true) {repaint (); tente {thread.sleep (10); } catch (interruptedException e) {e.printStackTrace (); }}}} public void update (gráfico g) {if (offScreenImage == null) {offScreenImage = this.createImage (game_width, game_height); } Gráficos goffscreen = offScreenImage.getGraphics (); Cor c = Goffscreen.getColor (); goffscreen.setColor (color.green); goffscreen.fillrect (0, 0, game_width, game_height); Goffscreen.setColor (c); tinta (tela Goffcreen); G.Drawimage (OffScreenImage, 0, 0, NULL); } public void Paint (gráficos g) {color c = g.getColor (); g.setColor (color.gray); for (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 acertos:" + contagem, 20, 40); G.DrawString ("Número de acertos:" + MouseCount, 20, 60); G.DrawString ("Número de execuções:" + Eclipsetime + "", 20, 80); G.DrawString ("Número de execuções:" + Eclipsetime + "", 20, 80); G.DrawString ("Número de execuções:" + Eclipsetime + "", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 20, 80); G.DrawString ("Número de execuções:" + Eclipsetime + "", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 20, 80); G.DrawString ("Número de corridas:" + Gametime + "S", 2 100); if (mouseCount> = 80) initmouseCount = 8; caso contrário, if (mouseCount> = 50) initmouseCount = 6; caso contrário, 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; } guia [temp] = 1; mouses.add (novo mouse (game_width / 4 * (temp % 3 + 1) - 70, game_height / 4 * (temp / 3 + 1) - 100, temp, isso)); } 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 (); } classe privada Keymonitor estende KeyAdapter {public void keyreleased (keyEvent e) {System.out.println (e.getKeyCode ()); contagem ++; for (int i = 0; i <mouses.size (); i ++) {if (mouses.get (i) .KeyReleasesed (e)) quebra; }}}}Anexo: Clique aqui para baixar o código de exemplo completo.
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.