文档库 最新最全的文档下载
当前位置:文档库 › 坦克大战实验报告

坦克大战实验报告

坦克大战实验报告
坦克大战实验报告

《面向对象的编程技术》》的课程设计《面向对象的编程技术

实验报告

坦克大战

——坦克大战

——

班级:网络工程11班

学号:

姓名:朱

指导老师:

2012-2013学年C++课程设计之坦克大战游戏设计更改、创新,实验完成报告及感想。

计算机学院网络工程专业课程设计

安徽工业大学

课题的设计

一、课题的设计

一、

1、应用程序的名称:

以《坦克大战》游戏为模板而更改的简单的休闲游戏:以windows 和linux图片的《linux大战windows》。

2、应用程序的主题:

在现代信息社会里,人们越来越重视时间的有效利用,而在繁忙的生活中,面临着来自不同方向上的压力在日益增加,二设计这款小游戏的目的就是让那些“忙人”能够让自己放松一下心情,却又不会出现像网络那样让人们沉迷。同时,以《linux大战windows》为题材,也是说明在许多方面linux系统比windows好很多!

3、课程设计的目的:

掌握一种编程工具和面向对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学生充分利用计算机的功能和特点分析实际问题及解决实际问题的能力。

为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程实践能力,并培养和锻炼我们学生的自学创新能力。

为了能更好地了解C++语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。一方面,在课程设计过程中,可以明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数的用法,从而不在对编程序感到茫然,经过设计,可以让我们熟悉简单程序的设计方法和编写,对程序设计及该门课程设计语言的应用得到理解。

4、课程设计的意义:

掌握一种编程工具和面向对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学生充分利用计算机的功能和特点分析实际问题及解决实际问题的能力。

为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程实践能力,并培养和锻炼我们学生的自学创新能力。

为了能更好地了解C++语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。一方面,在课程设计过程中,可以明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数的用法,从而不在对编程序感到茫然,经过设计,可

以让我们熟悉简单程序的设计方法和编写,对程序设计及该门课程设计语言的应用得到理解。

课程设计总体规划

二、

二、课程设计总体规划

》的功能:

windows》的功能:

1、《linux大战windows

①、代码与游戏引擎的结合,充分体现面向对象的设计思想;

②、以人性化为理念,放松人们的心情;

③、可以更改内部的图片,以为这大家可以释放心里压力;

④、因为玩家为linux图标,所以表达了linux系统要比windows强的多!

2、结构模块分析

(1)、、《坦克大战》结构类图:

(1)

(2)、TObject TObject类:类:\\\\所有物体的根类

所有物体的根类

TObject类的具体内容:enum CLASS_TYPE{

CLASS_TBONUS,

CLASS_TPLAYERTANK,

CLASS_TOBSTACLE,

CLASS_TBULLET,

CLASS_TENEMYTANK,

CLASS_TEXPLODE

};

class TObject

{

protected:

int m_nX,m_nY;//对象的坐标

CLASS_TYPE m_nClassType;//对象类型

DWORD m_dwLastTickCount;//最近的时间滴

DWORD m_dwDelayTimer;//延时时间

BOOL m_bIsDead;//死亡标志

public:

TObject(int x,int y,CLASS_TYPE nClassType);

virtual~TObject();

//以下三个纯虚函数必须在所有的派生类中实现

virtual void Move()=0;//移动对象

virtual void Draw()=0;//画对象

virtual void GetRect(RECT&rect)=0;//取得对象的边框//对象pObj对该对象的碰撞是否有效

virtual BOOL HitBy(TObject*pObj){return FALSE;};

//死了

void Dead(){m_bIsDead=TRUE;}

//是不是死了?

BOOL IsDead(){return(m_bIsDead);}

//设置对象坐标

void SetXY(int x,int y){m_nX=x,m_nY=y;}

//返回对象坐标

INT GetX(){return m_nX;}

INT GetY(){return m_nY;}

//是否撞到其它对象了?

BOOL HitTest(TObject*object);

//是不是该我动了?

BOOL IsMyTime();

//设置延时时间

void SetDelayTimer(DWORD dwDelayTimer){m_dwDelayTimer=dwDelayTimer;}

//返回延时间

DWORD GetDelayTimer(){return m_dwDelayTimer;}

//返回对象类型

CLASS_TYPE ClassType(){return m_nClassType;}

};

TObject子类、活物体、方向、防护值等(3)、TSprite类:精灵、

类:精灵、TObject

//定义四个方向

enum DIRECTION

{

DIR_RIGHT=0,

DIR_DOWN=1,

DIR_LEFT=2,

DIR_UP=3

};

//方向坐标数组

extern int g_nDirXY[4][2];

//TSprite对象

//该对象没有实现纯虚函数,所以不能创建该对象的实例

