#1.团队名称、团队成员介绍 ##团名:嗷嗷嗷嗷嗷 ###吴军霖(组长)

写得一手好代码也改得一手好bug

代码整洁好看源于强迫症

大概没有什么不会的东西叭

真正的王者段位 ###欧阳震霆(组员)

同样擅长写代码

在青青草原上创造了僵尸家族

熟练掌握多线程等技术

也是王者段位 ###陈文杰(组员)

可代码可PPT可画图

创造太阳落在青青草地

熟练******等等厉害技术

***(隐藏段位) ###刘艳钦(组员)

可代码可bug可博客

豌豆射手吐出豌豆

在数据库的危险边缘试探

擅长叨逼叨和细节控

***(隐藏段位)

#2.项目git地址

戳我叭~!!!

#3.项目git提交记录截图(要体现出每个人的提交记录、提交说明),老师将重点考核。

#4.项目功能架构图与主要功能流程图

#5.项目UML图

#6.项目运行截图

#7.项目关键代码(不能太多) ###1.游戏界面效果###

JLayeredPane为容器添加了深度,允许组件在需要时互相重叠。

JLayeredPane将深度范围按 层 划分,在同一层内又对组件按位置进一步划分,将组件放入容器时需要指定组件所在的层,以及组件在该层内的 位置(position/index)。 层的编号越大越显示在前面;同层内位置编号越大越靠近底部

使用JLayeredPane对界面实现按层划分,使各组件按层级相覆盖,并实现组件对鼠标监听的优先级划分

代码定义了两个层级面板,一个作为游戏的选择界面,一个作为战斗界面

在选择界面中,在层级面板的底层添加背景图,在较上层添加各个功能按钮,而在最上层有一个不可见的登录注册组件(JPanel),点击登录按钮时将登录面板改为可见.点击游戏开始时,将窗体的层级面板换为战斗面板战斗面板中也是将背景图置于底层,将其它组件放在面板的较上层.将阳光所在层级设置高于其他组件可以实现阳光对鼠标的监听优先于其他组件,使得阳光收集事件可以优先于其他事件,如卡片的选取,铲子的点击和菜单的点击.点击时菜单时,各线程暂停,同样在最顶层使原来不可见的菜单面板设为可见.

private void chooseCards(){

Card card1 = new Card(GameFrame,"SunFlower", plantMap, controller);

card1.setBounds(85, 7, card1.getCardWidth(), card1.getCardHeight());

Cardboard.add(card1);

cardList.add(card1);

Card card2 = new Card(GameFrame,"Peashooter", plantMap, controller);

card2.setBounds(145, 7, card2.getCardWidth(), card2.getCardHeight());

Cardboard.add(card2);

cardList.add(card2);

}

