我是靠谱客的博主 单薄小鸭子,这篇文章主要介绍java课设-飞机大战一.团队成员及其负责模块二.git提交记录三.项目功能架构图 四.运行截图五.关键代码4.我方飞机跟随鼠标 5.boss的生成及移动 6.敌方子弹的生成 7.我方子弹的生成 六.不足与展望,现在分享给大家,希望可以做个参考。
一.团队成员及其负责模块
项目成员 | 负责模块 |
苏凯昕 | 编码规范,面向对象设计,算法编写,部分GUI,博客编写,游戏数值策划、游戏美术设计 |
二.git提交记录
三.项目功能架构图
1.流程图
四.运行截图
五.关键代码
1.游戏主要流程
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32public 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.绘制图像
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38public 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.创建对象
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32void 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.我方飞机跟随鼠标
复制代码
1
2
3
4
5
6
7
8
9
10
11
12public 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的生成及移动
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26public 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.敌方子弹的生成
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13public 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.我方子弹的生成
复制代码
1
2
3
4
5
6
7
8
9public 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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复