一 设计分析………………………………………………………………………3
1.设计目标……………………………………………………………………………3
2.主要内容……………………………………………………………………………3
二 设计说明……………………………………………………………………4
1.游戏逻辑……………………………………………………………………………程序前端开发需要学什么软件4
2.技术分工……………………………………………………………………………4
3.设计方法……………………………………………………………………………5
三 成果展示……………………………………………………………………6
1.运行截图………………………………………………………………6
2.程序代码………………………………………………………………7
四 结束语………………………………………………………………………18
五 致谢……………………………………………………………………………18
六 参考文献……………………………………………………………………18
一 设计分析
一.设计目标:
此项目是模仿PopCap Games公司开发的一款同名游戏《植物大战僵尸》而开发的,是一款益智策略类单机游戏,玩家通过武装多种植物切换不同的功能,快速有效地把僵尸阻挡在入侵的道路上。不同的敌人,不同的玩法,游戏的内容就是:玩家控制植物,抵御僵尸的进攻,保护主人的屋子。此游戏对玩家的要求也是大脑的智慧和小脑的反应,玩家可以从游戏中获得成就感和战略思维。
特点:
1、冒险模式。
2、有不同的敌人和可使用道具,使游戏更具挑战性。
3、无限次重玩,不会经历两次同样的事件。
二.设计内容:
通过玩家对不同植物的选择,例如向日葵可快速产生阳光,豌豆射手可攻击敌人等等,来操作游戏,后台通过调整时间和参数达到前端界面游戏的可玩性。
功能类别 | 子功能 |
前端游戏界面 | 主界面 |
模式选择 | |
进入游戏 | |
确定关卡 | |
退出 | |
后台代码设计 | 选择、放置植物 |
阳光生产时间 | |
收集阳光 | |
产生僵尸 | |
攻击、杀死僵尸 | |
二 设计说明
1游戏逻辑
(1)僵尸是攻击方,为了攻击,防御僵尸,人类通过栽种培植出的各种植物来抵御进攻型僵尸的攻击。植物需要相应的阳光值成长。
(2)在作战地点,玩家需要通过种植各种攻击植物来消灭僵尸,也可以通过种防御植物来阻挡僵尸,还需要太阳花来产生种植需要的阳光。
3僵尸作战单位
(1)普通僵尸。速度(1帧),血限3,毁掉植物需要3s。
4植物作战单位
(1)太阳花。种植需阳光值50,作用:生产种植所需的阳光值,每隔10s生产50点阳光值,不具备攻击力。
(2)碗豆射手。种植需阳光值100,作用:5s发射一颗炮弹,战斗值1。
(3)寒冰射手。种植需阳光值175,作用:5s发射一颗炮弹,战斗值1.
(4)土豆卫士。种植需阳光值50,作用:抵挡各种僵尸3s,主要用来防御,没有任何战斗力。等共5种可供选择种植的植物。关卡简介:所有的僵尸都会参与攻击,所有的植物也都会参与作战,每次只能选取5种植物参与作战。
5碰撞逻辑说明
僵尸会在屏幕的右边生成,然后缓慢向左边屏幕移动,如果在僵尸移动的线路上有攻击型植物,则发射炮弹。当种植的植物或炮弹与僵尸接触,即当他们的坐标相同的时候,即为接触,接触大小的区域就是图片的大小区域。当炮弹与僵尸碰撞之后,炮弹也就会立即消失,同时僵尸生命值的也随之减少一点。若炮弹未击中任何僵尸,越出屏幕后也将消失。
2.技术分工
本人在项目中负责后台代码实现,主要有
1.阳光添加
2.僵尸移动
3.子弹移动
4.生产阳光
5.产生子弹
3.设计方法
通过玩家对不同植物的选择,例如向日葵可快速产生阳光,豌豆射手可攻击敌人等等,来操作游戏,后台通过调整时间和参数达到前端界面游戏的可玩性。
功能类别 | 子功能 |
前端游戏界面 | 主界面 |
模式选择 | |
进入游戏 | |
确定关卡 | |
退出 | |
后台代码设计 | 选择、放置植物 |
阳光生产时间 | |
收集阳光 | |
产生僵尸 | |
攻击、杀死僵尸 | |
技术要求:
前端:Javascript
后台:Servlet
开发工具:MyEclipse
因为类中已经写好了方法和属性,在后台代码设计中,只需要调用之前写好的类,对静止的图像进行多次重绘,就可以实现游戏的画面。
第三部分 成果展示
设计成果:产品设计类
一:运行截图
二:程序代码:
阳光添加代码:
l;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JLabel;
import plantvsplant.Controller;
public class SunAdd extends Thread{
Controller controller;
private JLabel sun;
private int a;
private int b;
public static boolean stop=false;
public SunAdd(int x,int y,Controller controller,JLabel sun){
ller=controller;
this.a=x;
this.b=y;
this.sun=sun;
}
public void run(){
sun.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
sun.setVisible(false);
controller.putSunValue(25);
}
});
while(true){
if(stop){
sun.setVisible(false);
break;
}
try {
sleep(200);
} catch (InterruptedException e) {
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论