この記事では、Javaで実装されたGopherryをプレイする小さなゲームについて説明しています。次のように、参照のために共有してください。
これには、JavaスレッドとGUIに関する関連する知識が含まれます。 Gophersと戦うためのシンプルなJavaミニゲーム。興味のある友達はそれを最適化できます。実行中の効果を見てみましょう。
特定のコード:
Mouse.java:
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.util.util.map; public java.util.map; intal x、y;プライベートINTタブ。プライベートINTデータ;ランダムrd = new Random();プライベートブールライブ= true; Private int mousetime = 10;プライベートムーセリエントMC; Private Static Toolkit tk = toolkit.getDefaultToolkit(); private static image [] imgs = null; private static Map <image、string> imgkv = new Hashmap <image、string>(); static {imgs = new image [] {tk.getimage(mouse.class.getClassloader()。getResource( "Images/a.png"))、tk.getimage(mouse.class.getClassLoader()。 "Images/c.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/d.png"))、tk.getimage(mouse.class.getClassoloder()。 "/f.png"))、tk.getimage(mouse.class.getClassLoader()。getResource( "Images/g.png"))、tk.getimage(mouse.class.getClassoloader()。 "Images/j.png"))、tk.getimage(mouse.class.getClassLoader()。getResource( "Images/j.png"))、tk.getimage(mouse.class.getClassolaser()。 "Images/l.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/m.png"))、tk.getimage(mouse.class.getClassoloader()。 "/o.png"))、tk.getimage(mouse.class.getClassLoader()。getResource( "Images/p.png"))、tk.getimage(mouse.class.getClassoloder()。 "Images/s.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/s.png"))、tk.getimage(mouse.class.getClassloaser()。 "Images/u.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/v.png"))、tk.getimage(mouse.class.getClassoloader()。 "/x.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/y.png"))、tk.getimage(mouse.class.getClassoloader()。 "Images/1.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/1.png"))、tk.getimage(mouse.class.getClassoloder()。 "Images/3.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/4.png"))、tk.getimage(mouse.class.getClassolaser()。 "Images/6.png"))、tk.getimage(mouse.class.getClassloader()。getResource( "Images/7.png"))、tk.getimage(mouse.class.getClassoloder()。 "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]、" z "); imgkv.put(imgs [26]、" 0); imgkv -gent(27]; imgkv.put(29]、imgkv.put(imgkv.put); imgkv.put( "4"); } public x、int y、this.y.mc = rd.nextint(36); = 0、x、null)。 Mc.Eclipsetime ++ {public void run(){museTime-;mouseclient.java:
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.aw.aw.wind.event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Windowadapter; java.util.arraylist; import java.util.list; import java.util.random; public class mouseclientはフレーム{ /**ゲームインターフェイス全体の仕様* / public static final int game_width = 1000; public static final int game_height = 700; public static int mousecount; public static int count; public static int Gametime; public static int eclipsetime;リスト<Mouse> Mouses = new ArrayList <Mouse>();ランダムrd = new Random(); 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.setVisible(true); this.setbackground(color.green); this.SetSizable(false); this.addkeylistener(new keymonitor());新しいスレッド(new PaintThread())。start();新しいスレッド(new Gametime())。start(); } private class GameTime実装runnable {public void run(){while(true){gametime ++; try {thread.sleep(1000); } catch(arturnedexception e){e.printstacktrace(); }}}}}} private class paintthread runnable {public void run(){while(true){repaint(); try {thread.sleep(10); } catch(arturnedexception e){e.printstacktrace(); }}}} public void update(graphics g){if(offscreenimage == null){offscreenimage = this.createimage(game_width、game_height); } graphics 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.SetColor(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 temp; while(mouses.size()<initmousecount){temp = rd.nextint(9); while(tab [temp] == 1){temp ++; if(temp == 9)temp = 0; } tab [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()); count ++; for(int i = 0; i <mouses.size(); i ++){if(mouses.get(i).keyreleased(e))break; }}}}添付ファイル:ここをクリックして、完全なサンプルコードをダウンロードしてください。
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。