class PaintThread implements Runnable{

JFrame frame;

PaintThread(LaunchFrame launchFrame) {

this.frame = launchFrame;

}

###2.僵尸的产生

通过根据状态不断重绘僵尸来达到动画效果

/***** 正常移动 *****/

for (int i=1 ; this.x> minx && this.state==1 ; i++){

if(this.life<=50) {

this.state=2;

zombie.setPic(0);

zombie.setState(state);

break;

}

if(this.x==350)

this.life=20;

try {

if (i%11==0){

zombie.normalpicChange();

}

zombie.setBounds(x,y,300,300);

Thread.sleep(8);

if (i%7==0){

this.x--;

}

zombie.repaint();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

//正常换图

public void normalpicChange(){

if (pic < allPic[type])

pic++;

else

pic = 0;

}

public void normalwalk(){

}

public void paintComponent(Graphics g) {

super.paintComponent(g);

if(state == 1) {

ImageIcon img = new ImageIcon("Img\\Zombie"+type+"\\Frame"+pic+".png");

image = img.getImage();

Graphics2D g2 = (Graphics2D) g;

g2.drawImage(image, 0, 0, img.getIconWidth(), img.getIconHeight(), this);

}

}

###3.太阳的收集

通过对鼠标的监听来判断是否收集到太阳

@Override

public void mouseClicked(MouseEvent e) {

if (!isCollected){

new Thread(new Collect(sun, x, y)).start();

frame.setCursor(Frame.DEFAULT_CURSOR);

isCollected = true;

}

}

class Collect implements Runnable{

private Sun sun;

private int x;

private int y;

Collect(Sun sun, int x, int y){

this.sun = sun;

this.sun.alpha = 100;

this.x = x;

this.y = y;

}

###4.植物攻击

以豌豆射手发射子弹为例

碰撞检测:通过获得豌豆的坐标以及僵尸的坐标来算出两者的距离是否构成碰撞

private boolean touchZombie(){

List zombies = controller.getZombieLists().get(r);

if (zombies.isEmpty())

return false;

for (Zombie zombie:zombies){

int dis = Math.abs(x-40-zombie.getX());

if (dis<25&& zombie.getLife()>0){

zombie.getHurt();

return true;

}

}

return false;

}

#8.代码静态扫描

第一次静态扫描的结果

全部修正后的结果

#9.尚待改进或者新的想法 尚改进:游戏还是会出现卡顿现象,以及樱桃炸弹只能攻击前方的僵尸而不能攻击后方的僵尸等小bug,没有实现利用网络技术进行排名 新想法:实现更多的植物种植以及加入更多种类的僵尸,实现利用网络技术进行排名

#10.团队成员任务分配,标明组长

吴军霖(组长):大部分的模块以及存档,读档等

欧阳震霆:僵尸,道具,游戏界面等

陈文杰:太阳模块等

刘艳钦:豌豆射手射出豌豆,登录界面,dao模式结合数据库以及团队博客等

java植物大战僵尸思路_JAVA课程设计——植物大战僵尸(团队)相关推荐

  1. java飞机大战流程图_JAVA课程设计——飞机大战(团队)

    1.团队名称.团队成员介绍 黄力强(组长) 带带带带...带佬 陈汉煜(组员) 划水.gif 2.Gitee部分 3.项目功能架构图与主要功能流程图 游戏流程图: 面向对象设计 包图: uml(关键类 ...

  2. java设计五子棋_JAVA课程设计+五子棋(团队博客)

    JAVA课程设计 利用所学习的JAVA知识设计一个五子棋小游戏 1.团队名称.团队成员介绍(菜鸟三人组) 杨泽斌[组长]:201521123049 网络1512 叶文柠[组员]:20152112305 ...

  3. 蜘蛛纸牌java设计思路_Java课程设计蜘蛛纸牌 实战项目技巧总结

    相信大家对蜘蛛纸牌这个游戏本身并不陌生,它是一款桌面休闲益智类游戏.本文小编将来介绍Java课程设计--蜘蛛纸牌.本文主要总结了该项目的简介.采用技术.亮点和主要类及关键代码. 一.蜘蛛纸牌项目简介. ...

  4. java多功能计算器_Java课程设计多功能计算器 PDF 下载

    1.摘要: 为复习巩固Java语言的基础知识,进一步加深对java语言的理解和掌控.同过本课程设计使自身能够全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解.掌握和综合运用所学的知识 ...

  5. java飞机大战流程图_JAVA课程设计-飞机大战

    JAVA课程设计-飞机大战 1.团队名称.团队成员介绍 1.1 团队名称:做个飞机哦 1.2团队成员介绍: 余俊良(组长):编写博客.游戏主界面设计与实现.英雄机与子弹类的实现.场景设计 林祥涛:游戏 ...

  6. java课设 五子棋_Java课程设计 ————五子棋 (个人博客)

    JAVA课程设计 五子棋(博客个人版) •团队课程设计博客链接 •个人负责模块或任务说明 1.主框架类:设置棋盘窗体,颜色等 2.isWin方法:判断胜负 •自己的代码提交记录截图 •自己负责模块或任 ...

  7. java编程电话号码查询_java课程设计电话号码查询系统(15页)-原创力文档

    山东建筑大学 Java 课程设计报告 设计题目 电话号码查询系统 学生姓名黄瑜 学号 2010121187 专业班级信计101 指导教师 王文 1 1 1.设计目的 1.通过JAVA 课程设计,使大家 ...

  8. java 公交管理系统 代码_JAVA课程设计报告公交管理系统.pdf

    Java期末课程设计 -- Busmanagerment 课程名称:算法设计与分析 任课老师:吴倩 学生姓名:谢秀华 学生学号:1037005 所在院系:信息工程学院 班级: 10计算机1班 一.前言 ...

  9. java大鱼吃小鱼_Java课程设计——大鱼吃小鱼(团队)

    1.团队名称.团员介绍 团队名称:三枪加一炮 赖富烨(组长): Poison(毒药)类的设计: FishJpanel(游戏面板)类中的线程.部分方法的实现; 林阿强(组员): Login(简单登录界面 ...

最新文章

  1. 理解 IntelliJ IDEA 的项目配置和Web部署
  2. 后香农时代,华为提出10大数学挑战问题
  3. 怎样快速学习html5,如何快速学习HTML5?带你了解HTML5学什么?
  4. [Gdal-dev] GCP's, Warping and Source Data Projections
  5. 引入antd组件样式_如何使用 dumi 和 fatherbuild 创建组件库
  6. hana studio版本和hana版本的区别
  7. XXXXX CodeForces - 1364A(思维)
  8. 推荐几十本投资书籍、互联网书籍及热门查看流量的工具
  9. 算法--库函数实现全排列
  10. iOS取证将如漫漫长夜
  11. Java JDK中的跳表实现
  12. c语言中islower是什么函数,C语言islower函数介绍、示例和实现
  13. [哎]关于ftp扫描工具的破解问题
  14. 深度学习常用显卡比较
  15. 基线、底线、顶线、中线
  16. mysql8.0.21官网安装步骤_MySQL8.0.21安装步骤及出现问题解决方案
  17. 疫情数据分析平台(五):中国疫情地图绘制
  18. webpack高级应用篇(九):tree shaking(usedExports) 与 sideEffects
  19. java计算机毕业设计社区生活超市管理系统源程序+mysql+系统+lw文档+远程调试
  20. html5诅咒学园通关,NO.5 诅咒发作

热门文章

  1. 和平坤老师——心态调整与情绪管理
  2. 数据结构与算法基础(青岛大学——王卓) note
  3. A城市巡游车与网约车运营特征对比分析—数据读取及统计
  4. Matlab表白520绘图爱心
  5. jetson nano 网络配置
  6. C语言中的strtok函数
  7. Altium Designer 19.1.18 - 创建一块和 Keep-Out Layer 形状一样的铜皮
  8. 你可能需要好好认识一下这个LocalStorage(本地存储)
  9. Java保留小数的方法
  10. 北京软件开发公司哪家专业呢