JAVA飞机大战附源码

  • java飞机大战
  • 效果图如下

java飞机大战

话不多说 直接上源码

窗体部分

package UI;

//自定义窗体
//创建类 继承JFrame
//创建构造方法,设置窗体
import javax.swing.JFrame;

public class Gameframe extends JFrame
{
//构造方法
public Gameframe()
{
//设置标题
setTitle(“全民飞机大战 By项目31802班”);
//设置大小
setSize(512,768);
//设置位置居中显示 null表示相对于屏幕左上角居中
setLocationRelativeTo(null);
//设置禁止设置界面大小
setResizable(false);
//关闭窗体就退出程序
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String []args)
{
//实例化窗体
Gameframe frame=new Gameframe();
//实例化面板
Gamepanel panel=new Gamepanel(frame);//方便在面板中加入监听事件
//启动游戏
panel.action();
//将面板加入窗体
frame.add(panel);
//显示窗体 true为显示 false为隐藏
frame.setVisible(true);
}
}

面板部分
package UI;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

//游戏的面板设计
import javax.swing.JPanel;

import prop.Dj;
import prop.Flyplane;
import prop.bullet;
import prop.picture;
public class Gamepanel extends JPanel {
BufferedImage bg;//背景图
Flyplane fly=new Flyplane();//实例化飞机的对象
//Dj dj=new Dj();//实例化敌机对象
//集合泛型 敌机的大本营
Listdjs =new ArrayList();

//创建弹药库
List<bullet> bus= new ArrayList<bullet>();//定义分数
int score;
//设置游戏开关
boolean gameover;////开始游戏  用线程控制飞行物移动(固定)
public void action()
{new Thread(){public void run(){//死循环 让游戏一直运行while(true){if(!gameover){djEnter();djMove();//发射子弹shoot();//移动子弹buMove();//判断子弹是否击中敌机shootDj();//判断敌机撞飞机hit();}shootDj();//线程控制 休眠try {Thread.sleep(15);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//刷新repaint();}}}.start();
}
//敌机撞我
protected void hit() {for(int i=0;i<djs.size();i++){Dj j=djs.get(i);//如果敌机和主机相撞if(j.hitBy(fly)){//1.敌机消失djs.remove(j);//主机减少血量fly.HP--;//3.分数增加score+=2;//4.当主机血量为0  游戏结束if(fly.HP<=0){gameover=true;}}}}
//敌机进入游戏的数量
int index=0;//记录执行方法 的次数
private void djEnter() {//记录执行的次数index++;if(index>=20){Dj D=new Dj();//再次实例化敌机djs.add(D);//将敌机加入集合//将index重新设置为0index=0;}
}
//敌机移动方法
protected void djMove() {for(int i=0;i<djs.size();i++){//获取敌机Dj D=djs.get(i);D.Move();}
}
//子弹发射数量
int budex=0;//计数器
private void shoot() {budex++;if(budex>=5){//创建子弹bullet bu1=new bullet(fly.x+70,fly.y);//将子弹加入集合弹药库bus.add(bu1);bullet bu2=new bullet(fly.x+10,fly.y);//将子弹加入集合弹药库bus.add(bu2);budex=0;}
}
//子弹移动
private void buMove() {//for循环遍历for(int i=0;i<bus.size();i++){bullet b=bus.get(i);b.move();}
}
//检测子弹是否击中
private void shootDj() {for(int i=0;i<bus.size();i++){bullet b=bus.get(i);bang(b);}}
//判断一颗子弹是否击中敌机
private void bang(bullet b) {for(int i=0;i<djs.size();i++){//获取一个敌机Dj j=djs.get(i); //判断这个子弹是否击中敌机if(j.shootBy(b)){//1.击中敌机  血量减少j.HP2--;if(j.HP2<=0){//2.敌机击中 子弹消失  删除敌机djs.remove(j);//3.增加分数score+=2;}//4.子弹消失bus.remove(b);}}}
public Gamepanel(Gameframe frame)
{//设置背景颜色setBackground(Color.pink);bg=picture.getImg("/img/bg1.jpg");//获取图片的地址//创建鼠标监听器//鼠标移动 mouseMoved()MouseAdapter adapter=new MouseAdapter() {//鼠标单击重新开始游戏public void mouseClicked(MouseEvent e){if(gameover){//生成新的飞机和生命fly =new Flyplane();//重置游戏开关gameover=false;//清零分数score=0;Random rd=new Random();int index=rd.nextInt(5)+1;bg=picture.getImg("/img/bg"+index+".jpg");//刷新界面repaint();}}//mouseEvent记录鼠标移动@Overridepublic void mouseMoved(MouseEvent e) {//移动鼠标 调用方法//让主机跟着鼠标移动int mx=e.getX();//鼠标的横坐标int my=e.getY();//鼠标的横坐标if(!gameover){//让主机移动到鼠标的位置fly.moveToMouse(mx,my);}//刷新界面repaint();}};//加入到监听里面  (固定的格式)addMouseListener(adapter);addMouseMotionListener(adapter);//键盘监听(固定格式)KeyAdapter kd=new KeyAdapter(){//鼠标的触发事件@Overridepublic void keyPressed(KeyEvent e) {//监听键盘的按键int keyCode=e.getKeyCode();if(keyCode== KeyEvent.VK_UP){//向上移动    fly.moveUp();}else if(keyCode==KeyEvent.VK_DOWN){//向下移动   fly.moveDown();}else if(keyCode==KeyEvent.VK_LEFT){//向左移动     fly.moveLeft();}else if(keyCode==KeyEvent.VK_RIGHT){//向右移动fly.moveRight();}else if(keyCode==KeyEvent.VK_W){fly.moveUp();//上}else if(keyCode==KeyEvent.VK_S){fly.moveDown();//下}else if(keyCode==KeyEvent.VK_A){fly.moveLeft();//左}else if(keyCode==KeyEvent.VK_D){fly.moveRight();//右}//刷新界面repaint();}};//加入到监听器里面frame.addKeyListener(kd);}
//Graphics g 画笔
public void paint(Graphics g)
{super.paint(g);//g.drawImage(图片,图片的横坐标,图片的纵坐标,null);//画背景g.drawImage(bg,0,0,521,768,null);//画飞机//g.drawimage(图片,图片的横坐标,图片的纵坐标,图片的宽度,图片的高度,null)g.drawImage(fly.img,fly.x,fly.y,fly.w,fly.h,null);//画敌机  遍历集合for(int i=0;i<djs.size();i++){Dj dj=djs.get(i);g.drawImage(dj.img,dj.x,dj.y,dj.w,dj.h,null);}//画子弹 和敌机方法一样for(int i=0;i<bus.size();i++){bullet bu=bus.get(i);g.drawImage(bu.img,bu.x,bu.y,bu.w,bu.h,null);}//分数颜色字体位置设置g.setColor(Color.red);g.setFont(new Font("楷体",Font.BOLD,20));g.drawString("分数【"+score+"】",10,30);//画主机血量for(int i=0;i<fly.HP;i++){g.drawImage(fly.img,400+i*35,5,30,30,null);}//当游戏结束  画GAMEOVERif(gameover){g.setColor(Color.RED);g.setFont(new Font("楷体",Font.BOLD,100));g.drawString("GAMEOVER", 20, 400);}
}

}

后面 就是关于 子弹 飞机 敌机 飞行物等的定义
对于初学者来说 还是有很大帮助的

效果图如下

云盘下载地址:https://url96.ctfile.com/f/32646096-534708928-4e0efa 密码:binghe
附带 项目答辩ppt 知识点总结 图片素材 可执行文件 项目需求等
私信看不到,随缘更新中

JAVA飞机大战游戏附源码相关推荐

  1. Java小游戏之Swing框架实现飞机大战(附源码 超详细必看)

    需要源码和图片集请点赞关注收藏后评论区留言~~~ 1.项目主要工作 本次项目的题目--基于Java的飞机大战游戏的设计与实现,主要目的是实现飞机大战这个游戏.期望结果:游戏无BUG(现在人们将在电脑系 ...

  2. java飞机大战编程_[源码和文档分享]Java飞机大战游戏设计与实现

    1 概述 本次Java课程设计是做一个飞机大战的游戏,应用Swing编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库. ...

  3. 新版飞机大战游戏安卓源码项目

    作者nuptboyzhb,源码newplanegame,新版飞机大战是一款以真实战机为模板的飞行射击类游戏,体验新颖,玩法炫酷.一样的经典,不一样的体验.飞机模型基于目前的主流战机:包括美国F16,F ...

  4. Python小游戏——坦克飞机大战(附源码)

    一.学习目标: 1.掌握用Python写自己的小游戏. 2.掌握面向对象编程语言的特点. 3.掌握Python基础 二.学习内容: 1.Python文件操作. 2.Python 类的定义与使用 3.P ...

  5. java手机象棋软件下载,Java手机网络版象棋游戏附源码JAVA游戏源码下载

    运行于手机上的中国象棋游戏,鉴于JAVA J2ME技术,本游戏分服务端和客户端,导入JAR包即可在手机上运行,内有开发文档和运用说明. Java手机网络版象棋游戏附源码 (1 folders, 2 f ...

  6. 计算机毕业设计Java飞机订票管理系统(源码+系统+mysql数据库+lW文档)

    计算机毕业设计Java飞机订票管理系统(源码+系统+mysql数据库+lW文档) 计算机毕业设计Java飞机订票管理系统(源码+系统+mysql数据库+lW文档) 本源码技术栈: 项目架构:B/S架构 ...

  7. html实现扫雷小游戏(附源码)

    文章目录 实现功能 1.扫雷设计 1.1 主界面 1.2 扫雷难度 1.3 附带功能 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blo ...

  8. python跑酷游戏源码_Phaser.js实现简单的跑酷游戏附源码下载

    采用的物理引擎是Phaser.js 在这里对此引擎不做过多介绍(因为我也是小白,嘿嘿) 效果展示: 源码(详细源码图片资源可点击文章下方或屏幕右上方的github链接进行clone) 1.创建游戏舞台 ...

  9. 视频教程-手把手实现Java图书管理系统(附源码)-Java

    手把手实现Java图书管理系统(附源码) 南京大学软件工程硕士,曾就职于擎天科技.中软国际.华为等上市公司,擅长Java开发.Web前端.Python爬虫.大数据等领域技术. 全栈工程师,从事软件开发 ...

最新文章

  1. python数据库学习--Mysql
  2. 第十六届全国大学生智能汽车竞赛 英飞凌特供芯片支持计划TC364TC377
  3. 热电偶校验仪使用说明_热电偶冷端补偿方法
  4. linux常用特殊符号大全
  5. JS 原型链 prototypt 和隐式原型 _proto_
  6. Nginx服务器启停方式介绍
  7. [渝粤教育] 广东-国家-开放大学 21秋期末考试基础会计10258k2
  8. 【超详细】在Linux上远程登录遇到的若干问题及解决方法(一)
  9. 永远不要放弃你所爱的人
  10. 字节跳动笔试难题 扑克牌的移动
  11. 08cms cecore.cls.php,08CMS 变量覆盖导致getshell 等问题
  12. DTcmsV4.0分析学习——(2)系统框架
  13. AutoCad二次开发-插入DWG参照 Teigha库
  14. python 导入自定义的包
  15. mongodb mapreduce分析
  16. Kotlin读写Excel文件
  17. 基于Eureka服务治理的高可用性注册中心搭建
  18. 程序猿有话说:计算机,学着挺有意思的,就是头冷
  19. 华为最新全面屏手机鸿蒙系统,华为P50pro最新确认:麒麟1020+立体全面屏+鸿蒙系统,这才是华为...
  20. 如何对项目的研发团队年终绩效考核?

热门文章

  1. 骨传导能保护听力吗,骨传导耳机对于耳道的保护有多少
  2. LeetCode(Python)—— x的平方根(简单)
  3. 日本“茑屋书店”营销模式的一点见解
  4. 拓嘉辰丰电商:拼多多恶意订单投诉指南
  5. non-singleton demension
  6. javplayer 使用教程_立创EDA画图不求人20 | 视频教程 | 全局删除元件、网络、导线、文本...
  7. 徕卡光学全新突破,小米13 Ultra开启移动影像光学时代
  8. Ubuntu机器设置sshfs远程连接
  9. 理论:如何调整四轴4个电机的转速,使飞行器朝不同方向运动
  10. 电容式触摸感应技术原理之自容式触摸按键电极设计建议(3)