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编写很哇塞的小游戏,可以做课程设计毕业设计相关推荐

  1. 基于小程序开发的宝可梦图鉴小程序源码课程设计毕业设计

    源码地址:基于小程序开发的宝可梦图鉴小程序源码课程设计毕业设计 宝可梦是一款备受喜爱的游戏,其丰富的剧情和可爱的角色深受玩家们的喜欢.而对于宝可梦爱好者来说,一款好的宝可梦图鉴是必不可少的.今天,我来 ...

  2. 课程设计(毕业设计)—基于机器学习KNN算法手写数字识别系统—计算机专业课程设计(毕业设计)

    机器学习KNN算法手写数字识别系统 下载本文手写数字识别系统完整的代码和课设报告的链接(或者可以联系博主koukou(壹壹23七2五六98),获取源码和报告):https://download.csd ...

  3. 一小时制作java坦克大战小游戏

    <坦克大战>是由日本南梦宫Namco游戏公司开发的一款平面射击游戏,于1985年发售.游戏以坦克战斗及保卫基地为主题,属于策略型联机类. 同时也是FC平台上少有的内建关卡编辑器的几个游戏之 ...

  4. java坦克大战总体功能设计_Java坦克大战设计报告.doc

    Java坦克大战设计报告.doc <语言设计> 设计报告 信息工程学院专业班级:::指导老师:2011年7月22日 目录 目录2 题目一 坦克大战4 1.1题目简介4 1.2设计的内容.要 ...

  5. java 坦克大战_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  6. java坦克大战课设报告_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  7. Java坦克大战游戏源码(java坦克大战)

    Java坦克大战游戏源码(java坦克大战) public Swingtest002() {// 设置标题setTitle("请登陆");// 绝对布局setLayout(null ...

  8. 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)

    基于深度学习的车牌检测与识别系统实现(课程设计) 代码+数据集下载地址:下载地址 用python3+opencv3做的中国车牌识别,包括算法和客户端界面,只有2个文件,surface.py是界面代码, ...

  9. 基于深度学习的一款五子棋小游戏

    今天分享一个基于深度学习而开发的AI小游戏 简单介绍 这一款基于深度学习的五子棋小游戏的界面是使用Unity开发的,而网络结构是使用keras搭建的. 环境 笔者的环境如下 操作系统 windows ...

最新文章

  1. Sublime Text 3 (含:配置 C# 编译环境)
  2. 玩转飞书日历,体验高效办公!
  3. JSP 九大内置对象
  4. 【ElasticSearch】深入理解 ElasticSearch Doc Values
  5. 安装linux环境及相关包方法
  6. DRmare Audio Converter Mac - DRM音频清除转换工具
  7. 8.docker search
  8. 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!
  9. 项目难题:Java几分钟处理完30亿个数据?
  10. 【机器学习】ROC曲线和AUC面积
  11. 2016年11月份各省市报考时间与报名链接 软考 系统集成项目管理工程师
  12. 北京超级云计算中心操作训练指南
  13. 英语音标 什么是音素
  14. 图书管理系统(归还书籍)
  15. Linux 4.x MTD源码分析-cfi-flash设备probe过程分析
  16. win10+睡眠+计算机命令,win10关闭休眠命令,win10关闭睡眠模式命令
  17. Windows查看及修改tomcat端口
  18. 数据库原理课后答案 第二章
  19. 戴尔 服务器重装后蓝屏,dell inspiron 5490重新安装win10 1903专业工作站版系统后开机频繁蓝屏...
  20. 服务器添加二级域名网站教程,服务器添加二级域名

热门文章

  1. 易微联通断器实现电脑远程开关机
  2. go linux 开发工具,使用Go 语言开发必备的5大开源工具
  3. iOS和Android手机浏览器链接打开app store或应用市场下载软件讲解
  4. matlab氢原子杂化轨道,用matlab实现氢原子的sp杂化轨道可视化
  5. TLS握手协议详解下
  6. Acwing《算法基础课》第3章 搜索与图论
  7. Verilog时序电路设计指南
  8. flutter获取键盘高度
  9. 七牛云一站式 SSL 证书服务上线,即刻使用最多可省近 7 万
  10. C++中的构造和解析