###一、成员介绍 姓名|任务分配|个人博客链接 --|:--:|--: 张一弛(组长)|GUI设计、游戏界面相关类实现、阿里巴巴扫描纠错、团队博客编写|在做了,在做了,下次一定 王江鸿|Box类、Bomb类、Login类实现;道具实现|Java课程设计-泡泡堂(个人) 陈志伟|Player类、PlayerAttribute类、Music类实现|Java课程设计-泡泡堂(个人) ###二、项目Git地址 泡泡堂简易版 ###三、Git提交截图

###四、项目功能架构图、主要功能流程图

###五、项目运行截图 ##1、主界面

##2.玩家登记

##3.游戏主界面

###六、主要MUL类图

Player类

Bomb类

###七、关键代码 ##1.玩家移动线程

private class moveThread1 extends Thread {

@Override

public void run() {

while (player1.isalive) {

if(stopSign)

break;

if(pause){

player1.move();

colisionDetection(player1);

if(player1.thisbomb!=null)

{

//判断玩家是否在当前炸弹上(一旦离开玩家当前放置的炸弹,便不可再次站上去)

if(player1.thisbomb.isExistPlayer)

{

player1.onTheboom();

}

}

}

}

}

}

使用while循环实现持续监听,加入判断线程结束标志,当重新开始、返回主界面时,线程能够及时停止。 ##2.碰撞检查(判断获得道具、前方有障碍、是否出界)

public static void colisionDetection(Player pl)

