目次

第1章  需求分析....................................................................... 3

1.1 项目分析....................................................................... 3

1.2 项目概述....................................................................... 3

1.2.1 白昼模式................................................................. 3

1.2.2 夜晚模式................................................................. 3

1.2.3 游戏设置................................................................. 4

1.2.4 查看帮助................................................................. 4

第2章  概要设计....................................................................... 5

2.1 游戏设计....................................................................... 5

2.1.1 游戏背景................................................................. 5

2.1.2 游戏逻辑................................................................. 5

2.1.3 僵尸作战单位............................................................. 5

2.1.4 植物作战单位............................................................. 5

2.1.5 碰撞逻辑说明............................................................. 6

2.1.6 状态播放规则............................................................. 6

2.2 软件架构....................................................................... 6

2.3 软件功能模块基本介绍........................................................... 7

2.3.1 主要模块选择功能......................................................... 7

2.3.2 游戏模式选择功能......................................................... 7

2.3.3 游戏声音开关功能......................................................... 7

2.3.4 查看帮助功能............................................................. 8

第3章  界面设计....................................................................... 8

3.1 结构设计....................................................................... 8

3.2 交互设计....................................................................... 8

3.3 视觉设计....................................................................... 9

第4章  详细设计与实现................................................................ 10

4.1 搭建游戏基本框架.............................................................. 10

4.1.1 Welcome(欢迎界面)类................................................... 10

4.1.2 Menu(菜单)类.......................................................... 10

4.1.3 Help(游戏帮助)类...................................................... 10

4.1.4 Select(游戏选项)类.................................................... 10

4.2 游戏model包.................................................................. 11

4.2.1 Plant接口............................................................... 11

4.2.2 BaseMadol(基本)类..................................................... 11

4.2.3 Config(变量)类........................................................ 11

4.3 游戏具体实现及相关的实体类.................................................... 11

4.3.1 太阳花的种植及其产生阳光实现............................................ 11

4.3.2 豌豆射手种植及射击实现.................................................. 14

4.3.3 生成僵尸的实现.......................................................... 14

4.3.4 游戏管家................................................................ 14

4.3.5 根据有无僵尸判断是否射击................................................ 16

4.3.6 僵尸碰到植物停止当吃掉植物后继续前进.................................... 16

总结.................................................................................. 18

致谢.................................................................................. 19

参考文献.............................................................................. 20

作者简历.............................................................................. 21

学位论文数据集........................................................................ 22


第1章  需求分析

1.1 项目分析

    本项目分为三个主要部分:游戏部分有:白天、夜晚两个模式,设置部分:游戏设置帮助部分:查看帮助。用例图如图1.1。

图 1.1 系统用例图

1.2 项目概述

1.2.1 白昼模式

此部分主要讲述的是玩家在白天模式下的游戏,此关背景为白天,具体如表1.1。

表 1.1 常规模式

用例名称

白昼模式

功能说明

在白昼模式下进行游戏

前置条件

进入游戏

后置条件

进入白昼模式开始游戏

游戏流程

1、选择主菜单页面的“游戏模式”按钮,选择进入白昼模式开始游戏

2、点击“返回”按钮,游戏终止

1.2.2 夜晚模式

此部分主要讲述的是玩家在白天模式下的游戏,此关背景为白天,具体如表1.2。

用例名称

夜晚模式

功能简述

在夜晚模式下进行游戏

前置条件

玩家选择并进入游戏

后置条件

进入夜晚模式并开始游戏

基本流

1、点击主页面“夜晚模式”按钮,进入夜晚模式开始游戏

2、点击“返回”按钮,游戏终止

表 1.2 夜晚模式

1.2.3 游戏设置

此部分主要实现对游戏背景音乐的控制,玩家可以在此选项里面调整控制游戏背景音乐的开关[8]。此部分实现如表1.3。

用例名称

游戏设置

功能简述

对游戏的背景音乐的开关进行操作

前置条件

设置游戏背景音乐

后置条件

游戏背景音乐的开关

基本流

1、点击主界面“游戏设置”,进入游戏背景音乐设置。

2、点击音效键。

3、点击“返回”键回到主界面。

表 1.3 游戏设置

2.2.4 查看帮助

此部分主要实现游戏玩家查看帮助。

第2章  概要设计

2.1 游戏设计

2.1.1 游戏背景

