坦克大战游戏设计与制作

  • 格式:doc
  • 大小:175.50 KB
  • 文档页数:19

下载文档原格式

  / 40
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1 需求分析 (1)

1.1 用户简介 (1)

1.2 项目目的和目标 (1)

1.3 功能和环境 (1)

2 系统设计 (2)

3 系统实现 (3)

3.1系统框架设计与实现 (3)

3.1.1 系统框架功能概述 (3)

3.1.2 系统框架实现过程 (3)

3.2 地图模块设计与实现 (5)

3.2.1 地图模块功能概述 (5)

3.2.2 地图模块实现过程 (5)

3.3坦克模型模块设计与实现 (6)

3.3.1 坦克模块功能概述 (6)

3.3.2 坦克模块实现过程 (7)

3.4敌方坦克模块设计与实现 (8)

3.5炮弹模块设计与实现 (8)

3.5.1 炮弹模块实现过程 (8)

3.6炮弹碰撞检测模块设计与实现 (9)

3.6.1 炮弹碰撞检测模块功能概述 (9)

3.6.2 炮弹碰撞检测模块实现过程 (9)

3.7信息面板模块设计与实现 (10)

3.7.1 信息面板模块功能概述 (10)

3.7.2 信息面板模块实现过程 (11)

4 实训总结 (13)

附录 (14)

1 需求分析

1.1 用户简介

近年来,手机游戏市场规模迅速增长,市场潜力巨大,同时,我国政府在大力扶持手机游戏行业,特别是对我国本土游戏企业的扶持,手机游戏已被列入国家863计划。积极参与游戏开发的国内企业可享受政府税收优惠和资金支持,同时,政府也加紧了对外国游戏开发商的管理制度。除此之外,我国政府各部门还采取了各种各样的形式来帮助发展国内手机游戏行业,手机游戏产业正高速发展。

用户角色大致分为:玩家

1.2 项目目的和目标

随着科技的发展,手机的功能越来越强大,手机已经成为大多数人生活的一部分,人们渐渐习惯于将手机作为新的娱乐工具,而游戏也已成为手机上不可缺少的功能。如今手机游戏的规划越来越复杂,画而越来越精美,娱乐性和交互性也越来越强,已经可以和当年的“Gameboy”掌上游戏相媲。

因此,开发这样一个娱乐游戏成为很有必要的事情。经过思考,我们设计了一块一款“坦克大战”的游戏以丰富人们的娱乐生活。

1.3 功能和环境

功能:坦克大战共分为两个对象,分别是用户和电脑。用户可以通过控制玩家的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认三十个的(这可以自己设置),当然,如果玩家被敌方坦克的子弹打中,那就gameover。

运行环境:Java虚拟机。

坦克大战游戏是由系统框架、地图模块、坦克模型模块、敌方坦克模块、炮弹模块、炮弹碰撞检测、信息面板模块这七个功能模块组成。分别是:

➢系统框架:主界面设计

➢地图模块:读取并显示地图

➢坦克模型模块:设计坦克并在地图中显示

➢敌方坦克模块:加入敌方坦克并使其移动

➢炮弹模块:加入炮弹并使其移动

➢炮弹碰撞检测:炮弹击中墙或坦克、炮弹之间的碰撞

➢信息面板模块:显示战场信息并实时更新

3.1系统框架设计与实现

3.1.1 系统框架功能概述

➢界面设计

➢整体是一个JSplitPane,分为左右两部分。

➢左侧显示控制信息,右侧显示战场信息,都是JPanel的子类。

➢战场是24*24的方格,每个方格为25像素*25像素

如下图所示:

图1 系统运行界面

3.1.2 系统框架实现过程

先要把左右界面的大小给分布好,把现实面板在左边显示,战场面板在右边显示。

package tank.view;

import javax.swing.JFrame;

import javax.swing.JSplitPane;

public class TankGame extends JFrame{

JSplitPane splitPane;

InfoField info; //左部信息

BattleField battle; //右部战场

public TankGame(){

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(750+8*2,600+30+8);

//分隔面板

splitPane = new JSplitPane();

splitPane.setSize(750,600);

splitPane.setDividerLocation(150);

splitPane.setDividerSize(1);

//初始化右部面板

battle = new BattleField();

splitPane.setRightComponent(battle);

//初始化左部面板

info = new InfoField();

splitPane.setLeftComponent(info);

info.setBattleField(battle);

battle.setInfo(info);

info.showInfo();

setContentPane(splitPane);

addKeyListener(battle);

setVisible(true);

}

}

3.2 地图模块设计与实现

3.2.1 地图模块功能概述

游戏中的地图共有三种:

➢地面(坦克可以在上面移动)

➢墙(坦克不能通过,但墙能被炮弹击毁)

➢主基地

图2 地图的设计

3.2.2 地图模块实现过程

byte[][] map; //地图数组

BattleField battle;

//地图的宽和高

public static final int MapWidth = 24;

public static final int MapHeight = 24;

//加载地图

public void loadMap(String mapFileName) throws IOException{ map = new byte[MapWidth][MapHeight];

File file = new File(mapFileName);

Scanner scanner = new Scanner(file);

for(int i=0;i