植物大战僵尸课设个人报告--009
1.实现功能及解释
1.1音乐文件的读取和写入
通过已经存在的系统函数将音频输入流音频数据写入缓冲区,对音频进行捕捉。
1.2 子弹状态
子弹与僵尸发生碰撞
使用已经存在的Rectangle.intersects(double x, double y, double w, double h)进行判定,
运动的子弹与运动的僵尸的两个矩形框发生接触时,表明子弹撞到了僵尸
之后再循环遍历僵尸容器中各个僵尸,确认子弹碰到的僵尸为哪一只。
接着对僵尸和子弹的状态分别进行改变。
造子弹
由于不同时间充能完成,会生成不同的子弹,对于子弹也是使用子弹容器进行保存,当充能过程完成时,造成一颗新的子弹,同时把这颗子弹放入容器中。如果子弹被移除,也就意味着被移出容器。
1.3 阳光
阳光容器
用容器存放场上当前存在的所有阳光,当阳光被收取时,从容器中脱离,同时用户拥有的阳光数量增加
收取阳光
点击阳光后,阳光会根据公式缓慢地上移
2.学会的知识
对于界面的设计,我了解到可以通过图形用户界面(GUI)工具包swing中的面板容器类来实现需求。
对于音频的插入和读取,使用AudioSystem、AudioFormat等技术,了解到超类DataLine、超级界面Line等新事物
通过鼠标监听器来获取鼠标的位置坐标,进行一系列关于坐标位置而进行操作
通过矩形边框的碰撞来获取信息
Image类的getImage来获取图片,张贴背景图等。
3. 可以改进的部分
卡片类还可以添加更多种类的植物,在进入游戏时应该有超出卡片区的多种植物供用户挑选,对不同的植物卡片进行不同的标记。
阳光的掉落可以更加富有随机性,掉落的收取和种植时阳光的变化可以更加多样化。
对于能射出不同方位子弹的植物进行特殊标记,同一时刻射出的子弹根据直线方程等数学计算方法进行轨迹的模拟。
特殊效果的子弹装入不同的容器之中,或再创建一个effect效果属性,对于不同的属性进行不同方法的标记。