一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java實現的打地鼠小游戲完整示例【附源碼下載】

Java實現的打地鼠小游戲完整示例【附源碼下載】

2021-05-12 15:13竹有節 Java教程

這篇文章主要介紹了Java實現的打地鼠小游戲,結合完整實例形式分析了Java多線程操作及鍵盤按鍵響應實現的打地鼠游戲功能相關操作技巧,需要的朋友可以參考下

本文實例講述了java實現的打地鼠小游戲。分享給大家供大家參考,具體如下:

這里涉及到java線程和gui的相關知識,一個簡單的java小游戲打地鼠,有興趣的朋友可以優化一下。先來看看運行效果:

Java實現的打地鼠小游戲完整示例【附源碼下載】

具體代碼:

mouse.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
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.util.random;
public class mouse {
  private int x, y;
  private int tab;
  private int data;
  random rd = new random();
  private boolean live = true;
  private int mousetime = 10;
  private mouseclient 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().getresource(
            "images/b.png")),
        tk.getimage(mouse.class.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.class.getclassloader().getresource(
            "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.getclassloader().getresource(
            "images/i.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/j.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/k.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/l.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/m.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/n.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/o.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/p.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/q.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/r.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/s.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/t.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "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().getresource(
            "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.getclassloader().getresource(
            "images/0.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/1.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/2.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/3.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/4.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/5.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/6.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/7.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "images/8.png")),
        tk.getimage(mouse.class.getclassloader().getresource(
            "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[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[23], "x");
    imgkv.put(imgs[24], "y");
    imgkv.put(imgs[25], "z");
    imgkv.put(imgs[26], "0");
    imgkv.put(imgs[27], "1");
    imgkv.put(imgs[28], "2");
    imgkv.put(imgs[29], "3");
    imgkv.put(imgs[30], "4");
    imgkv.put(imgs[31], "5");
    imgkv.put(imgs[32], "6");
    imgkv.put(imgs[33], "7");
    imgkv.put(imgs[34], "8");
    imgkv.put(imgs[35], "9");
  }
  public mouse(int x, int y, int tab, mouseclient mc) {
    this.x = x;
    this.y = y;
    this.tab = tab;
    this.mc = mc;
    data = rd.nextint(36);
    new thread(new mousetime()).start();
  }
  public void draw(graphics g) {
    if (!live) {
      mc.mouses.remove(this);
      mc.tab[tab] = 0;
      return;
    }
    g.drawimage(imgs[data], x, y, null);
    color c = g.getcolor();
    g.setcolor(color.gray);
    g.setfont(new font(null, 1, 40));
    g.drawstring("" + mousetime, x + 50, y + 10);
    if (mousetime <= 0) {
      this.live = false;
      mc.eclipsetime++;
    }
  }
  public boolean keyreleased(keyevent e) {
    int key = imgkv.get(imgs[data]).charat(0);
    if (e.getkeycode() == key) {
      system.out.println(key);
      mc.mousecount++;
      this.live = false;
      return true;
    }
    return false;
  }
  private class mousetime implements runnable {
    public void run() {
      while (true) {
        mousetime--;
        try {
          thread.sleep(1000);
        } catch (interruptedexception e) {
          e.printstacktrace();
        }
      }
    }
  }
}

mouseclient.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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 extends frame {
  /*
   * 整個游戲界面的規格
   */
  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;
  list<mouse> mouses = new arraylist<mouse>();
  random rd = new random();
  public int initmousecount = 2;// 同時顯示的地鼠數
  public int[] tab = new int[10];// 標記坑里是否有地鼠
  image 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.setresizable(false);
    this.addkeylistener(new keymonitor());
    new thread(new paintthread()).start();
    new thread(new gametime()).start();
  }
  private class gametime implements runnable {
    public void run() {
      while (true) {
        gametime++;
        try {
          thread.sleep(1000);
        } catch (interruptedexception e) {
          e.printstacktrace();
        }
      }
    }
  }
  private class paintthread implements runnable {
    public void run() {
      while (true) {
        repaint();
        try {
          thread.sleep(10);
        } catch (interruptedexception 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);
    paint(goffscreen);
    g.drawimage(offscreenimage, 0, 0, null);
  }
  public void paint(graphics 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("時間:" + gametime + "s", 20, 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 extends 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程序設計有所幫助。

原文鏈接:https://download.csdn.net/download/u014307823/9160981

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一卡2卡3卡4卡公司科普 | 免费片在线观看 | 亚洲无限观看 | 久久伊人电影 | 日韩视频一区二区 | segou视频在线观看 | 国产在线视频福利 | 日本高清在线播放一区二区三区 | aⅴ天堂小视频 | 亚洲福利一区二区精品秒拍 | free性泰国女人hd | 波多野结衣中文字幕乱七八糟 | 国产高清在线精品一区 | 国产一区二区免费在线 | 麻麻与子乱肉小说怀孕 | 欧美丝袜foot job | 欧美日韩一区二区三区在线观看 | 亚洲大尺码 | 精品国产91久久久久 | 色综合欧美色综合七久久 | 无人区尖叫之夜美女姐姐视频 | 91最新国产 | 亚洲精品一区二区久久久久 | www日本高清视频 | 精品在线免费观看视频 | 亚洲成年网站在线观看 | 草榴色导航 | 第一国内永久免费福利视频 | 欧美综合色网 | 天天色天天舔 | 免费国产一级观看完整版 | 操弄哥哥的108种姿势 | 欧美一级一级做性视频 | 星空传媒在线视频 | 免费视频专区一国产盗摄 | 青春娱乐国产分类精品二 | 521色香蕉网站在线观看 | 国产成人无精品久久久 | 日本特黄一级午夜剧场毛片 | 美女被视频网站看免费入口 | 好大用力深一点女公交车 |