{

int x = 1120;

int y = 880;

//出地图边境

if(pl.getX()<0||pl.getX()>x||pl.getY()<0||pl.getY()>y)

{

pl.back();

return;

}

int w = 15;

int h = 12;

for(int i=0;i

for(int j=0;j

{

try {

Box temp=thismap.getBoxbyLocation(i,j);

//碰撞检查

if(temp.getRect().intersects(pl.getRect())&&temp.isExist)

{

//遇到箱子

if(!temp.isdestroyshowT)

{

pl.back();

return;

}

//遇到宝物

else{

switch(temp.treasureIndex){

case 1:

pl.pla.plusspeed();

break;

case 2:

pl.pla.plusbombnum();

break;

case 3:

pl.pla.pluspower();

break;

case 4:

//无敌状态

pl.invincible();

break;

case 5:

pl.pla.pluslive();

break;

default:

break;

}

//设置当前方格为[不存在]

temp.isExist=false;

//将当前方格设置为隐藏

setIcon("images/default.png",temp);

}

}

//遇到炸弹

if(temp.isExistBomb&&!temp.isExistPlayer&&temp.getRect().intersects(pl.getRect()))

{

pl.back();

return;

}

} catch (NullPointerException e) {

}

}

}

}

借助Rectangle类中的intersects方法来检测2个矩形是否相交,实现碰撞检查,再通过判断玩家前往的box的类型来判断下一步操作。 ##3.炸弹引爆

public synchronized void explode() throws InterruptedException

// 爆炸

{

// 将box处定义炸弹的参数赋值false

box.isExistBomb = false;

box.needDetonate = false;

player.setBombexist(player.getBombexist() - 1);

// 玩家当前炸弹数-1

setIcon("images/UDLR.png", box);

// 设置炸弹中心的图片

explodePlayer(box);

// 判断是否炸到了玩家

for (int n = 1; n <= power; n++)

// 向上爆炸

{

boolean flag = true;

int x = this.x;

int y = this.y - n;

if (y >= 0) {

Box temp = GameFrame.thismap.getBoxbyLocation(x, y);

flag = explode1(temp);

if(flag == false) {

break;

}

}

}

// 向下爆炸

for (int s = 1; s <= power; s++) {

boolean flag = true;

int x = this.x;

int y = this.y + s;

if (y < 12) {

Box temp = GameFrame.thismap.getBoxbyLocation(x, y);

flag = explode1(temp);

if(flag == false) {

break;

}

}

}

// 向左爆炸

for (int w = 1; w <= power; w++) {

boolean flag = true;

int x = this.x - w;

int y = this.y;

if (x >= 0) {

Box temp = GameFrame.thismap.getBoxbyLocation(x, y);

flag = explode1(temp);

if(flag == false) {

break;

}

}

}

// 向右爆炸

for (int e = 1; e <= power; e++) {

boolean flag = true;

int x = this.x + e;

int y = this.y;

if (x < 15) {

Box temp = GameFrame.thismap.getBoxbyLocation(x, y);

flag = explode1(temp);

if(flag == false) {

break;

}

}

}

}

public boolean explode1(Box temp) {

if (temp.isExist)

// 如果爆炸的路线上遇到方块了

{

if (temp.isdestroyshowT)

// 如果是宝物

{

temp.isExist = false;

return true;

// 宝物消失

} else

// 如果是障碍,则终止爆炸

{

showTreasure(temp);

// 显示该box处隐藏的宝物

return false;

}

} else if (temp.isExistBomb)

// 如果该爆炸处有炸弹

{

MyThread3 ph3 = new MyThread3(temp);

ph3.start();

continuousBomb.add(temp);

// 将该炸弹添加到被引爆的列表里

}

explodePlayer(temp);

// 判断是否炸到了玩家

bombCache.add(temp);

// 将该处添加到爆炸缓存中

setIcon("images/UD.png", temp);

// 设置该处的爆炸图片

return true;

}

根据当前玩家的威力,从当前Box分别向上下左右威力内的Box遍历,若遇到不可炸毁的障碍,则结束当前方向的遍历,否则,将遍历的Box设置爆炸。 判断是否炸到玩家——通过判断玩家是否和爆炸块重叠,不处于无敌状态,并且存活,若符合,玩家受到1点伤害。 ###八、阿里巴巴代码规范扫描 ##扫描结果:

##修改: #修改了魔法值、注释、代码规范、添加作者后:

通过新建一个继承自Thread的class创建线程解决不允许显式创建线程问题

通过代码复用,创建新方法来解决单一方法过长问题 ##完全解决:

###九、总结 本次课设功能还有许多可以拓展的地方,例如数据库存储玩家信息、通过Socket实现多人同台竞技等; 我们在游戏本身的界面和功能花了比较多的时间,以后有机会继续完善。

消灭泡泡糖游戏java编程_JAVA面向对象编程课程设计——泡泡堂相关推荐

  1. java泡泡堂教程_JAVA面向对象编程课程设计——泡泡堂(个人博客)

    二.个人负责模块或任务说明 GUI设计 游戏界面类.地图类的实现(实现与Player类的交互) 阿里巴巴扫描纠错 团队博客编写 三.自己的代码提交记录 四.自己负责模块或任务详细说明 1.地图Fiel ...

  2. 斗地主Java课程设计_JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记录 注:这里只有部分提交记录,详细的提交记录在团队 ...

  3. java面向对象编程 漫画_Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

  4. java面向对象编程的思想_java面向对象编程思想的理解

    1.我们总说java是一门面向对象编程的语言,那什么是面向对象呢? 我是这样理解的,对象是事物存在的实体,如,猪.狗,花早等都是对象,对象由两部分组成.面向对象编程的三大特点:继承,多态,类是封装对象 ...

  5. java面向对象编程思想_Java面向对象编程思想的理解

    1.我们总说java是一门面向对象编程的语言,那什么是面向对象呢? 我是这样理解的,对象是事物存在的实体,如,猪.狗,花早等都是对象,对象由两部分组成.面向对象编程的三大特点:继承,多态,类是封装对象 ...

  6. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  7. 第2课第3节_Java面向对象编程_继承性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一 图一 1.我们在第2课第2节_Java面向对象编程_封装性_P 中 ...

  8. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  9. 一文带你深入理解【Java基础】· 面向对象编程(下)②代码块、final和abstract

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

最新文章

  1. iOS中的UIAlertView之新方法(弹出警告框)
  2. protoc.exe java_protobuf java 使用 window
  3. 简单的信誉算法 js处理
  4. [html] 写H5和小程序有什么相同及不同的地方吗?
  5. 开源软件和自由软件_自由和开源软件的经济学
  6. Meteor——以NodeJS为基础环境,MongoDB为数据环境的全栈开发平台!
  7. 每天进步一点点——mysql——Percona XtraBackup(innobackupex)
  8. 这一晚注定属于C罗!回归首秀梅开二度,现场超过7万球迷见证这场胜利
  9. vnc-4.0-winsrc版本之winvnc工程分析_源码研究
  10. Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)
  11. 基于rk3288的驱动编译
  12. “守法规知礼让、安全文明出行”背后需要良好的交通环境支撑 | 聚焦守法知礼...
  13. [笔记]n个点的基环树数量
  14. Centos7 搭建NFS文件共享存储
  15. 高效能创业者的七项习惯
  16. Yarn的资源配置参数
  17. c语言图像压缩编码,基于C语言的图像压缩算法
  18. 怎样把文字调成竖排_怎么把文字变成竖排
  19. 阅读论文《The Perception-Distortion Tradeoff》
  20. cocos2dx+java部落战争全套游戏源码资源策划文档

热门文章

  1. Windows电脑垃圾清理 - 如何删除临时文件(Temp文件夹)
  2. Intel公布Penryn四核CPU价格 最低209美元
  3. 拿番茄炒鸡蛋来讲解一下大数据项目的流程
  4. UDP多播:一对多数据收发
  5. druid连接池监控
  6. GCN:图卷积神经网络
  7. 攻防世界MISC刷题1-50
  8. 缺少编解码器,错误代码0xc00d5212 WIN10中AVI格式文件无法播放
  9. 国产无线充电宝哪个牌子好?国产无线充电宝品牌排行
  10. oracle定时任务实例