이 기사는 Java에서 구현 된 Gopherry를 재생하는 작은 게임에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
여기에는 Java 스레드 및 GUI에 대한 관련 지식이 포함됩니다. 고퍼와 싸우는 간단한 자바 미니 게임. 관심있는 친구들은 그것을 최적화 할 수 있습니다. 실행 효과를 살펴 보겠습니다.
특정 코드 :
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; import java.random; x, y; 개인 int 탭; 개인 INT 데이터; 랜덤 rd = 새로운 랜덤 (); 개인 부울 라이브 = 참; 개인 int MouseTime = 10; 개인 Mouseclient MC; 개인 정적 툴킷 tk = Toolkit.getDefaultToolKit (); 개인 정적 이미지 [] imgs = null; 비공개 정적 맵 <이미지, 문자열> imgkv = new Hashmap <이미지, 문자열> (); static {imgs = new Image [] {tk.getImage (mouse.class.getClassLoader (). getResource ( "images/a.png"), tk.getImage (mouse.class.getClassLoader (). "이미지/c.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/d.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/e.png"), tk.getImage (mouse.getClass.getClass.getClass.getClass.getClass.getClass.getClass.getsource). "이미지/f.png")), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/g.png"), tk.getImage (mouse.class.getClassLoader (). "이미지/j.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/j.png"), tk.getImage (mouse.class.getClassLoader (). "images/l.png")), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/m.png"), tk.getImage (mouse.class.getClassLoader (). "이미지/o.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/p.png"), tk.getImage (mouse.class.getClassLoader (). "이미지/s.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/s.png"), tk.getImage (mouse.class.getClassLoader (). "이미지/u.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/v.png"), tk.getImage (mouse.class.getClassLoader (). "이미지/x.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/y.png"), tk.getImage (mouse.class.getClassLoader (). "images/1.png")), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/1.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/2.png"), tk.getImage (mouse.getClass.getClass.getClass.getClass.getClass.getClass.getClass. "이미지/3.png")), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/4.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/5.png"), tk.getImage (mouse.getClass.getClass.getClass.getClass.getClass.getClass.getClass. "이미지/6.png")), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/7.png"), tk.getImage (mouse.class.getClassLoader (). getResource ( "images/8.png"), tk.getImage (mouse.getclass.getClass.getClass.getClass.getClass.getClass.getClass.getsource). "이미지/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 "); Imgk. Imgk. } int x, int 탭, this.y = y; = 0; IMGS [데이터], x, g.getColor (); mc.eclipsime ++}} int key = imgs [data] {public void run () {true) {thread.sleep (1000) {e.printstacktrace (}}}};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; java.awt.event java.util.arraylist; import java.util.list; import java.util.random; public class mouseclient 확장 프레임 { /** 전체 게임 인터페이스의 사양* / public static final int game_width = 1000; 공개 정적 최종 int game_height = 700; 공공 정적 int MouseCount; 공개 정적 int 수; 공개 정적 인트 게임 타임; 공개 정적 int eclipsetime; 목록 <Mouse> Mouses = New ArrayList <Mouse> (); 랜덤 rd = 새로운 랜덤 (); public int initmousecount = 2; // 동시에 표시되는 Gophers의 수는 public int [] tab = new int [10]; // 구덩이 이미지에 Gophers가 있는지 여부를 offscreenimage = null; /**이 메소드는 기본 창을 표시합니다*/ 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.set -Visible (true); this.setbackground (color.green); this.setResizable (false); this.addkeylistener (new keymonitor ()); 새 스레드 (new Paintthread ()). start (); 새 스레드 (new Gametime ()). start (); } private class gametime emplements runnable {public void run () {while (true) {gametime ++; try {thread.sleep (1000); } catch (InterruptedException e) {e.printstacktrace (); }}}}} private class paintthread는 runnable {public void run () {while (true) {repaint (); try {thread.sleep (10); } catch (InterruptedException e) {e.printstacktrace (); }}}} public void update (그래픽 g) {if (offscreenImage == null) {offscreenImage = this.createImage (game_width, game_height); } 그래픽 GoffScreen = OffScreenImage.getGraphics (); Color C = Goffscreen.getColor (); Goffscreen.setColor (Color.Green); Goffscreen.fillRect (0, 0, Game_width, Game_height); Goffscreen.setColor (c); 페인트 (Goffscreen); G.DrawImage (OffscreenImage, 0, 0, NULL); } public void Paint (그래픽 g) {color c = g.getColor (); g.setcolor (color.gray); for (int i = 1; i <= 3; i ++) for (int j = 1; j <= 3; j ++) g.filloval (game_width / 4 * i -60, game_height / 4 * j -25, 120, 50); G. 세트 콜러 (c); G.DrawString ( "적중 수 :" + count, 20, 40); G.DrawString ( "적중 수 :" + MouseCount, 20, 60); G.DrawString ( "실행 수 :" + eclipsetime + "", 20, 80); G.DrawString ( "실행 수 :" + eclipsetime + "", 20, 80); G.DrawString ( "실행 수 :" + eclipsetime + "", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 20, 80); G.DrawString ( "실행 수 :" + eclipsetime + "", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 20, 80); G.DrawString ( "실행 수 :" + gametime + "s", 2 100); if (mousecount> = 80) initMouseCount = 8; else if (mousecount> = 50) initMouseCount = 6; else if (mousecount> = 20) initMouseCount = 4; int 온도; while (mouses.size () <initmousecount) {temp = rd.nextint (9); while (탭 [temp] == 1) {temp ++; if (temp == 9) temp = 0; } 탭 [temp] = 1; mouses.add (new Mouse (game_width / 4 * (temp % 3 + 1) - 70, game_height / 4 * (temp / 3 + 1) - 100, temp, this); } for (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 (); } private class keymonitor 확장 keyadapter {public void keyreleased (keyevent e) {system.out.println (e.getKeyCode ()); 카운트 ++; for (int i = 0; i <mouses.size (); i ++) {if (mouses.get (i) .keyReleded (e)) break; }}}}첨부 파일 : 여기를 클릭하여 전체 예제 코드를 다운로드하십시오 .
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.