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

  • 相关阅读:
    Linux 基础 —— RPM
    mysql主从复制
    mysql.user表中Host为%的含义
    MySQL + Atlas --- 部署读写分离(参考02)
    MySQL读写分离技术(参考)
    蚁群算法
    java 回调
    java 接口sort comparable
    matlab 求解高阶方程
    matlab 求解常微分方程
  • 原文地址:https://www.cnblogs.com/qq690775749/p/15792030.html
Copyright © 2020-2023  润新知