我是靠谱客的博主 单薄小鸭子,最近开发中收集的这篇文章主要介绍java课设-飞机大战一.团队成员及其负责模块二.git提交记录三.项目功能架构图 四.运行截图五.关键代码4.我方飞机跟随鼠标 5.boss的生成及移动 6.敌方子弹的生成 7.我方子弹的生成 六.不足与展望,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一.团队成员及其负责模块
项目成员 | 负责模块 |
苏凯昕 | 编码规范,面向对象设计,算法编写,部分GUI,博客编写,游戏数值策划、游戏美术设计 |
二.git提交记录
三.项目功能架构图
1.流程图
四.运行截图
五.关键代码
1.游戏主要流程
public void launch() throws InterruptedException {
this.setVisible(true);// 窗口是否可见
this.setSize(640, 960);// 窗口大小
this.setLocationRelativeTo(null);// 窗口位置
this.setTitle("飞机大战");// 窗口标题
GameUtils.gameobjLIst.add(bgObj);
GameUtils.gameobjLIst.add(myplane);// 先画背景再画飞机,不然会被盖住
// GameUtils.gameobjLIst.add(boss);
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {// 点击开始游戏
if (e.getButton() == 1 && state == 0) {// 点击鼠标左键且游戏未开始
state = 1;
repaint();// 会调用paint方法
}
}
});
while (true) {
if (state == 1) {
creteObj();// 敌方飞机、子弹和我方子弹
repaint();
}
Thread.sleep(30);
}
}
2.绘制图像
public void paint(Graphics g) {
if (offScreenImage == null) {
offScreenImage = createImage(640, 960);
}
Graphics gImage = offScreenImage.getGraphics();
gImage.fillRect(0, 0, 640, 960);
if (state == 0) {// 游戏主页
gImage.drawImage(GameUtils.bgImg, 0, 0, null);
gImage.drawImage(GameUtils.bossImg, 320, 0, null);
gImage.drawImage(GameUtils.boomImg, 0, 320, null);
gImage.setColor(Color.yellow);
GameUtils.drawWord(gImage, "点击界面任意位置开始游戏", Color.yellow, 50, 10, 650);
GameUtils.drawWord(gImage, "飞机大战", Color.yellow, 70, 150, 180);
}
if (state == 1) {
GameUtils.gameobjLIst.addAll(GameUtils.boomLIst);
for (int i = 0; i < GameUtils.gameobjLIst.size(); i++) {// 绘制所有对象
GameUtils.gameobjLIst.get(i).paintSelf(gImage);
}
GameUtils.drawWord(gImage, "分数:" + score, Color.green, 40, 30, 100);
GameUtils.gameobjLIst.removeAll(GameUtils.removeLIst);
}
if (state == 3) {// 游戏失败
gImage.drawImage(GameUtils.boomImg, myplane.getX(), myplane.getY(), null);
GameUtils.drawWord(gImage, "游戏结束", Color.red, 70, 150, 500);
GameUtils.drawWord(gImage, "分数:" + score, Color.green, 40, 30, 100);
}
// if (state == 2) {
// GameUtils.drawWord(gImage, "游戏胜利", Color.red, 70, 150, 500);
// GameUtils.drawWord(gImage, "分数:" + score, Color.green, 40, 30, 100);
// }
g.drawImage(offScreenImage, 0, 0, null);
repaintCount++;
}
3.创建对象
void creteObj() {// 生成敌机、子弹
if(bossCount<=5) {
if (repaintCount % (10-bossCount) == 0) {
GameUtils.shellLIst
.add(new ShellObj("imgs/涂鸦子弹.png", myplane.getX() + 20, myplane.getY() - 30, 20, 20, 8, this));
GameUtils.gameobjLIst.add(GameUtils.shellLIst.get(GameUtils.shellLIst.size() - 1));// 每生成一颗子弹就加入到要绘制的集合中
}
}
else{
if (repaintCount % 5 == 0) {
GameUtils.shellLIst
.add(new ShellObj("imgs/涂鸦子弹.png", myplane.getX() + 20, myplane.getY() - 30, 20, 20, 8, this));
GameUtils.gameobjLIst.add(GameUtils.shellLIst.get(GameUtils.shellLIst.size() - 1));// 每生成一颗子弹就加入到要绘制的集合中
}
}
if (repaintCount % (20-bossCount) == 0) {
GameUtils.EnemyLIst.add(new EnemyObj("imgs/小飞机.png", (int) (Math.random() * 550), 0, 80, 80, 6, this));
GameUtils.gameobjLIst.add(GameUtils.EnemyLIst.get(GameUtils.EnemyLIst.size() - 1));// 每生成一架小飞机就加入到要绘制的集合中
}
if (repaintCount % (20-bossCount) == 0&&boss!=null) {
GameUtils.enemyShellLIst
.add(new EnemyShell("imgs/敌方子弹.png", boss.getX()+100 , boss.getY()+200 , 20, 20, 8, this));
GameUtils.gameobjLIst.add(GameUtils.enemyShellLIst.get(GameUtils.enemyShellLIst.size() - 1));// 每生成一颗子弹就加入到要绘制的集合中
}
if (boss == null && repaintCount % 200 == 0) {//10架小飞机生成一个boss
boss = new BossObj("imgs/boss.png", 300, 0, 250, 210, 4, this);
GameUtils.gameobjLIst.add(boss);
GameWin.bossCount++;
}
}
4.我方飞机跟随鼠标
public void paintSelf(Graphics gImage) {
gImage.drawImage(img,x,y,null);
this.frame.addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
super.mouseMoved(e);
x = e.getX() - 40;
y = e.getY() - 60;
}
});
}
5.boss的生成及移动
public void paintSelf(Graphics gImage) {
if (this.getRec().intersects(this.frame.myplane.getRec())) {
this.frame.state = 3;
}
gImage.drawImage(img, x, y, null);
if (x > 450 || x < 0) {
speed = -speed;
}
x = x + speed;
for (ShellObj e : GameUtils.shellLIst) {// 子弹碰撞检测
if (this.getRec().intersects(e.getRec())) {
life--;
e.setX(-500);
e.setY(500);
GameUtils.removeLIst.add(e);
}
if (life <= 0) {
// state=4;
GameWin.score += 100*GameWin.bossCount;
GameUtils.removeLIst.add(this);
this.frame.boss=null;
}
}
}
6.敌方子弹的生成
public void paintSelf(Graphics gImage) {
gImage.drawImage(img, x, y, null);
y = y + speed+GameWin.bossCount;
if (this.getRec().intersects(this.frame.myplane.getRec())) {
this.frame.state = 3;
}
if (y > 960) {
this.setX(-200);
this.setY(-300);
GameUtils.removeLIst.add(this);
}
}
7.我方子弹的生成
public void paintSelf(Graphics gImage) {
gImage.drawImage(img, x, y, null);
y = y - speed-GameWin.bossCount;
if (y < 0) {
this.setX(-200);
this.setY(-200);
GameUtils.removeLIst.add(this);
}
}
六.不足与展望
1.不足
没有随机生成的道具,游戏的可玩性较低。界面的设计十分简陋。
2.展望
完善上述不足。
最后
以上就是单薄小鸭子为你收集整理的java课设-飞机大战一.团队成员及其负责模块二.git提交记录三.项目功能架构图 四.运行截图五.关键代码4.我方飞机跟随鼠标 5.boss的生成及移动 6.敌方子弹的生成 7.我方子弹的生成 六.不足与展望的全部内容,希望文章能够帮你解决java课设-飞机大战一.团队成员及其负责模块二.git提交记录三.项目功能架构图 四.运行截图五.关键代码4.我方飞机跟随鼠标 5.boss的生成及移动 6.敌方子弹的生成 7.我方子弹的生成 六.不足与展望所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复