class TSprite:public TObject{

public:

DIRECTION m_dir;//方向

int m_nShield;//精灵的防护值

int m_nStatus;//精灵状态

int m_nCurrentFrame;//当前显示帧

public:

TSprite(int x,int y,int nShield,int nStatus,CLASS_TYPE nClassType);

virtual~TSprite();

void ChangeDirection(DIRECTION dir);

};

:玩家坦克类型、防护值、钱数、经验值等TplayerTank:玩家坦克类型、防护值、钱数、经验值等(4)、TplayerTank Array Enum PLAYER_TANK{....}//定义玩家坦克的类型

class TPlayerTank:public TSprite

{

public:

int m_nType;//玩家坦克类型

int m_nExper;//玩家的经验值

int m_nMoney;//玩家的钱数

int m_nMaxShield;//玩家最大的防护值

static EPG m_epg[3];//玩家图像资源

public:

TPlayerTank(int x,int y,int nType);

virtual void Move();

virtual void Draw();

virtual void GetRect(RECT&rc);

virtual BOOL HitBy(TObject*pObj);

//加载图像资源

static BOOL LoadPicture(LPCSTR epgfile,PLAYER_TANK nType,EDataFile*pDat);

//释放图像资源

static void Destroy();

};

inline BOOL TPlayerTank::LoadPicture(LPCSTR epgfile,PLAYER_TANK nType,EDataFile*pDat)

{

return m_epg[nType].Load(epgfile,pDat);

}

inline void TPlayerTank::Destroy()

{

m_epg[0].Destroy();

m_epg[1].Destroy();

m_epg[2].Destroy();

}

Move()

{对玩家坦克的数据进行处理......}

TPlayerTank::HitBy(TObject*pObj)

BOOL

BOOLTPlayerTank::HitBy(TObject

{

//对玩家坦克对障碍的处理,以及以面向对象的思想,考虑实际情况进行人性化的处理,使其更接近现实...

}

,敌军坦克类:增加坦克的,继承父类的属性值,(5)

TEnemyTank,敌军坦克类:增加坦克的,继承父类的属性值,(5)、、TEnemyTank

实现各虚函数。

代码部分基本上与玩家坦克一样,只是在一些细小的方面有一点不同,充分体现面向对象的思想。

(6)、TBullet TBullet,子弹类:包含了消失,子弹的类型,伤害值,子弹类:包含了消失,子弹的类型,伤害值,子弹类:包含了消失,子弹的类型,伤害值,,速度,射程,音效资源,爆炸效果等。

(8)、TExplode TExplode,爆炸类:声音,图像的加载

,爆炸类:声音,图像的加载(9)(9)、、TObstacle TObstacle:障碍类:箱:障碍类:箱:障碍类:箱子、邪恶源、石头高地、地图边界等

子、邪恶源、石头高地、地图边界等

指针,,这是利用

链表节点,,存在父类对象TObject指针(10)、、TLinkNode链表节点

(10)

多态管理形形色色物体的关键

,链表类:见上图圆矩形框内

TLink,链表类:见上图圆矩形框内

(11)、、TLink

(11)

(1212))、TWorld,世界地图类:包含游戏世界内全部的成员

韩顺平java坦克大战1.0版本_源代码

