Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计
Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计
有图有真相
操作方法:ASDW控制移动,鼠标控制炮筒旋转,鼠标左键开枪,空格发射炮弹,
开发思路是标准的游戏开发思路,单线程帧率控制,调度器,绘图API,补间动画,技能冷却条,监听器,全都安排。
https://www.bilibili.com/video/BV1H54y1b7e9/
视频教程在这里,好好学习,天天向上,
收藏,点赞,好评,快来给我也安排一波
部分代码:
创建JFrame窗口,由于标题栏和边框也占用空间,所以实际内容和我们设置的尺寸会有出入,因此我们计算差值,重新设置尺寸,确保游戏画板的尺寸和我们预设的相同。
public class GameWindow extends JFrame {public GameWindow(){this.setSize(860,640);this.setLocationRelativeTo(null);//this.setResizable(false);this.setTitle("坦克大战 V1.0");this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.add(panel);int w = this.getContentPane().getSize().width;int h = this.getContentPane().getSize().height;System.out.println(w);System.out.println(h);int cw = 860-w;int ch = 640-h;this.setSize(860+cw,640+ch);}
}
鼠标监听:
MouseAdapter adapter = new MouseAdapter() {@Overridepublic void mouseMoved(MouseEvent e) {//System.out.println(e.getX()+","+e.getY());double x = e.getX()-8;double y = e.getY()-32;tank.turretDir = Utils.ppDir(tank.x,tank.y,x,y)+90;}@Overridepublic void mousePressed(MouseEvent e) {Shot shot = new Shot(tank.x, tank.y, tank.turretDir, 200);Director.nodes.add(shot);}
};
win.addMouseListener(adapter); //处理点击事件
win.addMouseMotionListener(adapter); //处理移动事件
win.addMouseWheelListener(adapter); //处理滚轮事件
控制游戏帧率:
long lastUpdate = System.currentTimeMillis(); //当前系统时间
int fps = 60; //理论帧数
while (true) {long interval = 1000/fps; //理论间隔long curr = System.currentTimeMillis();long _time = curr-lastUpdate;if (_time < interval) {Thread.sleep(1);}else{lastUpdate = curr;float dt = _time*0.001f; //两帧之间的间隔(秒)Scheduler.getInstance().tick(dt); //推动调度器执行win.update(dt);}}
坦克类:
package cn.itsub.tank.types;import cn.itsub.tank.ImageCache;
import cn.itsub.tank.timer.Scheduler;import java.awt.*;public class Tank extends Node{public double turretDir; //炮筒方向public double hp=60;public double hpmax=100;public double hphf=10;//每秒回复生命public Tank() {//注册调度器,每帧都调用update方法,达到恢复生命值的目的Scheduler.getInstance().scheduleUpdate(this,0,false);}public void update(float dt) {hp += (hphf * dt);if (hp > hpmax) {hp = hpmax;}}@Overridepublic void draw(Graphics2D g2) {Graphics2D g = (Graphics2D) g2.create(); //复制画笔g.translate(x, y);g.drawImage(ImageCache.get("tank_red"),-18,-19,null);g.drawRect(-23,-34,46,8);g.setColor(Color.RED);int whp = (int)(45.0*(hp/hpmax));g.fillRect(-22,-33,whp,7);g.rotate(Math.toRadians(this.turretDir));g.drawImage(ImageCache.get("turret_red"),-32,-32,null);}}
这么好的东西我都安排了,
收藏,点赞,好评,也给我安排一波呗~~~
Java坦克大战,基于Swing编写很哇塞的小游戏,可以做课程设计毕业设计相关推荐
- 基于小程序开发的宝可梦图鉴小程序源码课程设计毕业设计
源码地址:基于小程序开发的宝可梦图鉴小程序源码课程设计毕业设计 宝可梦是一款备受喜爱的游戏,其丰富的剧情和可爱的角色深受玩家们的喜欢.而对于宝可梦爱好者来说,一款好的宝可梦图鉴是必不可少的.今天,我来 ...
- 课程设计(毕业设计)—基于机器学习KNN算法手写数字识别系统—计算机专业课程设计(毕业设计)
机器学习KNN算法手写数字识别系统 下载本文手写数字识别系统完整的代码和课设报告的链接(或者可以联系博主koukou(壹壹23七2五六98),获取源码和报告):https://download.csd ...
- 一小时制作java坦克大战小游戏
<坦克大战>是由日本南梦宫Namco游戏公司开发的一款平面射击游戏,于1985年发售.游戏以坦克战斗及保卫基地为主题,属于策略型联机类. 同时也是FC平台上少有的内建关卡编辑器的几个游戏之 ...
- java坦克大战总体功能设计_Java坦克大战设计报告.doc
Java坦克大战设计报告.doc <语言设计> 设计报告 信息工程学院专业班级:::指导老师:2011年7月22日 目录 目录2 题目一 坦克大战4 1.1题目简介4 1.2设计的内容.要 ...
- java 坦克大战_java课程设计之坦克大战
本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...
- java坦克大战课设报告_java课程设计之坦克大战
本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...
- Java坦克大战游戏源码(java坦克大战)
Java坦克大战游戏源码(java坦克大战) public Swingtest002() {// 设置标题setTitle("请登陆");// 绝对布局setLayout(null ...
- 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)
基于深度学习的车牌检测与识别系统实现(课程设计) 代码+数据集下载地址:下载地址 用python3+opencv3做的中国车牌识别,包括算法和客户端界面,只有2个文件,surface.py是界面代码, ...
- 基于深度学习的一款五子棋小游戏
今天分享一个基于深度学习而开发的AI小游戏 简单介绍 这一款基于深度学习的五子棋小游戏的界面是使用Unity开发的,而网络结构是使用keras搭建的. 环境 笔者的环境如下 操作系统 windows ...
最新文章
- Sublime Text 3 (含:配置 C# 编译环境)
- 玩转飞书日历,体验高效办公!
- JSP 九大内置对象
- 【ElasticSearch】深入理解 ElasticSearch Doc Values
- 安装linux环境及相关包方法
- DRmare Audio Converter Mac - DRM音频清除转换工具
- 8.docker search
- 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!
- 项目难题:Java几分钟处理完30亿个数据?
- 【机器学习】ROC曲线和AUC面积
- 2016年11月份各省市报考时间与报名链接 软考 系统集成项目管理工程师
- 北京超级云计算中心操作训练指南
- 英语音标 什么是音素
- 图书管理系统(归还书籍)
- Linux 4.x MTD源码分析-cfi-flash设备probe过程分析
- win10+睡眠+计算机命令,win10关闭休眠命令,win10关闭睡眠模式命令
- Windows查看及修改tomcat端口
- 数据库原理课后答案 第二章
- 戴尔 服务器重装后蓝屏,dell inspiron 5490重新安装win10 1903专业工作站版系统后开机频繁蓝屏...
- 服务器添加二级域名网站教程,服务器添加二级域名