自古以来就有人类与僵尸之间的斗争,为了夺取生存空间,一有机会,僵尸就向人类发起攻击。当然人类也不会束手就擒,他们培养出的植物可以伤害僵尸,植物就是人类防备僵尸进攻的武器[9]

2.1.2 游戏逻辑

(1)僵尸是攻击方,为了攻击,防御僵尸,人类通过栽种培植出的各种植物来抵御进攻型僵尸的攻击。植物需要相应的阳光值成长。

(2)在作战地点,玩家需要通过种植各种攻击植物来消灭僵尸,也可以通过种防御植物来阻挡僵尸,还需要太阳花来产生种植需要的阳光。

2.1.3 僵尸作战单位

(1)普通僵尸。速度(1帧),血限3,毁掉植物需要3s。

(2)戴帽子类僵尸。速度(1帧),血限4,毁掉植物需要3s。

(3)戴铁桶类僵尸。速度(1帧),血限5,毁掉植物需要3s。

(4)运动员类僵尸。速度(2帧),血限3,毁掉植物需要3s。

(5)铁网类僵尸。速度(1帧,)血限6,毁掉植物需要3s。

2.1.4 植物作战单位

(1)太阳花。种植需阳光值50,作用:生产种植所需的阳光值,每隔10s生产50点阳光值,不具备攻击力。

(2)普通碗豆射手。种植需阳光值100,作用:5s发射一颗炮弹,战斗值1。

(3)冰冻豌豆射手。种植需阳光值175,作用:5s发射一颗炮弹,战斗值1。

(4)加强型碗豆射手。种植需阳光值250,作用:5s发射两颗连续的炮弹,每颗炮弹战斗值为1。

(5)土豆卫士。种植需阳光值50,作用:抵挡各种僵尸3s,主要用来防御,没有任何战斗力。等共14种可供选择种植的植物。

关卡简介:所有的僵尸都会参与攻击,所有的植物也都会参与作战,每次只能选取六种植物参与作战。[10]

2.1.5 碰撞逻辑说明

僵尸会在屏幕的右边生成,然后缓慢向左边屏幕移动,如果在僵尸移动的线路上有攻击型植物,则发射炮弹。当种植的植物或炮弹与僵尸接触,即当他们的坐标相同的时候,即为接触,接触大小的区域就是图片的大小区域。当炮弹与僵尸碰撞之后,炮弹也就会立即消失,同时僵尸生命值的也随之减少一点。若炮弹未击中任何僵尸,越出屏幕后也将消失[11]

2.1.6 状态播放规则

动画的播放速率人100ms/帧,其中植物的播放速度均为8帧,僵尸的播放速度为7帧。当全部播放完成以后,系统又从第一帧开始,如此循环播放。

2.2 软件架构

 
   

根据玩家的需求,我们可以分析得到如下的几点基本要求,游戏加载、主界面、模式选择、主要功能选择、开始游戏等构成了如下架构。总体架构如图2.1。

 
 
 
  图 2.1 软件总体架构图

游戏加载:玩家打开游戏后会进入游戏加载,此界面用来欢迎玩家使用该游戏;

主界面:游戏功能界面的展示,可以选择功能;

模式选择:可以选择在不同模式下进行游戏;

开始游戏:实现植物大战僵尸的功能;

游戏设置:控制游戏背景音乐的开关;

2.3 软件功能模块基本介绍

根据游戏的功能模块:选择主要功能、选择模式、查看帮助等模块。

此游戏软件功能模块主要有以下功能:

2.3.1 主要模块选择功能

