最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)的打地鼠小游戲完整示例【附源碼下載】

 更新時(shí)間:2018年07月02日 08:50:22   作者:竹有節(jié)  
這篇文章主要介紹了Java實(shí)現(xiàn)的打地鼠小游戲,結(jié)合完整實(shí)例形式分析了Java多線程操作及鍵盤按鍵響應(yīng)實(shí)現(xiàn)的打地鼠游戲功能相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java實(shí)現(xiàn)的打地鼠小游戲。分享給大家供大家參考,具體如下:

這里涉及到j(luò)ava線程和GUI的相關(guān)知識,一個(gè)簡單的java小游戲打地鼠,有興趣的朋友可以優(yōu)化一下。先來看看運(yùn)行效果:

具體代碼:

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.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:

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 {
  /*
   * 整個(gè)游戲界面的規(guī)格
   */
  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;// 同時(shí)顯示的地鼠數(shù)
  public int[] tab = new int[10];// 標(biāo)記坑里是否有地鼠
  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("擊打數(shù):" + count, 20, 40);
    g.drawString("擊中數(shù):" + mouseCount, 20, 60);
    g.drawString("逃跑數(shù):" + eclipseTime + "", 20, 80);
    g.drawString("時(shí)間:" + 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;
      }
    }
  }
}

附:完整實(shí)例代碼點(diǎn)擊此處本站下載。

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Spring Boot簡介與快速搭建詳細(xì)步驟

    Spring Boot簡介與快速搭建詳細(xì)步驟

    SpringBoot其本身沒有添加什么新的技術(shù),就是整合了一些現(xiàn)有的框架,并提供了一些默認(rèn)的配置,就是這些默認(rèn)的配置,極大的提高了我們的開發(fā)效率。這篇文章主要介紹了Spring Boot簡介與快速搭建,需要的朋友可以參考下
    2021-05-05
  • Springboot教程之如何設(shè)置springboot熱重啟

    Springboot教程之如何設(shè)置springboot熱重啟

    這篇文章主要介紹了Springboot教程之如何設(shè)置springboot熱重啟,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 基于ArrayList常用方法的源碼全面解析

    基于ArrayList常用方法的源碼全面解析

    下面小編就為大家?guī)硪黄贏rrayList常用方法的源碼全面解析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Eclipse 項(xiàng)目出現(xiàn)錯(cuò)誤(紅色嘆號)解決方法

    Eclipse 項(xiàng)目出現(xiàn)錯(cuò)誤(紅色嘆號)解決方法

    這篇文章主要介紹了Eclipse 項(xiàng)目出現(xiàn)錯(cuò)誤(紅色嘆號)解決方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java實(shí)現(xiàn)基于UDP協(xié)議網(wǎng)絡(luò)Socket編程(C/S通信)

    java實(shí)現(xiàn)基于UDP協(xié)議網(wǎng)絡(luò)Socket編程(C/S通信)

    這篇文章主要介紹了java實(shí)現(xiàn)基于UDP協(xié)議網(wǎng)絡(luò)Socket編程(C/S通信),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java中常用加密/解密方法詳解

    Java中常用加密/解密方法詳解

    本文主要介紹了Java中常用加密/解密方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • java 數(shù)組轉(zhuǎn)list的兩種方式

    java 數(shù)組轉(zhuǎn)list的兩種方式

    這篇文章主要介紹了java 數(shù)組轉(zhuǎn)list的兩種方式,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • Spring Boot集成Thymeleaf模板引擎的完整步驟

    Spring Boot集成Thymeleaf模板引擎的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot集成Thymeleaf模板引擎的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • maven倉庫訪問順序小結(jié)

    maven倉庫訪問順序小結(jié)

    在日常操作中,相信很多人在maven倉庫的優(yōu)先級順序是什么問題上存在疑惑,本文就來介紹一下maven倉庫訪問順序,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • spring boot項(xiàng)目打包成war在tomcat運(yùn)行的全步驟

    spring boot項(xiàng)目打包成war在tomcat運(yùn)行的全步驟

    這篇文章主要給大家介紹了關(guān)于spring boot項(xiàng)目打包成war在tomcat運(yùn)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

福州市| 秦皇岛市| 珠海市| 普格县| 荆门市| 昌黎县| 广丰县| 千阳县| 繁峙县| 大宁县| 桐庐县| 丰顺县| 西林县| 黑水县| 武隆县| 攀枝花市| 庄浪县| 祁连县| 改则县| 红河县| 交口县| 连山| 琼结县| 田林县| 焦作市| 紫金县| 巢湖市| 五指山市| 石首市| 克什克腾旗| 扶余县| 龙井市| 桦南县| 子长县| 博爱县| 大田县| 昌吉市| 苍溪县| 涟水县| 崇文区| 蓝山县|