pvz课设报告(个人)
一、实现的功能及解释
-
通过植物类的不同种类来绘制画面
-
通过具体的植物和状态来绘制画面(寒冰射手、太阳、向日葵、炸弹、辣椒、僵尸同理,以豌豆射手举例)
-
在游戏界面里绘制游戏主体
① 绘制背景 ② 绘制所有卡片 ③ 绘制所有植物 ④ 绘制植物虚影 ⑤ 绘制所有僵尸 ⑤ 绘制所有子弹 ⑥ 绘制所有阳光 ⑦ 绘制阳光值
-
鼠标监听器:继承了MouseAdapter使用MouseMotionListener实现了鼠标点击、按压、拖拽、移动等监听
-
定时器:使用Runnable接口来实现每50ms定时绘制画面
-
设计植物类、僵尸类、阳光类、子弹类的状态
① 植物类的状态state 1.摇摆, 2.攻击, 4.待清除, 6显示虚影
② 僵尸类的状态state 1.前进, 2.啃食, 3.死亡, 4.待清除, 5.炸死
③ 太阳类的状态state 1.是活动, 2.是待清除, 3.是点击后的太阳
④ 子弹类的状态state 1.飞行, 2.爆炸, 3.待清除 -
碰撞检测:通过Rectangle里自带的intersects方法来检测两个矩形框是否有相交,有相交则判断为碰撞,这里以豌豆和僵尸的碰撞检测举例,子弹和僵尸,坚果和僵尸也同理
-
定时处理所有活动:生成僵尸、子弹活动、植物活动、僵尸换张、阳光活动等
这里以阳光活动举例:我们随机生成新的阳光,生成后就将新生成的阳光放进阳光容器(ArrayList)里,然后就执行阳光下落的状态,如果阳光下落到最低点的话,绘制阳光停止的画面,如果阳光被点击了的话,则变为状态三,阳光慢慢移动到左上角阳光收集处后变为状态二消失。 -
用户类的设计:属性(uid,password,zombieDieMaxAmount)
-
MySQL的基本建表操作
二、学会的知识
在这次课程设计中学会了团队合作的重要性,每个人负责不同的模块能够加快项目的进程速度,但是在代码合并的时候非常要命,直接合并会报错,那么怎样做是合并代码最好的姿势呢?最好是大家在同一份底层代码基础上写功能,不然如果变量名不一样啥的,会很麻烦,反正代码要统一合并会比较方便,还有合并如果报错,可以减少合并的代码数,一部分代码一部分代码,慢慢合并,最终找到bug的位置。学会了制作游戏的基本框架:几个界面,鼠标监听器,定时器,绘制界面,游戏主体的各种状态,主体不同状态下的各种情况等,还学了一点数据库的知识,MySQL的基础:建表,增删查改等,总之,学到了很多东西,不仅仅是代码的内容,也让我明白了自己能力的不足,寒假应该加油冲!
三、可以改进的部分
1.增加用户登陆注册功能
2.把排行榜的数据在进程中永久保存,根据每个用户的最高分制作排行榜
3.数据库存储排行榜的信息
4.多制作几个界面,调整僵尸的移动速度,攻击威力等等来调整难度,增加关卡