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.多制作几个界面,调整僵尸的移动速度,攻击威力等等来调整难度,增加关卡

posted @ 2022-01-12 12:15  强扭的甜瓜  阅读(50)  评论(0编辑  收藏  举报