600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Java 实现 捕鱼达人 小游戏【附源码】

Java 实现 捕鱼达人 小游戏【附源码】

时间:2021-01-16 07:27:50

相关推荐

Java 实现 捕鱼达人 小游戏【附源码】

博主介绍:🚀自媒体 JavaPub 独立维护人,全网粉丝15w+,csdn博客专家、java领域优质创作者,51ctoTOP10博主,知乎/掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和副业。🚀

公众号:JavaPub⭐ ⭐简历模板、学习资料、面试题库等都给你💪

🍅文末获取源码🍅 无套路,免费领取

原文:/

适合人群:Java 学习者和爱好者,下面有展示图。

文章目录

1 前言2 正文2.1 展示2.2 项目结构2.2 主要代码2.4 按钮相关类2.5 启动类系列推荐:源码获取:

1 前言

🚀获取源码,文末公众号回复【捕鱼达人】,即可。

⭐欢迎点赞留言

2 正文

公众号:JavaPub

2.1 展示

3MB GIF可以欣赏:/large/007F3CC8ly1h0r46sr2twg31190pmqv7.gif

2.2 项目结构

2.2 主要代码

package org.gpf.fishlord;import java.io.IOException;import javax.swing.JFrame;import javax.swing.JOptionPane;/*** 游戏窗体* @author gaopengfei* @date -4-12 下午7:39:19*/public class FishlordFrame extends JFrame {public static final int WIDTH = 800;public static final int HEIGHT = 480;private Pool pool;/*** 构造器中初始化界面*/public FishlordFrame() {this.setTitle("捕鱼达人");this.setSize(WIDTH, HEIGHT);this.setLocationRelativeTo(null); // 设置窗口居中,必须放在setSize之后this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);try {pool = new Pool();this.getContentPane().add(pool);this.setVisible(true);pool.action();} catch (IOException e) {JOptionPane.showMessageDialog(this, "加载资源失败!","应用程序错误",JOptionPane.ERROR_MESSAGE);e.printStackTrace();} catch (Exception e) {JOptionPane.showMessageDialog(this, "初始化游戏失败!","应用程序错误",JOptionPane.ERROR_MESSAGE);e.printStackTrace();}}}

2.4 按钮相关类

package org.gpf.fishlord;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;class Fish implements Runnable {private static final int BASE_STEP = 5;// x和y坐标的步进值的参考标准int speedOfFish = 20;// 控制鱼的速度int x, y, index, width, height, xStep,yStep;BufferedImage fishImage;// 当前鱼的背景图BufferedImage[] fishImages = new BufferedImage[10];// 一条鱼的所有帧的图片Random r;// 产生随机数/*** 在构造器中初始化鱼的属性* @param fishname* @throws IOException*/public Fish(String fishName) throws IOException {// 加载鱼的图片BufferedImage tempFishImage;String resourceName;for (int i = 0; i < 10; i++) {if (i!=9) {resourceName = "/images/" + fishName + "_0" + (i+1) + ".png";}else {resourceName = "/images/" + fishName + "_" + (i+1) + ".png";}tempFishImage = ImageIO.read(getClass().getResourceAsStream(resourceName));fishImages[i] = tempFishImage;}fishImage = fishImages[index];width = fishImage.getWidth(); // 根据背景图片的宽高设置鱼所占矩形区域的大小height = fishImage.getHeight();goInPool();}/*** 维持鱼的游动---x和y坐标的变化*/public void run() {while (true) {try {Thread.sleep(speedOfFish); // 如果不休眠,鱼的速度过快,基本感觉不到鱼的存在。视觉暂留:1/24~1/7秒之间index++;fishImage = fishImages[index % fishImages.length]; // 轮流切换帧,生成动画x = x - xStep;int temp = r.nextInt(10) + 1;yStep = r.nextBoolean()?temp:-temp;//y = y + yStep;// 判断鱼是否到了边界,因为鱼是从右面进入的,因此只需要判断3个方向if (x <= 0 || y <= 0 || y >= 480){goInPool();}} catch (InterruptedException e) {e.printStackTrace();}}}/*** 判断鱼是否在网内*/public boolean fishInNet(int netX, int netY) {int dx = netX - x;int dy = netY - y;return dx >= 0 && dx <= width && dy >= 0 && dy <= height;}/*** 鱼从屏幕上游出或者被网罩住的时候消失,再从屏幕的右侧游动到屏幕中,实际上还是那几条鱼*/void goInPool() {r = new Random();x = FishlordFrame.WIDTH - 10;// 鱼从右侧游动到屏幕左侧y = r.nextInt(FishlordFrame.HEIGHT - 20 - height);// 鱼的初始y的坐标是根据窗体的高度随机指定的xStep = r.nextInt(BASE_STEP) + 1;// 鱼游动的速度是随机的 }}

2.5 启动类

package com.dq.ui;public class StartGame {public static void main(String[] args) {new SnakeFrame();}}

获取源码,公众号回复【捕鱼达人】,见公 ~

不会还有人没点赞 + 关注 + 收藏吧!

系列推荐:

Java 实现 捕鱼达人 小游戏【附源码】

Java 实现 贪吃蛇 小游戏【附源码】

Java 实现 1024 小游戏【附源码】

Java实现一个坦克大战的小游戏【附源码】

Java实现一个打飞机的小游戏【附源码】

Java 实现 植物大战僵尸 小游戏【附源码】

项目源码获取方法

点赞本文,然后私信我,我免费分享给你哈~

源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻

精彩专栏推荐订阅:在下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例《101套》

web前端期末大作业网页实战《365套》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。