GithubHelp home page GithubHelp logo

bawangse / tank-battle-data-structure-design Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mummyding/tank-battle-data-structure-design

0.0 0.0 0.0 26.87 MB

数据结构课程设计,年初做的 http://blog.csdn.net/mummyding/article/details/43965923

C# 89.73% C 0.18% C++ 10.09%

tank-battle-data-structure-design's Introduction

坦克大战最短路Version 1.0

其实我觉得叫 坦克大战最小消耗更加贴切

数据结构课程设计,年初做的 http://blog.csdn.net/mummyding/article/details/43965923 ###这是我的第一个版本

不过下面这个文档是Version 2.0 的~ 第一版没有写文档,将就着看吧。【and 这只是一部分 =_=||】


#技术文档

##项目概述 ###1.1项目背景

坦克大战》(Battle City)是1985年日本南梦宫Namco 游戏公司开发并且在任天堂FC平上,推出的一款多方位平面射击游戏。游戏以坦克战斗及保卫基地为主题,属于策略型联机类。本项目(《坦克大战最短路》)就是以《坦克大战》作为背景并结合广度优先算法实现的一款“最短路”游戏。

1)该游戏包含的游戏对象
坦克、砖块、钢墙、河水、子弹和星星。
2)该游戏目标
坦克要在尽可能小的消耗到达星星的位置。在此约定,坦克每前进一步或是改变一次方向都消耗一个能量值。坦克不能穿过砖块、钢墙、河水等障碍物,但是可以发射子弹(保证坦克拥有足量的子弹)对砖块、钢墙进行摧毁。其中摧毁砖块需要消耗一个能量值,摧毁钢墙需要消耗两个能量值。
1.2功能需求
1.2.1 核心功能
(1)开始新游戏
(2)绘制地图: 手动绘制和自动绘制
(3)模式选择:自动模式和手动模式
1.2.2 其他功能
(1).自带截图
(2).实时显示当前能量消耗
1.3非功能需求
1.3.1界面
(1).图形界面,具有良好的菜单层次结构,简单清晰
(2).实时显示当前系统时间
(3).实时显示当前鼠标坐标和当前坦克坐标
1.3.2操作
操作方式友好,支持鼠标和键盘操作,并且具有较好的容错能力,用户在使用过程中,除了规定的按键外,其他按键均忽略,不予处理。

1.3.3运行环境(软件)

操作系统: Windows XP 及以上版本 框架: .NET Framework V4.0 及以上版本

##二、系统设计 ###2.1 总体设计 2.2详细设计
2.2.1算法设计
优先队列+广度优先搜索
1).优先队列(priority queue)
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (largest-in,first-out)的行为征。
2).广度优先搜索(Breadth First Search)
广度优先搜索 ,常常与深度优先搜索并列提及。这是一种相当常用的图算法,其特点是:每次搜索指定点,并将其所有未访问过的近邻加入搜索队列(而深度优先搜索则是栈),循环搜索过程直到队列为空。
《坦克大战最短路》实际上就是求两点之间的的路径,可以采用搜索算法(BFS和DFS) 。但由于要求的是最短路径,所以采用BFS效率会高出许多。另外,这个图每向前拓展一个节点,其权值很可能是不一样的,因此我还要保证每次用队列中取出的节点权值要最小,所以还需要用到优先队列算法。二者相结合也就实现了该游戏的核心功能。

2.2.2 编程环境
(1).操作系统: Windows 8.1 专业版(64位)
(2).编程工具: Microsoft Visual Studio Professional 2013
(3).编程语言: C#、C++

2.2.3具体实现
游戏界面采用C#实现,内部核心算法采用C++实现。(用C++编写的程序生成DLL 动态链接库,直接导入到C# 当中)
2.2.3.1.界面

1)、地图
大小 12*12 每个方格 边长60个像素
左上角为原点(0,0)
2)、对象
坦克(Tank)
砖块(Brick) 1次打破
钢墙(Steel) 2次打破
河水(River) 子弹可以穿过,坦克不可以
星星(Star)
子弹(Bullet) 可以对障碍物进行摧毁
3)、菜单
添加对象
手动模式
自动模式
自动生成地图
手动绘制地图
截取屏幕

4)、显示
当前能量消耗
当前鼠标坐标
当前坦克坐标
当前系统时间
游戏规则说明
三、总体结构
3.1 类图

3.2类设计
1).游戏父类 GameObject
属性:
x 游戏对象横坐标 y 游戏对象纵坐标 width游戏对象图片宽度
height width游戏对象图片高度 image游戏对象图片
方法:
构造函数(初始化)
Draw(); 游戏对象绘制方法
GetRectangle(); 获取游戏对象
2).墙壁父类 WallFather:GameObject
属性:
+life 生命值
方法:
构造函数(初始化)
重写Draw(); 绘制游戏对象
IsOver(); 判断是否到被子弹摧毁
3).River&Star父类 RSFather:GameObject
方法:
构造函数(初始化)
重写Draw(); 绘制游戏对象
4).Bullet :GameObject
属性:
+power 火力值
方法:
构造函数(初始化)
重写Draw();
5).Tank: GameObject 游戏对象
方法:
重写Draw(g); 绘制游戏对象
Move(); 移动
Fire(); 开火
6).SingleObject 单例对象
方法:
GetSingle(); 获取单例对象
Draw(); 绘制对象
Check(); 边界检查

                                                     2015年4月19日星期日 

tank-battle-data-structure-design's People

Contributors

mummyding avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.