其功能是用来显示植物大战僵尸游戏的主菜单,玩家可以根据自己的兴趣爱好选择在不同的模式开始游戏,此模块也有游戏帮助提供给玩家查看。MENU状态下才会激活该模块,然后根据玩家作出的不同选择调用相应的功能,想要退出游戏点击推出按钮即可[[12]。功能选择模块流程如图2.3。

图 2.3 功能选择模块流程图

2.3.2 游戏模式选择功能

该游戏分两种模式,白天和夜晚模式。根据自己兴趣玩家可以选择不同的模式开始游戏。

2.3.3 游戏声音开关功能

该款游戏默认的游戏背景音乐是开启的,玩家可以根据自己的爱好对背景音乐进行设置,玩家可以选择是否开启音乐。该选项在游戏设置中进行设置。

2.3.4 查看帮助功能

此款软件还具有帮助功能,点击可以进入帮助界面,点击屏幕返回键将会自动转到主菜单界面[3]

第3章  界面设计

游戏的界面是直接影响玩家体验的重要因素,一个好的游戏必须有非常吸引眼球的界面,为了使该游戏在界面上有更好的效果,不断对其界面进行了美化、规范化的设计。

3.1 结构设计

根据对软件需求的分析,该游戏应有以下界面:欢迎界面、游戏菜单界面、模式选择界面、查看帮助界面、游戏界面[14]。游戏结构设计如图4.1

图 3.1 游戏结构设计图

3.2 交互设计

该游戏专为中国Android用户而设计,因此语言选择使用中文。在每一个界面,都有onTouch()函数和onKeyDown()函数存在,为用户触屏和点击按键事件做响应,其功能都是退出当前所在的页面,为了方便程序退出,在欢迎、主菜单界面都设有退出按钮,点击这些按钮即可退出游戏。[10]

游戏界面有一个植物选取,点击相应植物后,就能在种植区域种植植物,种植区有五个横着的跑道,僵尸在每行都会进攻。游戏界面设计如图3.3。

3.3 视觉设计

绿色为该游戏采主色调,迎合大部分植物的颜色,给玩家一种相对柔和的色调。角色造型模仿网络已有的素材。游戏菜单设计如图3.2,界面设计图如图3.3。

图 3.2 游戏菜单图

图 3.3 游戏界面设计图

第4章  详细设计与实现

4.1 搭建游戏基本框架

4.1.1 Welcome(欢迎界面)类

这是游戏的欢迎界面类,此类定义了开始游戏按钮的横坐标、纵坐标等,用draw()函数来绘制欢迎界面的一些图片按钮和主界面的背景。设计中还用到了onTouchEvent()函数来回应并控制玩家在图片按钮区域所触发的ACTION_DOWN事件,其目的就是用来控制和显示按钮所按下的图片。

在玩家触发完成ACTION_UP事件后,按钮图片将会被改变为未按下状态并会通过MainSurfaceView.gameState = MainSurfaceView.GAME_MENU代码将游戏转到主菜单界面。

4.1.2 Menu(菜单)类

游戏菜单,用boolean类型定义按钮是否按下状态,并初始化值全部为false。在主菜单界面设计中的布局绘制菜单选项涉及到的全部按钮。

用ACTION_DOWN或者ACTION_MOVE来检测每个按钮的状态,(是否被按下),如果是被按下的,则会在draw()函数中绘制按钮被按下状态时的相对应的图片。然后会在ACTION_UP事件中会把按钮的状态重新修正并且游戏界面会跳转到相应的游戏状态,就拿“游戏帮助”来说,点击“游戏帮助”后调用MainSurfaceView.gameState = MainSurfaceView.GAME_HELP改变游戏状态。如果点击“退出”,则调用System.exit(0),系统退出游戏。

4.1.3 Help(游戏帮助)类

Help类主要是给玩家提供相关帮助信息,把内容绘制在一张图片上,玩家需要帮助时可以打开此功能,该类通过把帮助图片显示在屏幕上,方便玩家查看。点击屏幕即可触发ACTION_UP事件,回到主菜单界面。

4.1.4 Select(游戏选项)类

为玩家提供游戏选项的一个类。玩家点击屏幕的不同游戏模式触发ACTION_UP事件,控制玩家进入不同的游戏。

接着在MainSurfaceView类中将游戏状态gameState初始化为GAME_WELCOME,定义并初始化SELECT类,在myDraw()状态下调用draw()函数,在onTouchEvent()状态调用onTouchEvent()函数。

4.2 游戏model包

4.2.1 Plant接口

种植植物是按照坐标来种植的,五条线路来显示植物和僵尸的作战区,不能随便选取,每条路线都有九个格子的位置可以用来种植植物,玩家只能在这些规定的格子内种植植物,布局中,我们定义了54个这样的格子,并且规定每个格子能且只能栽种一种植物,不可以种植多种,就算是同一种植物也不可以在同一个格子里面种植。每个格子都有一个属于自己的编号,起作用是为了记录该区域是否已经种植了植物。该接口是用来实现getMapIndex()方法[15]

4.2.2 BaseMadol(基本)类

在游戏中,无论是植物单位,僵尸单位或者种子选择栏中的种子,他们都会有一些共同的方法或者属性,就如他们的坐标,即这些图片所在的位置。为了减少代码的编写量,也方便查看,在面向对象中我通常会将各个类的公共部分编写成一个类,方便其他类的调用。所以在程序中建立了这所有的公共父类BaseMadol。

4.2.3 Config(变量)类

Config类是用来全局变量的,这些都是游戏中所需要的变量。为什么要这么做?因为开发过程中测试是必须的,为了能够快速完成这个过程,要修改上述这些变量,当不是设置成全局变量将可能浪费大量时间做重复的修改操作。

该类还定义了游戏中所有对象的图片素材。普通类不能从图片工厂中获取图片,普通类如果要使用图片都会从构造函数中传递进去,如果以此方法使用的多了,这将使程序显得混乱,不方便管理。

该类还定义了所有植物种植点。

4.3 游戏具体实现及相关的实体类

4.3.1 太阳花的种植及其产生阳光实现

太阳花卡片我们用SunSeed类定义,它就是继承了BaseMadol类,实现了TauchAble接口。除了定义其坐标、是否存在的成员变量外,还定义了一个触摸区域。它的成员变量及成员方法如图4.1。

 
   

图4.1 SeedFlower类成员变量及成员方法示意图

SeedFlower():SeedFlower类的构造函数,在这里的属性我们会将其初始化,我们isAlive默认为true。

drawSelf():绘画函数,主要功能是实现能在各个位置下显示种植的太阳花种子。具体实现方法如下。

onTouch():对触屏事件处理,在该函数中它会首先记录玩家点击的触摸点坐标,检测touchArea.contains(pointX,pointY) && Config.sunshineValue>=Config.flowerCost,如果成立,就会此坐标显示一个玩家所要种植的植物,这个功能用定义在Game类里的apply4EmplacePlant(int locationX,int locationY)函数来实现。该函数会检测所要种植的植物并创建一个要被种植的植物对象。

EmplaceFlower类是玩家所选择的并且将要被种植的太阳花类,也是继承自BaseMadol,实现了TauchAble接口。

touchArea:手指触屏跟随区域,根据构造函数所接收到的参数,为即将种植太阳花大小的区域进行初始化。

Flower类是玩家可以看到的显示屏上已经种植的太阳花,也是继承自BaseMadol,实现了Plant接口。不仅有从父类继承来变量,它还有属于自己新增成员变量:frameIndex和长整型变量lastShineTime,他们用来表示太阳花位图数组下标,所在格子编号。如图4.2。

图4.2 Flower类成员变量及成员方法示意图

drawSelf():绘图函数,绘制当前帧的图片。

Sunshine类,太阳花所生产出来的阳光值,每10s都会产生一个。此类只存在5s,在这段时间内,如果玩家点击了阳光,那么对应的阳光值就会得到增长,每个增加50,要是在这5s内没有点击到,那么阳光机会自动消失。从上述设计可以知道阳光有两种状态,一种是显示状态,另一种是待拾取状态。

drawSelf():在阳光存活状态下,若它此时是SHOW状态,判断阳光存在时间是否已经有5s,如果存在时间已经过了5s,那么isAlive值就将被赋值为false,如果没有的话,就不会进行任何操作。在MOVE状态下,此时,阳光的横纵坐标就会以xSpeed,ySpeed的速度递减,当到达上边边界时,即当纵坐标小于屏幕的边界时,此时显示栏的阳光值就会显示增加50,并且isAlive就会被赋值为false。

当玩家点击到阳光时,此时它的状态就会被设置为MOVE,并且记录运动起点到终点的横纵距离,分别用xDistance,yDistance表示,然后将xSpeed,ySpeed分别设置为xDistance/5f,yDistance/5f。

状态图如图4.3所示。

图4.3 阳光的状态图

4.3.2 豌豆射手种植及射击实现

根太阳花一样,我们也定义SeedPea、EmplacePea、Pea、Bullet,其中SeedPea、EmplacePea、Pea前三个类与太阳花相似。

Bullet:炮弹类,也是继承自BaseMadol。游戏中我们用xSpeed来表示炮弹在水平方向的移动速度,其初始值为5。在它的drawSelf()函数中,炮弹被先画出来,接着给它的横坐标加上xSpeed,这样,在我们看来,炮弹就是在直线匀速运动的,当炮弹越过右边边界时,那么isAlive就会自动设置为false。若炮弹与僵尸碰撞,我们用getModelWidth()方法来处理此事件。

4.3.3 生成僵尸的实现

Zombie类(僵尸类)继承BaseMadol。构造方法参数也会用到僵尸刚生成使得坐标,用raceWay来传递一个整型变量来表示跑道,简单的来说,就是僵尸进攻的线路,在做碰撞检测的时候,系统会检测跑道上的炮弹和所种植的植物。由于僵尸是横向向着屏幕的左边移动,所以在drawSelf()函数中要在绘制每一帧之后再把动画帧下标加一,然后它的横坐标还要减去僵尸前进的速度xSpeed。

为了方便管理僵尸的生成,我们定义了一个ZombieManager类,此类会控制僵尸在15s随机生成一类的僵尸。我们用以下方法来实现僵尸的生成:

public boolean isExistPlant(int key, int raceWayIndex) {

switch (raceWayIndex) {

case 0:

for (BaseModel model : gameLayout4plant0) {

if (model instanceof Plant) {

if (key == ((Plant) model).getMapIndex())

return false;

}

}

break;

……

}

return true;

}

4.3.4 游戏管家

此游戏是通过不断绘制图片来,因此必须非常清楚的划分回吐的顺序,不然会产生非正常的覆盖将大大影响游戏的视觉效果。最后画的元素覆盖在屏幕最上层,并且将其规定为第一层,依次类推。

种植植物时,我们设定种子图片是随着玩家的手指移动而移动的,这个时候种子图片显示在所有屏幕对象的最上边,为第一层,最后画这一层。植物的种子设定为第2层,阳光则规定为第3层,然后将植物、僵尸、炮弹统一设定为第4层。定义容器gamesLayout1,gamesLayout2,gamesLayout3分别用来表示第1、2、3层容纳的单位。用gamesLayout4plant0,gamesLayout4zombie0表示第4层第一条跑道植物和僵尸单位。剩下的跑到依次类推。定义createElement()为阳光值Config.sunshineValue赋初值为100,初始化各种容器,并且新建会SeedFlower、SeedPea类对象seedFlower、seedPea,将他们初始化到种子栏中相应位置,用gamesLayout2.add()添加到第二层。用如下代码来设计植物与僵尸的跑道:

private void createElement() {

……

for (int i = 0; i < 5; i++) {

for (int j = 0; j < 9; j++) {

Config.plantPoints.put(i * 10 + j, new Point((j + 2)* Config.screenW / 11

- Config.screenW / 11 / 2,(i + 1) * Config.screenH / 6 - 10));

if (j == 0) {

Config.raceWayYpoints[i] = (i + 1) * Config.screenH / 6- 10;

}

}

}

}

以下代码是用来记录植物并添加植物到相应的跑道的植物容器里面:

 public void apply4Plant(int locationX, int locationY, BaseModel baseModel) {

……

for (Integer key : Config.plantPoints.keySet()) {

point = Config.plantPoints.get(key);

if ((Math.abs(locationX - point.x) < Config.screenW / 11 / 2)

&& (Math.abs(locationY - point.y) < Config.screenH / 6 / 2)) {

int raceWayIndex = 6;

for (int i = 0; i < Config.raceWayYpoints.length; i++) {

if (point.y == Config.raceWayYpoints[i]) {

raceWayIndex = i;

}

}

……

}

}

}

游戏的初始化:

/**

* 初始化游戏基本参数

* @param plantTypes

*/

public void initGameParas (ViewGroup root,int type, int[] plantTypes) {

// 获取屏幕宽高

ScreenWidth = ((Activity) getContext()).getWindow().getWindowManager()

.getDefaultDisplay().getWeight();

ScreenHeight = ((Activity) getContext()).getWindow().getWindowManager()

.getDefaultDisplay().getHeight();

// 初始化植物、僵尸、子弹、卡片管理者

plantMgr = new PlantManager(getResources());

zoManager = new ZoobieManager(getResources());

bulletManager = new BulletManager(getResources());

cardManager = new CardManager(getContext(), root,plantTypes);

sunManager = new SunManager(getResources());

// 初始化游戏线程

gameDrawThread = new GameDrawThread(surfaceHolder, plantMgr, zoManager,

bulletManager, sunManager, choooseDayOrNight(type));

}

4.3.5 根据有无僵尸判断是否射击

根据需求,只有当跑道有僵尸时豌豆射手才需要发射炮弹,当该跑道还没有生成或所有僵尸时豌豆射手将不会射击,即不发射炮弹。在Pea类中,isShoot用来表示定义的一个布尔变量,其初始值设为false,定义其get、set方法,检测isShoot值是否为true,true时调用shootBullet()函数。在Game类apply4AddZombie()中当产生僵尸的时候,检测该产生僵尸的跑道是否有豌豆射手存在,如果有,那么isShoot就被设置为true,如果没有,那么依然为false。然而若是在产生僵尸时判断是否有豌豆射手,每次都要对isShoot判断。所以应当在豌豆射手发射炮弹时检测是否有僵尸在跑道上,如果有僵尸则发射导弹,否则不发射。

4.3.6 僵尸碰到植物停止当吃掉植物后继续前进

当僵尸和植物相遇后就会停止前进,此时,僵尸开始进食植物,在此过程中,植物会抵抗3s,接着,僵尸还会继续前进。在Zombie类中用布尔变量isMove来定义僵尸的活动状态,并初始化为true、僵尸碰撞植物后用变量eatTime(长整型)记录此时系统时间,并设置变量get(),set()属性。在僵尸横向移动代码上添加条件语句:只有isMove为true时僵尸才从右向左移动。在Game类中当碰撞函数检测到僵尸与植物碰撞时,若僵尸还处于移动状态,则使其停止前进,将这刻系统时间用zombie.setEatTime(System.currentTimeMillis())记录。当僵尸与植物的接触超过3s时,系统将植物isAlive赋值为false,此时植物即被吃掉消失,然后僵尸会继续进攻,向左屏幕前进。

 

参考文献

[1] 张士诚.基于Google Android平台的应用程序开发与研究[J]电脑知识与技,

术2009.(5)

[2]高兰兰.基于Android平台的多分辨率解决方案[J]软件。2011.(32)

[3] 宋小倩,周东升。基于Android平台的应用开发研究[J]软件导刊。2011(2)

[4] 王志超,王敏。基于Android平台的MP3播放器分析与设计[J]科教导刊。2011(25)

[5]卢宏伟 基于Android平台的在线播放器设计与实现[J]电脑知识与技,术2011.(07)

[6] 杨帆. 基于Java技术的网上书店系统的设计与实现[J] . 计算机应用研究, 2003 .

[7] 李志义,刘奕然. 基于JSP的网上书店的一种设计与实现[J]. 情报杂志,2007,(7).

[8] 刘冰. 基于JSP的网上书店系统的研究与设计[J]. 科技广场,2009,(5).

[9] 官全龙, 姚国祥. 基于Struts的应用架构的研究[J]. 计算机工程与设计, 2005, 26(12):     3225-3227

[10] Mohammad Jafar Tarokh ,Javad Soroor. Supply Chain Management Information Systems Critical Failure Factors .IEEE, 2006, :425-431.

[11] 汪孝宜,刘中兵,徐佳晶.JAVA数据库开发实例精粹[J].北京:电力工业出版社,2006.

[12] 官全龙, 姚国祥. 基于Struts的应用架构的研究[J]. 计算机工程与设计, 2005, 26(12):    3225-3227

[13] 闫斐, 王亚弟, 韩继红. 基于Struts架构的J2EE应用软件的设计与开[N].微计算机信息, 2006, 22(30): 227-229.

[14] Red Johnson. Expert One-on-One J2EE Development without EJB[M].电子工业出版社,2005.

转载于:https://www.cnblogs.com/chenzhuo131/p/7879242.html

植物大战僵尸详细设计相关推荐

  1. 植物大战僵尸 PVZ Qt版

    前排提示:这是我花了两个星期写的QT版PVZ程序,时间比较紧,因此许多地方可能有不足,请见谅!在GitHub的代码没有注释,因为...即使有注释你也未必能看得懂 ,所以阅读代码前先看这篇文章. 源代码 ...

  2. 用Qt制作一个魔改版植物大战僵尸(基于飞机大战)

    目录 说在前面 项目设计 目的 总体设计 功能特点 开发环境 模块说明 详细设计 界面设计 声音设计 玩法设计 部分较难功能的实现 子弹产生.运动与内存管理 碰撞检测 结语 源代码 说在前面 这不是作 ...

  3. Java项目:植物大战僵尸(java+swing)

    源码获取:博客首页 "资源" 里下载! 功能简介: 植物大战僵尸.冒险模式.生存模式.解谜模式 小车服务类: public class CarThread extends Thre ...

  4. Python开发植物大战僵尸游戏(附github项目地址)

    今天给大家分享一个仿<植物大战僵尸>的小游戏开发案例. 开发思路 引入需要的模块,配置图片路径,设置界面宽高背景颜色,创建游戏主入口. #1引入需要的模块 import pygame im ...

  5. c语言游戏call调用,C语言-植物大战僵尸-刷僵尸call;fps游戏CS-方框透视(矩阵+传统)...

    C语言-植物大战僵尸-刷僵尸call:fps游戏CS-方框透视(矩阵+传统)前言:大家好,我是向上先生,嘿嘿~最近在学习逆向.反汇编等等,首先我在非常感谢52pojie这个平台,差不多很多学习资源都是 ...

  6. 用Java写一个植物大战僵尸简易版!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://urlify.cn/byeEj ...

  7. Photoshop绘制植物大战僵尸中的食人花

    本教程主要使用Photoshop绘制植物大战僵尸中的食人花,制作食人花有几个要素需要 注意.我是参照超级马里奥和植物战僵尸两款游戏综合得出的这个家伙~不过由于它没有眼睛传神,所以制作的时候就需要特意关 ...

  8. 部分 CM11 系统 Android 平板执行植物大战僵尸 2 黑屏的解决的方法

    原文 http://forum.xda-developers.com/showthread.php?t=2755197 部分 CM11 系统的 Android 平板(比如三星 GT-P5110 )执行 ...

  9. 用Java语言,写一个植物大战僵尸简易版!

    前言 有谁没玩过植物大战僵尸吗? 小灰的一位读者,用Java语言开发了自己的植物大战僵尸游戏.虽然系统相对简单,但是麻雀虽小五脏俱全,对游戏开发感兴趣的小伙伴可以学习一下哦~~ 游戏设计 植物大战僵尸 ...

最新文章

  1. 初识 ASP.NET 3.5 MVC 开发
  2. [C]Ubuntu 13.04实现NVIDIA双显卡切换
  3. Android M(6.0) 权限相关
  4. 功能自动化接入持续集成方案
  5. 区块链 用户身份权限模式 方案
  6. 【老生谈算法】matlab实现自适应滤波器源码——自适应滤波器
  7. 记录一丢丢自己在用FileTransfer和FileOpener2实现自动更新下载安装apk时候踩的坑
  8. python做生词本_Kindle 阅读器“生词本”功能详细使用说明
  9. 解决git提交:Please enter a commit message to explain why this merge is necessary
  10. 网课答案公众号搭建过程详解
  11. Java获取指定时间前一小时、后一小时的时间
  12. 改Robust Video Matting为Robust Image Matting
  13. openwrt问题汇总
  14. matlab做误差棒图,科学网—Matlab误差棒、图例、颜色配比,很有用的代码 - 周锋的博文...
  15. 《MLB棒球创造营》:走近棒球运动·密尔沃基酿酒人队
  16. Qt 之等待提示框(QPropertyAnimation)
  17. UE4 对接Steam
  18. android定时调用gc,Android性能:远程触发GC
  19. 睡眠和休眠:常见问题
  20. js回去另一个html元素ID,javascript获取多个相同ID的元素

热门文章

  1. java time sleep_TimeUnit类中的sleep() 和Thread.sleep()
  2. JSP+sql网络远程作业处理系统(系统+论文+开题报告+中英文摘要+封面+目录+资料)
  3. 火影抽卡模拟器1.0.1
  4. MySQL数据库数据动态监控(canal+Kafka)
  5. USACO入门以及提交格式
  6. python绘制turtle心电图代码_Python代码详解:入门时间序列分类
  7. 魔方APP项目-01-移动端开发相关概念、移动端自适配、元信息(meta)、开发准备、移动端项目搭建(模拟器调试)、APICloud(APICloud 前端框架,获取服务端API接口)
  8. html+css基础
  9. JASS代码翻译更新(第七篇)
  10. Visual Studio Code 入门教程