/**画坦克1.0 */ import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JPanel; public class MyTankGame extends JFrame { MyPanel mp=null; public static void main(String[] args) { MyTankGame mtk=new MyTankGame(); } public MyTankGame() { mp=new MyPanel(); this.add(mp);//把面板加入窗体 //注册监听 this.addMouseListener(mp); this.addKeyListener(mp); this.addMouseMotionListener(mp); this.addWindowListener(mp); this.setTitle("坦克大战");//窗体标题 this.setSize(600,400);//大小,宽,高(像素) this.setLocation(300,300);//显示位置。左边距,上边距 //禁止用户改变窗口大小 this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);//显示 } } //我的面板 class MyPanel extends JPanel implements

坦克大战 实验报告

本科实验报告 课程名称:Java语言程序设计 实验项目:TankWar 实验地点:致远楼B403 专业班级:软件工程1219 学号:2012005496 学生姓名:柴丁方 指导教师:任少斌 2014年 1 月7 日

import java.awt.*; import java.awt.event.*; public class TankWarClient extends Frame { //构造游戏开始的界面 public void KaiShiJieMian() { this.setLocation(400,200); //游戏窗口的左上点在屏幕的位置 this.setSize(800, 600);//游戏窗口的尺寸 //使按窗口的“X”时,可以关闭程序

较上一次实验添加的代码段为: public void paint (Graphics g) { Color c = g.getColor();//color类是 java。awt 中的,因此可以直接 color c g.setColor(Color.green);// 类 java.awt.Graphics 中的方法,将此图形上下文的当前颜色设置为指定颜色。 g.fillOval(50, 50, 30, 30);//int x, int y,int width,int height,分别为坐标与椭圆的长宽 g.setColor(c); }

变更2: 较上一次实验添加的代码段为: 1.更改如下代码段中的“常量值”为“x”“y”,使所填充的椭圆位置可以随值改变,为静态的图形动起来打下了基础。 static int x=50,y=50;

项目坦克大战设计报告

《JA V A程序开发课程设计》项目设计 项目名称:TankWar 软件 专业:软件工程班级:13软工1班姓名:毛晨光学号:24 一、需求分析: 基本功能: 1.玩家控制的坦克能够四处移动并且打击敌方坦克; 2.敌方坦克能够随机四处移动并且打击玩家控制的坦克; 3.玩家控制的坦克拥有血量,而敌方坦克没有; 4.坦克受到攻击时血条会缩短; 5.敌方坦克被消灭完之后,提示游戏胜利; 6.用户方坦克被消灭后提示游戏结束; 特色功能: 1.坦克具有图片,不单单只是个圈圈。 2.增加了血包功能,地图上会随机出现一个血包,我方坦克开过会增加 血量。 二、系统设计: 类:实现游戏界面地图的初始化。 类:绘制和重绘功能。 :监听用户的键盘输入。 类:实现坦克的初始化,绘制,移动,发射等功能。 :实现敌方坦克的初始化,绘制,移动,发射等功能。 类:实现炮弹的初始化,绘制,移动,攻击功能。 类:实现爆炸的初始化。绘制功能,爆炸效果由绘制半径从小到大再到小的圆实现。 类:包含枚举。 类:用于实现血包的功能。 三、功能实现。 一.绘制地图功能: public class TankMap extends Frame{ tart(); }

制坦克功能:public class Tank { 方坦克的绘制方法 public class EnemyTank extends Tank{ 弹绘制方法public class Shell { ntersects())){

ntersects())){ "hittanks"); (false); =false; Explor ex=new Explor(x-3,y-3,; return true; } } return true; } }

Java语言坦克大战游戏设计(附有代码和图片)

JISHOU UNIVERSITY 本科生毕业设计 题目:基于java语言坦克大战游戏开发作者: 学号: 所属学院:信息科学与工程学院 专业年级: 指导教师:职称: 完成时间: 吉首大学教务处制

目录 基于java语言坦克大战游戏开发 (1) 摘要 (1) Based on the development of Java language Tank Wars Game (2) 第一章游戏简要说明 (3) 第二章开发环境介绍 (4) 2.1 开发环境 (4) 2.2 java语言特点简介 (4) 2.3 Eclipse开发工具的简介 (5) 第三章系统总体设计 (6) 3.1程序功能的总和 (6) 3.2主体模块 (6) 3.3子弹模块 (6) 3.4坦克模块 (7) 3.5 墙模块 (7) 3.6血液模块 (7) 3.7爆炸模块 (8) 第四章游戏详细设计过程 (9) 4.1创建游戏窗口 (9) 4.2改变游戏背景颜色。 (11) 4.3创建坦克 (11) 4.4 让坦克动起来 (12) 4.5改变窗口的大小 (13) 4.6让坦克受控制 (14) 4.7创建一个Tank类 (15) 4.8让坦克向8个方向移动 (16)

4.9修改4.8中所设计的不足 (18) 4.10添加子弹类 (19) 4.11根据己方坦克的位置,打出子弹 (21) 4.12修改坦克停下来不能打出子弹的问题 (21) 4.13让坦克能够打出多发子弹 (23) 4.14解决炮弹不消亡和坦克出界的问题 (23) 4.15增加敌方坦克 (24) 4.16击毙出现的敌方坦克 (25) 4.17加入爆炸效果 (26) 4.18添加多辆敌方坦克 (27) 4.19让敌方坦克智能化 (29) 4.20建立游戏障碍物 (31) 4.21阻止坦克互相穿越 (32) 4.22为我方坦克添加大招和血条 (33) 4.23添加血块 (34) 4.24重新载入敌军或我军坦克 (35) 4.25加入图片 (35) 第五章游戏的可行性测试 (37) 5.1游戏界面介绍 (37) 5.2游戏运行测试 (40) 第六章总结 (43) 参考文献 (44)

funcode C++课程设计坦克大战

课程设计一坦克大战 一、游戏介绍 相信大部分同学都玩过或看过“坦克大战”这款经典游戏。现在,就由我们自己动手来开发它。只要大家具备了C++语言和面向对象的基础知识,然后按照实验指南的指导一步一步进行下去,相信我们每个同学都能把这款经典游戏做出来。 二、实验目标 综合运用C++及其面向对象的知识开发一款小游戏。 三、实验内容 在一个战场上,玩家控制坦克,消灭敌方坦克,并防止敌方坦克摧毁我方基地。游戏的具体要求如下: 1、游戏有一个初始页面,如下图。 2、按下任意键开始游戏,玩家控制坦克在战场上穿梭,碰到墙时,不能通过。 3、敌方坦克自由移动,每隔2秒改变一个方向,每隔3秒发射一发子弹。 4、敌方坦克每隔5秒出现一辆,从屏幕上方的左、中、右三个位置依次出现。 5、当玩家被消灭或者我方基地被摧毁或者游戏时间大于30秒的时候,游戏结束。 游戏开始前 进入游戏

四、游戏的整体框架 五、实验指南 实验准备 打开FunCode,创建一个新的C++项目。注意:项目名称必须为英文和数字,且不能有空格。 点击“项目”→“导入地图模板”,从对话框中选取名称为TankWar的模板导入。导入成功后,界面如下: 实验一游戏开始 【实验内容】 1、设置游戏标题 2、按空格键,提示图片消失,游戏进入开始状态. 【实验运行结果】 游戏开始前 按下空格键后 【实验思路】

按下空格键是键盘按下事件,可在CSystem::OnKeyDown函数中编写响应代码。为了保证程序结构的清晰、一致,更好的办法是在CGameMain类中添加一个相应的键盘按下事件处理函数,然后在CSystem::OnMouseClick函数中进行调用。 g_GameMain是CGameMain类的对象,它是全局变量,在程序运行时最先被创建。【实验指导】 1、C++程序的执行入口是主函数。FunCode的主函数名称叫WinMain,写在Main.cpp 文件中。CSystem::SetWindowTitle是设置程序运行窗口标题的函数,修改如下:CSystem::SetWindowTitle("坦克大战"); 2、参考CSystem::OnKeyDown函数,为CGameMain类创建一个OnKeyDown函数。 CGameMain类的头文件是LessonX.h文件,实现代码写在LessonX.cpp文件中。因此,先在LessonX.h文件对函数进行声明。函数的返回值和参数列表都与 CSystem::OnKeyDown函数保持一致。访问权限应该是public。代码如下: voidOnKeyDown(constintiKey,constboolbAltPress,constboolbShiftPress,cons tboolbCtrlPress); 3、接着,在Lesson.cpp文件中对该函数进行定义: voidCGameMain::OnKeyDown(constintiKey,constboolbAltPress,constboolbShif tPress,constboolbCtrlPress) { }

java开发坦克大战

j a v a开发坦克大战 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

坦克大战游戏演示为什么选择这个项目 1、好玩 2、涉及到java各个方面的技术 1、java面向对象编程; 2、界面编程; 3、绘图技术; 4、多线程; 5、文件i/o操作; 6、数据库 3、巩固旧知识,学习新知识 java绘图坐标体系 绘图坐标本系--介绍 坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在java的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。 坐标体系--像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。 绘图原理(1)[] Component类提供了两个和绘图相关最重要的方法: 1、paint(Graphicsg)绘制组件的外观 2、repaint()刷新组件的外观

当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件 .*; .*; publicclassWindow013extendsJFrame{ ; 7、画字符串drawString(Stringstr,intx,inty); 8、设置画笔的字体setFont(Fontfont); 9、设置画笔的颜色setColor(Colorc); ; .*; publicclassWindow014extendsJFrame{ ; .*; publicclassWindow015extendsJFrame{ ; .*; import publicclassWindow016extendsJFrameimplementsActionListener{ quals("黑色")){ 点击了黑色按钮"); ; }elseif().equals("红色")){ 点击了红色按钮"); ; }else{ 不知道"); } } } classCatimplementsActionListener{ publicvoidactionPerformed(ActionEventarg0){ if().equals("黑色")){ 也知道你按下了黑色按钮");

java坦克大战毕业设计论文

基于J2SE的网络版坦克大战游戏设计 摘要 [摘要]:J2SE (Java 2 Standard Edition)就是Java2的标准版,主要用于桌面应用软件的编程,是伴随着计算机技术的飞速发展而诞生的一项新的开发技术。随着个人电脑的日益普及、Java 功能在个人电脑上的实现,Java应用程序产生的单机增值服务逐渐体现出其影响力,对丰富人们的生活内容、愉悦身心、开发智力等起着不可忽视的作用。该论文通过总结和分析JA V A 游戏的开发流程和代码框架的设计,开发了一款基于J2SE架构的游戏——坦克大战。本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,启动服务器和客户端,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克绘制在地图的上层。本设计主要实现的功能是让坦克能向八个方向移动,并且打出炮弹,子弹击中敌人坦克,子弹和敌人坦克同时消失,产生爆炸,CPU坦克能智能的移动并且打出炮弹。能够支持网络对战和单机对战两种模式。 Java良好的跨平台特性在软件的开发中显示出了巨大的威力,“一次编写,随处运行”,java 系统可以运行在不同的操作系统和硬件上。随着linux的持续增长以及MacOSX完全支持java 技术,跨平台的特性变得越来越有分量。 由于免费、跨平台、java语言本身技术先进,在高校中,java已经成为许多学科研究、课程和计算的首选语言,用java做上机作业,一般都是鼓励的。据我所知,北大、清华许多院系的研究生入学考试都可以用java语言答题。实际上,用java来完成这些工作,大多数情况下要比用C或其他语言简洁得多,你可以把注意力集中在算法等核心部分,从而获得更高分数。 [关键词] 面向对象坦克大战游戏J2SE Socket

java开发坦克大战

坦克大战游戏演示 为什么选择这个项目 1、好玩 2、涉及到java各个方面的技术 1、java面向对象编程; 2、界面编程; 3、绘图技术; 4、多线程; 5、文件i/o操作; 6、数据库 3、巩固旧知识,学习新知识 java绘图坐标体系 绘图坐标本系--介绍 坐标原点位于左上角,以像素为单位。像素是计算机屏幕上最小的显示单位。在java 的坐标系中,第一个是X坐标,表示当前位置为水平方向,距离坐标原点X个像素;第二个是Y坐标,表示当前位置为垂直方向,距离坐标原点Y个像素。 坐标体系--像素 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。现在的计算机可以支持更高的分辨率,也就是说,屏幕上可以显示更多的像素。因此,像素是一个密度单位,而厘米是长度单位,两者无法比较。 绘图原理(1)[Window013.java] Component类提供了两个和绘图相关最重要的方法: 1、paint(Graphics g)绘制组件的外观 2、repaint()刷新组件的外观 当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件 import java.awt.*; import javax.swing.*; public class Window013 extends JFrame{ //定义组件 MyPanel mp=null; public static void main(String[] args) { Window013 th=new Window013();

《面向对象的编程技术》课程设计实验报告

《面向对象的编程技术》课程设计实验报告 系计算机科学与技术 班级计114 姓名石险峰 学号119074122 指导教师胡增涛 计算机学院 2012年12月

一.应用程序的名称 设计:“坦克大战” (1)参考(《PC游戏编程(窥门篇)》谭文洪著)中的“坦克大战”(TankWar工程),并对其进行完善、扩充,程序要能看出专业水平和商业化产品的效果。 (2)要求:修改案例中“子弹可以穿透石头墙”的错误;增加上帝模式(无敌);修改一种敌军坦克,使之威力更大(要求坦克画面采用学生自己的头像)(需要重新编译资源包;之所以“改”而不是“增”,是因为同学们无法修改地图编辑器,另一个办法是在程序运行后动态加入);回答“坦克大战”指导书.doc(或pdf)和TankWar剖析.doc(或pdf)中带有蓝色《….?》标记的问题。 二.应用程序的设计目的 面向对象的编程技术》课程设计是一门独立开设的实验课程,旨在进一步强化学生对类、封装、继承、多态等面向对象基本概念的理解和OOP(面向对象编程)实际动手能力,并进一步拓展到OOD(面向对象设计)原则、技巧和初步的OOA(面向对象分析)方法。 在中国,电子游戏曾一度被大家斥为“电子海洛因”。然而电子游戏在青年学生中大受欢迎却又是一个不争的事实。正如水能载舟,亦能覆舟一样,任何事物都有其两面性。与其千方百计地封堵,还不如让同学们从技术的角度来研究它,这样既可以掌握复杂系统的设计技巧,也可以破除对电子游戏的神秘感。我相信,一个人如果自己能制作游戏,如果能清楚地知道那个绚丽多彩的虚拟世界背后无非就是一些类、变量、函数的话,他就不可能再沉迷于打游戏———与一堆对象、内存变量和函数较劲。同时,从技术上讲,游戏程序的开发异常复杂,能充分体现面向对象的拟人化思想和面向对象设计技巧。通过游戏程序的制作,可以帮助学生真正掌握面向对象程序设计的精髓。 三.应用程序简介 设计目的:C++电脑游戏开发:侧重利用面向对象的拟人化思想解决复杂问题和OOD技巧; 运行环境: 1.本设计采用Microsoft Visual C++6.0编译,并能够在WIN98,WIN2000下运行 2.游戏基于Windows Game Engine(WGE游戏引擎,添翼虎科技)(没提供源程序,不过不用担心,你可以把它看成是利用DirectX快速处理图片、声音、键鼠的类库) ,该引擎需要DirectX7.0 SDK支持(仅有Runtime运行库不够,必须包含开发语言需要的Header&Libs 头文件和库文件) 功能介绍: ○1修改案例中“子弹可以穿透石头墙”而且增加了敌军坦克子弹不能穿过 箱子:无论是敌军坦克还是玩家坦克的子弹都不能穿过石头,敌军坦克子弹不能透过箱子,一旦它们相碰撞子弹会自动销毁。 ○2增加上帝模式(无敌):玩家1通过按F1键变为上帝模式,再按一次,还原,一旦玩家进入上帝模式,敌军坦克的子弹对玩家坦克没任何损伤。 ○3修改火坦克的性能,使之威力更大,并且将该敌军坦克改为其他图像,通过更改火坦克的一些属性,使火坦克的子弹射程、威力,坦克的移动速

坦克大战课程设计论文

坦克大战游戏设计 1.课程设计的目的 随着手机的日益普及,java功能在移动设备上的实现及java 应用程序产生的影响力,对丰富人们的生活内容,提供便捷的咨询起着不可忽视的作用。本项目介绍了坦克大战的基本构建方法、java的相关技术及本程序的结构分析和具体功能的实现。游戏是在Eclipse3.2环境下编程。本项目重点运用了图形化用户界面GUI,Thread多线程的有关知识,其中涉及了绘图工具的运用,事件处理操作以及图形的碰撞检测等知识点。通过此课程设计,使学生巩固所学知识、培养学生动手能力,了解Java的面向对象的体系结构。学生用Java语言设计一个完整的应用程序,综合应用所学知识完成软件的分析、设计、调试和总结,提高学生对Java语言的综合应用能力和解决问题的能力。 2.设计方案论证 2.1设计思路 本项目介绍了坦克大战的基本构建方法、java的相关技术及本程序的结构分析和具体功能的实现。游戏是在Eclipse3.2环境下编程。 一、游戏基本元素:坦克,炮管,子弹,墙壁,地雷 二、它的主要功能: (1)能够朝四个方向移动:上、下、左、右键。 (2) 按下鼠标左键发射普通子弹;按下鼠标右键发射散弹;子 弹爆炸的效果,普通子弹和炮弹的效果 (3)敌人能够移动

(4)能够模拟爆炸 (5)能够产生障碍 (6)能够增长生命 玩家控制主坦克(上方有血条的)的移动以及炮弹的发射。若玩家将敌方坦克全部打掉则玩家胜;若期间由玩家控制的主坦克被打掉则视为玩家失败。游戏中只有普通墙作为障碍物,玩家无法穿越它们并且普通子弹不能将墙打穿 ;但是玩家可以用炮弹将普通墙打掉。桃心可以将坦克的血加满。 2.2简要的设计流程: 键盘监听器 2.2设计方法 2.2.1构建游戏主类

毕业设计论文 基于J2ME的Java游戏--坦克大战的开发

目录 摘要 ................................................................................................................... - I - Abstract .................................................................................................................... - I - 引言 ...................................................................................................................... II 第一章绪论 .................................................................................................... - 1 - 1.1 手机软件现状.......................................................................................... - 1 - 1.2 游戏业务及J2ME概况............................................................................ - 1 - 1.3 任天堂(Nintendo)的8位FC机器和Battle City背景介绍............ - 3 - 1.4 本章小结.................................................................................................. - 3 - 第二章开发环境及相关技术的介绍 ................................................................ - 5 - 2.1 开发环境.................................................................................................. - 5 - 2.2 Java语言的特点..................................................................................... - 5 - 2.3 关于JBuilder9....................................................................................... - 5 - 2.4 关于Wireless Tool Kit....................................................................... - 6 - 2.5 Java Appication Manager.................................................................... - 6 - 2.6 本章小结.................................................................................................. - 6 - 第三章程序结构、思想和相关技术 ................................................................ - 7 - 3.1 本程序需解决的有关技术问题.............................................................. - 7 - 3.2 程序流程.................................................................................................. - 8 - 3.3 绘图与MIDP2.0新增的GameCanvas包.............................................. - 10 - 3.3.1 提供低级绘制的Canvas类....................................................... - 10 - 3.3.2 Graphics类................................................................................ - 10 - 3.3.3 PNG格式...................................................................................... - 10 - 3.3.4 Game包中的新功能.................................................................... - 11 - 3.3.5 有关绘图的一些技术................................................................. - 12 - 3.4 坦克的控制和敌方的智能运行............................................................ - 12 - 3.5 子弹的运行和控制................................................................................ - 13 - 3.6 RMS数据库系统..................................................................................... - 14 - 3.7 内存使用的最佳化................................................................................ - 15 - 3.8 混淆器(Obfuscator)的使用................................................................ - 16 - 3.9 模拟器的相关调试................................................................................ - 16 - 3.10 本章小结.............................................................................................. - 17 - 第四章程序分析和具体实现 .............................................................................. - 18 - 4.1 游戏进入前的选择................................................................................ - 18 - 4.2 主游戏逻辑及其涉及到的若干类........................................................ - 19 - 4.3 坦克的共同行为.................................................................................... - 21 - 4.4 玩家坦克的功能属性............................................................................ - 22 - 4.5 敌人坦克的功能属性............................................................................ - 22 - 4.6 子弹的运行和控制................................................................................ - 24 - 4.7 记分系统................................................................................................ - 25 -

程序设计实训坦克大战实验报告材料

程序设计实训报告 坦克大战 专业班级:装控1401 实习时间:2015年7月10日至7月14日实习地点:微401 成员 1:赵振华 成员 2:许晨欢 成员 3:蒋绪涛

一、作品概述 1.1 创新点: 1、自定义并命名树林和钢板精灵,设置树林属性为不接受碰撞可以自由穿梭,钢板为接受任何碰撞但不做任何处理(即子弹和坦克均不能摧毁钢板)。 2、添加坦克发炮、击中目标和坦克移动的特殊声效。 1.2 概述: 这款游戏是我们QWER小组以经典90版坦克大战为背景制作的坦克大战的改编款,玩家通过控制坦克摧毁敌方坦克来保卫主基地不被摧毁。当敌我双方坦克相碰或己方基地被子弹摧毁时游戏结束(敌我双方子弹均可摧毁基地),每隔3秒钟出现一辆敌方坦克,游戏最大时长为100秒。此款游戏与经典90版坦克大战较为相似,操作简单,能唤起我们对童年的回忆。 二、功能设计 玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中或与敌方坦克相撞、玩家指挥部被击中或游戏时间到,一局游戏结束。 按下空格键后游戏开始,“空格开始”消失,载入地图,100秒倒计时开始,并把玩家坦克设置在指挥部左侧。 游戏时间到,玩家坦克被敌方坦克摧毁,与敌方坦克相撞,或者玩家指挥部被摧毁,一局游戏结束,游戏回到初始界面,并显示上一局的分数。 玩家用W、A、S、D键控制坦克上、下、左、右运行,按J键开炮。坦克行进过程中有特殊声效,坦克发射或击中目标都有相应的声效。玩家坦克碰到墙和钢板就停下来,需要调转方向才能继续前进。玩家坦克开炮,一炮就能摧毁一块墙或者一辆敌方坦克,但不能摧毁钢板,玩家可穿梭于树林中。玩家每摧毁一辆敌方坦克,加1分。 玩家指挥部被坦克或者炮弹(不管玩家还是敌方)碰上,都会被摧毁。 每隔3秒钟,就会产生一辆敌方坦克。敌方坦克每隔一段时间,就自动开炮。敌方坦克遇到墙就会停下来。停下来的坦克,前方的墙如果被摧毁了,又能继续前进。每隔几秒钟,敌方坦克就会顺时针变换一个方向前进。每局最大时长为100秒。

项目-坦克大战-设计报告

《JAVA程序开发课程设计》项目设计 项目名称:TankWar 软件 专业:软件工程班级:13软工1班姓名:毛晨光学号:1322120124 一、需求分析: 基本功能: 1.玩家控制的坦克能够四处移动并且打击敌方坦克; 2.敌方坦克能够随机四处移动并且打击玩家控制的坦克; 3.玩家控制的坦克拥有血量,而敌方坦克没有; 4.坦克受到攻击时血条会缩短; 5.敌方坦克被消灭完之后,提示游戏胜利; 6.用户方坦克被消灭后提示游戏结束; 特色功能: 1.坦克具有图片,不单单只是个圈圈。 2.增加了血包功能,地图上会随机出现一个血包,我方坦克开过会增加 血量。 二、系统设计: 1.TankMap类:实现游戏界面地图的初始化。 2.PainTread类:绘制和重绘功能。 3.DirectionHandler:监听用户的键盘输入。

4.Tank类:实现坦克的初始化,绘制,移动,发射等功能。 5.EnemyTank:实现敌方坦克的初始化,绘制,移动,发射等功能。 6.Shell类:实现炮弹的初始化,绘制,移动,攻击功能。 7.Explor类:实现爆炸的初始化。绘制功能,爆炸效果由绘制半径从小到 大再到小的圆实现。 8.Direction类:包含枚举。 9.Blood类:用于实现血包的功能。 三、功能实现。 一.绘制地图功能: public class TankMap extends Frame{ //定义地图的尺寸。 public static final int MAPWIDTH=800; public static final int MAPHEIGHT=600; //我方坦克 Tank t=null; //定义随机出现的血包 Random r=new Random(); Image bufferImage=null; public static java.util.Listshells=new ArrayList(); //地方坦克集合 public static java.util.List-> enemys=new ArrayList();

基于Java的网络版坦克大战游戏设计_毕业设计

伊犁师范学院 本科生毕业论文(设计) 论文题目:基于Java的网络版坦克大战游戏设计

基于Java的网络版坦克大战游戏设计 (伊犁师范学院计算机科学系06-2班,新疆伊宁市 835000) 摘要:本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,启动服务器和客户端,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克绘制在地图的上层。本设计主要实现的功能是让坦克移动并能够智能的打出炮弹,躲避子弹,炸毁对方坦克。能够支持网络对战和单机对战两种模式。 关键词:面向对象;坦克大战;网络游戏;Java;Socket 类 中图分类号:TP311.1 目录

摘要 ......................................................................... 第1章前言.. (1) 1.1游戏设计的需求分析 (1) 1.1.1国内外电子网络游戏的现状 (1) 1.1.2本系统的现实意义 (1) 1.1.3本系统和其他开发游戏区别 (2) 1.2开发技术概述 (2) 1.2.1J AVA、C语言、C++三种主流编程技术比较 (2) 1.3本章小结 (2) 第2章相关技术理论 (3) 2.1系统运行环境 (3) 2.1.1系统运行的软件环境 (3) 2.1.2系统运行的硬件环境 (3) 2.2相关理论 (3) 2.2.1关于E CLIPSE的介绍 (3) 2.2.2J2SE框架 (3) 2.2.3联机通信机制 (4) 2.2.4J AVA图形编程 (5) 2.3本章小结 (5) 第3章系统设计 (5) 3.1系统可行性分析 (6) 3.1.1技术可行性 (6) 3.1.2经济可行性 (6) 3.1.3操作可行性 (6) 3.2系统需求分析 (6) 3.2.1在人机对战模式下实现的功能 (6) 3.2.2在网络对战模式下实现的功能 (6) 3.3系统功能设计 (6) 3.3.1坦克大战总体功能设计 (7)

坦克大战java源代码

有些图片路径会出错要注意package com.tankgame; import java.util.Vector; //坦克类 class Tank { int x=0; int y=0; int color=0; int speed=1; int direct=0; boolean isLive=true; public Tank(int x,int y) { this.x=x; this.y=y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public int getDirect() { return direct; } public void setDirect(int direct) { this.direct = direct;

} public int getColor() { return color; } public void setColor(int color) { this.color = color; } } //我的坦克 class Hero extends Tank { Shot shot=null; Vector shotm=new V ector(); public Hero(int x,int y) { super(x,y); this.color=5; } //坦克具有一个打击敌人的方法 public void shotenemy(int x,int y,int direct) { switch(direct) { case 0: shot=new Shot(this.x+10,this.y,0); shotm.add(shot); break; case 1: shot=new Shot(this.x+30,this.y+10,1); shotm.add(shot); break; case 2: shot=new Shot(this.x+10,this.y+30,2); shotm.add(shot); break; case 3: shot=new Shot(this.x,this.y+10,3); shotm.add(shot);

坦克大战系统《Java程序开发实训》综合实训报告

《Java程序开发实训》综合实训报告 题目:坦克大战系统 姓名:方庆 学号:2010203206 班级:10软件(2)班

一、系统实现的主要功能及运行结果截图 选择的语言的原因 游戏本身是一种娱乐方式,带给人无尽的乐趣,而且游戏行业的发展也将是带动周边行业的发展。同样对做出游戏的人的要求也会越来越高一满足游戏爱好者的要求。本次期末设计就是设计一种娱乐性较强的小游戏坦克大战,说到大战其实是不敢当的。但游戏基本拥有可玩性。java语言是一种跨平台,适合与分布计算环境的面向对象编程语言,java主要用在web开发,手机游戏及一些平台游戏的开发,他有很好的跨平台性。所以本次的设计坦克游戏选择的是java。 系统软件的软件环境 1.网络服务器操作系统:Window是 XP以上 2.开发工具:Eclipse 3运行环境:J2sdk 4.编程语言:java语言。 人机对战模式功能 1.能够发射子弹打击敌人 2.敌人能够移动 3.能够模拟爆炸 4.能够产生障碍 5能够增长生命6.能够使用超级子弹 坦克可以发射子弹

玩家坦克被击中血量减少。 被击中的坦克发生爆炸并且吃血块可以加血量。

玩家坦克可以从把方向发射超级子弹 自己的TankHealth为<=0时,。说明玩家坦克已死亡。游戏结束

本系统的坦克大战是基于java语言设计的开发,具有较高的人工智能和相对的图形处理。游戏可一人作战每次电脑方有10辆坦克, 此一举消灭全部的敌方坦克为目的。在这过程中坦克有机会得到血块来添加自己的生命值。从而变得强大。也利用wall来形成阻击敌人。 游戏拥有开挂的功能。可以穿过墙体来攻击敌方坦克。还给玩家坦克 置了超级炮弹。从八个方向同时射出炮弹来摧毁敌方坦克。主要功能 简单罗列如下: 1.屏幕左上方显示游戏的状态,当玩家方坦克全数为0是游戏结束 2.敌方坦克只在空地上行走,不可通过Wall 3.游戏打坏敌方坦克后,可随机位置随机出现血块奖励。坦克经过该 位置可获得相应的生命值加成。 4.玩家坦克的游戏资格和电脑坦克不同。 TankClient类设计流程 游戏系统类关联图

相关文档
相关文档 最新文档