千家信息网

java实现弹幕小游戏代码分享

发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,本篇内容介绍了"java实现弹幕小游戏代码分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!父类im
千家信息网最后更新 2024年10月19日java实现弹幕小游戏代码分享

本篇内容介绍了"java实现弹幕小游戏代码分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

父类

import java.awt.*;public class GameObject { //游戏物体的父类 Image img; double x,y; int speed = 3; int width,height; public void drawSelf(Graphics g){ g.drawImage(img,(int)x,(int)y,null); } public GameObject(Image img, double x, double y, int X_speed,int Y_speed, int width, int height) { this.img = img; this.x = x; this.y = y; this.speed = speed; this.width = width; this.height = height; } public GameObject(Image img, double x, double y) { this.img = img; this.x = x; this.y = y; } public GameObject(){ } //返回物体所在的矩形,便于后续的碰撞检测 public Rectangle getRect(){ return new Rectangle((int)x,(int)y,width,height); }}

弹幕类

import com.sun.xml.internal.ws.model.wsdl.WSDLPortProperties;import java.awt.*;public class Shell extends GameObject { double degree; public Shell() { x = 200; y = 200; width = 10; height = 10; speed = 2; speed = 2; //弧度 degree = Math.random()*Math.PI*2; } public void draw(Graphics g){ Color c = g.getColor(); g.setColor(Color.YELLOW); g.fillOval((int)x,(int)y,width,height); //炮弹沿着任意角度去飞 x+=speed*Math.cos(degree); y+=speed*Math.sin(degree); if(x<0 || x> Constant.GAME_WIDTH-width){ degree = Math.PI - degree; } if(y<40 || y> Constant.GAME_HEIGHT-height){ degree = -degree; } g.setColor(c); }}

飞机类

import java.awt.*;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;public class Plane extends GameObject{ boolean left,right,up,down; boolean live = true; //飞机是否活着 boolean leftflag,rightflag,upflag,downflag;//这些布尔值判断当碰到上下左右的边框时的状态 //如果活着画出来 public void drawSelf(Graphics g){ if(live) { g.drawImage(img, (int) x, (int) y, null); //根据方向进行不同的移动 if (left) { x -= speed; } if (right) { x += speed; } if (up) { y -= speed; } if (down) { y += speed; } } } public Plane(Image img,double x,double y) { this.img = img; this.x = x; this.y = y; this.speed = 3; this.width = img.getWidth(null); this.height = img.getHeight(null); } //按下某个键,增加相应的方向 public void addDirection(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_LEFT: left = true; break; case KeyEvent.VK_UP: up = true; break; case KeyEvent.VK_RIGHT: right = true; break; case KeyEvent.VK_DOWN: down = true; break; } } //按下某个键,取消相应的方向 public void minusDirection(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_LEFT: left = false; break; case KeyEvent.VK_UP: up = false; break; case KeyEvent.VK_RIGHT: right = false; break; case KeyEvent.VK_DOWN: down = false; break; } }}

爆炸类

import java.awt.*;//爆炸类public class Explode { double x,y; //爆炸的位置 static Image[] imgs = new Image[16]; static { for(int i=0;i<16;i++){ imgs[i] = PlayGameFrame.GameUtil.getImage("image/explode/e"+(i+1)+".gif"); imgs[i].getWidth(null); } } int count; public void draw(Graphics g){ if(count <= 15){ g.drawImage(imgs[count],(int)x,(int)y,null); count++; } } public Explode(double x,double y){ this.x = x; this.y = y; }}

常量类

public class Constant { public static final int GAME_WIDTH = 500; public static final int GAME_HEIGHT = 500;}

主类

import jdk.internal.cmm.SystemResourcePressureImpl;import javax.imageio.ImageIO;import javax.swing.*;import java.awt.*;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.image.BufferedImage;import java.io.IOException;import java.net.URL;import java.awt.Rectangle;import java.util.Date;/** *飞机游戏的主窗口 */class PlayGameFrame extends Frame { Image planeImg= GameUtil.getImage("image/plane.png"); Image nightsky = GameUtil.getImage("image/nightsky.jpg"); //定义飞机的坐标 Plane plane = new Plane(planeImg,250,250); //定义炮弹 Shell[] shells = new Shell[50]; Explode boom; Date startTime = new Date(); Date endTime; int period;//游戏持续的时间 /** *画图 */ @Override public void paint(Graphics g) { //自动被调用,g这个变量相当于一个画笔 Color c = g.getColor(); super.paint(g);//防止黑屏 g.drawImage(nightsky,0,0,null); plane.drawSelf(g);//画飞机 if(plane.x <= Constant.GAME_WIDTH-plane.width && plane.x >= 30 && plane.y <= Constant.GAME_HEIGHT-30 && plane.y >= 0) plane.speed = 10; else plane.speed = -plane.speed; //画出所有的炮弹 for(int i=0;i

"java实现弹幕小游戏代码分享"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

飞机 炮弹 爆炸 方向 矩形 代码 小游戏 位置 内容 时间 更多 物体 知识 线程 键盘 颜色 检测 监听 上下左右 学有所成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 外国服务器游戏用什么显卡不卡 删除数据库表中某个日期前的数据 保险数据库设计 易享云指定的服务器无法连接 传奇永恒哪个区服务器养老 网络安全手抄报图片伤感风景 沪江软件开发版 2020portal服务器 系统控制软件开发 网络安全集成书籍排行榜 全境封锁1进游戏服务器无法使用 宁波卓智网络技术有限公司 计算机网络技术基础复习资料 数据库语句中查询相同数据 物联网数据库哪种好 泰拉瑞亚服务器哥布林怎么打 招聘网络安全员 日内瓦网络安全公司 选威胁网络安全的主要因素有 怎么登录数据库服务器 服务器开机和关机的区别 网络安全控制层次 用友t6软件怎样进入数据库 苹果手机玩魔兽世界显示服务器 天津网络技术咨询哪个好 移动网络技术类工资 租用服务器算资产吗 网络安全 校园贷 视频 西安学软件开发的学院 高校图书馆网络安全案例
0