JAVA关于坦克大战的课程设计报告

合集下载

坦克大战 实验报告

坦克大战 实验报告

本科实验报告课程名称: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 cg.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;实验四:从版本0.4到版本0.41变更1:变更2:较上一次实验添加的代码段为:1.public class TankWarClient extends Frame {Image offScreenImage = null;}//先把内存的offScreenImage清空较上一次实验添加的代码段为:1.TankWarClient类中:2.3.较上一次实验修改的代码段为:public class Tank {public static final int XSPEED = 5;public static final int YSPEED = 5;private int x, y;private boolean bL=false, bU=false, bR=false, bD = false;enum Direction {L, LU, U, RU, R, RD, D, LD, STOP};private Direction dir = Direction.STOP;//此处为构造函数。

坦克大战报告

坦克大战报告

JAVA程序开发课程设计课程大作业专业:软件工程班级:14软工2学号: ***********名:***项目名称:坦克大战一、需求分析:1.基本功能:(1)我方坦克能上下移动(2)敌方坦克能自由移动(3)我方坦克能开火(4)敌方坦克能自由开火(5)子弹打中我方,会减血,我方打中敌方,敌死。

敌打敌不会受伤(6)有血条,主界面2.扩展功能(1)用图形来表示坦克和炮弹(2)用图形来表示中子弹后的爆炸效果(3)地图上存在金属墙,我方坦克和子弹不能穿过(4)地图上存在曹村,我方和敌方坦克能够自由穿过,子弹也一样(5)地图上会随机出现加血包(6)我方坦克遇到加血包,会增加生命(7)游戏开始时,会启动背景音乐(8)我方坦克死亡时,提示游戏结束二、系统设计:1. BgMusic(1)主要功能:添加背景音乐TankMap类通过调用该类,并读取BgMusic包下面的背景音乐文件(2)成员属性:1)filename,用于记录读取到的文件名,并处理2)nBytesRead,这是缓存,用于读取音乐文件,缓存下来(3)成员方法:1)run,播放背景音乐2)构造方法BgMusic,将读取到的文件名,存储到成员属性filename中2. Blood(1)主要功能:地图中添加血包(2)成员属性:1)x,y,width,height,血包的位置以及宽高2)rpos_x,rpos_y,用于记录血包移动后的位置3)tm,调用TankMap类,并在地图中放血包4)live,血包的存活,被坦克吃了就消失5) blood,用于记录血包的存活6)step,血包的步长7)stepMove,血包走过总的步长(3)成员方法:1)Blood,构造方法,将血包放到地图中2)draw,画血包3)move,血包的移动4)getRect,获取血包的位置3. Tank(1)主要功能:地图中添加我方坦克(2)成员属性:1)WIDTH,HEIGHT,xspeed,yspeed,坦克的宽高和x,y上的移动速度2)x,y,direction,我方坦克出现的初始位置和初始状态3)tm,调用TankMap类,并在地图中放坦克4)isLive,我方坦克是否存活5) isgood,坦克属于哪一方6)life,我方坦克的初始生命值7)step,使用Blood类,血包随机出现8)upimage,rightimage,downimage,leftimage,oldimage,存放坦克图片(3)成员方法:1)draw,绘制坦克2)move,根据移动方向,移动坦克,不允许坦克移除地图3)checkDirection,确定用户单击的方向键,修正坦克即将移动方向4)fire,发射子弹5)getRec,返回坦克当前位置,便于判断是否与敌方坦克或子弹重叠6)stay,坦克撞墙的处理7)eat,我方坦克吃血包4.EnemyTank(1)主要功能:地图中添加敌方坦克(2)成员属性:1)WIDTH,HEIGHT,xspeed,yspeed,坦克的宽高和x,y上的移动速度2)x,y,direction,我方坦克出现的初始位置和初始状态3)tm,调用TankMap类,并在地图中放坦克4)islive,我方坦克是否存活5)enemytank,存放坦克图片(3)成员方法:1)draw,绘制坦克2)move,根据移动方向,移动坦克,不允许坦克移除地图3)fire,发射子弹4.Explor(1)主要功能:子弹打中坦克,发生爆炸效果(2)成员属性:1)x,y,坦克出现的位置2)tm,调用TankMap类,并在地图中放爆炸3)islive,我方坦克是否存活(3)成员方法:1)draw,绘制爆炸2)Explor,爆炸的构造方法5.Help(1)主要功能:给用户游戏帮助(2)成员属性:1)help,将帮助的文字存放在字符串中(3)成员方法:1)getHelpDialog,调用帮助6.Shell(1)主要功能:设计子弹(2)成员属性:1)WIDTH,HEIGHT,xspeed,yspeed,子弹的宽高和x,y上的移动速度2)x,y,direction,子弹出现的位置和方向3)tm,调用TankMap类,并在地图中放子弹4)isLive,子弹是否打中坦克5)isgood,是否是我方6)Image,加载子弹图片(3)成员方法:1)draw,绘制子弹2)move,根据移动方向,移动坦克,得到子弹的移动3)getRec,获取坦克的位置4)hitTanks,子弹打坦克5)hitWalls,子弹打墙7.Wall(1)主要功能:给地图添加墙(2)成员属性:1)x,y,w,h,墙的位置和宽度高度2)tc,地图(3)成员方法:1)draw,画墙2)getRect,获取墙的位置8.TankMap(1)主要功能:地图(2)成员属性:1)MAPWIDTH,MAPHEIGHT,地图的宽高2)t,我方坦克3)bufferImage,缓冲,用于解决闪屏4)forestimage,草丛5)shells,EnemyTank,Blood,Explors泛型6)enemyCount,敌方坦克数量7)w1,w2,不可穿过的墙(3)成员方法:1)init,初始化地图2)paint,画血包,地图,坦克等3)addBloods,加血4)update,解决闪屏三、功能实现:1.功能1:我方,敌方坦克上下移动并开火(1)操作说明游戏启动时,按上下左右键可以是我方坦克移动,按F键可以开火(2)关键代码//绘制坦克public void draw(Graphics g){//根据不同方向加载不同图片,读取的时候需要处理异常try{switch(direction){case STOP:case UP:upimage=ImageIO.read(new File("src/images/up.gif"));oldimage=upimage;g.drawImage(upimage, x, y, null);break;case RIGHT:rightimage=ImageIO.read(new File("src/images/right.gif"));oldimage=rightimage;g.drawImage(rightimage, x, y, null);break;case DOWN:downimage=ImageIO.read(new File("src/images/down.gif"));oldimage=downimage;g.drawImage(downimage, x, y, null);break;case LEFT:leftimage=ImageIO.read(new File("src/images/left.gif"));oldimage=leftimage;g.drawImage(leftimage, x, y, null);break;}}catch (IOException e) {};g.drawImage(oldimage, x, y, null);move(direction);}//根据移动方向,移动坦克,不允许坦克移出地图public void move(Direction d){/*** 记录坦克原来的位置,撞墙可以回到原位置*/oldX=x;//记录坦克原来的位置,撞墙可以回到原位置oldY=y;if(d == Direction.STOP){}else if(d == Direction.UP){y-=yspeed;if(y<=HEIGHT)y=HEIGHT;}else if(d==Direction.RIGHT){x+=xspeed;if(x>=800-WIDTH)x=800-WIDTH;}else if(d==Direction.DOWN){y+=yspeed;if(y>=600-HEIGHT)y=600-HEIGHT;}else if(d==Direction.LEFT){x-=xspeed;}2.功能2:我方开火,敌方会爆炸,然后死亡。

JAVA课程设计坦克大战含代码

JAVA课程设计坦克大战含代码

游戏结束判断
生命值耗尽:当坦克的生命值降至0时,游戏结束 游戏时间结束:当游戏时间达到预设值时,游戏结束 胜利条件达成:当一方达到预设的胜利条件时,游戏结束 玩家主动退出:当玩家主动选择退出游戏时,游戏结束
游戏得分计算
得分规则:击毁敌 方坦克、保护己方 坦克、完成特定任 务等
得分方式:根据击 毁敌方坦克的数量、 保护己方坦克的数 量、完成任务的难 度等计算得分
得分显示:在游戏 界面实时显示得分 情况,方便玩家了 解游戏进度
得分记录:游戏结 束后,记录玩家的 分情况,方便玩 家查看历史成绩
游戏优化与扩展
游戏性能优化
优化算法: 使用更高 效的算法, 如动态规 划、贪心 算法等
减少内存 占用:优 化数据结 构,减少 不必要的 内存占用
优化渲染: 使用更高 效的渲染 技术,如 OpenGL、 DirectX 等
优化网络 传输:使 用更高效 的网络传 输协议, 如TCP、 UDP等
优化AI: 使用更高 效的AI算 法,如神 经网络、 遗传算法 等
优化资源 管理:合 理分配系 统资源, 避免资源 浪费
游戏扩展功能实现
增加新的坦克类型:如重型坦克、轻 型坦克等
增加新的地图:如沙漠地图、雪地地 图等
增加新的游戏模式:如团队模式、生 存模式等
音效类型:背景音乐、战斗音效、 胜利音效等
音效处理:音量调节、音效混合、 音效剪辑等
添加标题
添加标题
添加标题
添加标题
音效来源:自行创作、购买版权、 网络下载等
音效与游戏场景的结合:根据游戏 场景选择合适的音效,增强游戏体 验
游戏实体设计
坦克类设计
坦克属性:生命值、攻击 力、防御力、速度等

基于java坦克大战课程设计报告【超全】

基于java坦克大战课程设计报告【超全】

基于java坦克大战课程设计报告摘要随着计算机的普及以及对电子游戏的认识,电子游戏已被越来越多的人选作放松、娱乐的休闲方式;电子游戏既不需要专门购买游戏器材,也不需要宽阔的游戏场地,只需要一台能独立完成任务的计算机即可,它可以是人们工作、学习时用的计算机,并不需要另行配置,这比起传统休闲游戏即省钱又省事。

局域网游戏更是可以将现实空间中零散的计算机,组织起来,使其在逻辑空间中集中起来,使游戏的组织、开展变得轻松。

如此轻松而又安逸的休闲方式,使得越来越多的人尝试,甚至已经将电子游戏作为主要休闲方式,既然有如此多的人使用,那其中必然存在巨大的商机,即使人们不愿意为一个小小的休闲游戏花费金钱,但在游戏中添加广告、游戏相关服务也包藏了巨大的财富;当然电子游戏的制作如今已是空前的火爆,大大小小的游戏公司横空出世,都想在电子游戏制作这个行业里占据一席之地,而一款成功的电子游戏需要精心的策划、分析、设计,只有这样才能获得游戏中包藏的财富,以及做出一款真正能够让玩家娱乐、放松的游戏,而不是骗取玩家钱财的工具。

关键字:局域网;电子游戏;坦克大战;目录一、系统分析............................................................................................................................ - 1 -可行性分析.......................................................................................................................... - 1 - 需求分析.............................................................................................................................. - 1 - 二、概要设计............................................................................................................................ - 2 -工作流程图.......................................................................................................................... - 2 - 项目规划.............................................................................................................................. - 3 - 开发及运行环境.................................................................................................................. - 3 - 三、详细设计与算法实现........................................................................................................ - 4 -游戏主窗口.......................................................................................................................... - 4 - 网络管理.............................................................................................................................. - 6 - 封装的游戏元素.................................................................................................................. - 8 - 四、测试.................................................................................................................................. - 10 -测试环境............................................................................................................................ - 10 - 测试结果............................................................................................................................ - 10 -五、软件截图.......................................................................................................................... - 11 -六、总结.................................................................................................................................. - 14 -七、参考文献.......................................................................................................................... - 15 -一、系统分析可行性分析技术可行性软件使用swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现使用这些技术是可行的。

基于Java面向对象程序设计课程报告

基于Java面向对象程序设计课程报告

基于Java语言的简易坦克大战游戏设计课程报告摘要:本课程设计使用Java语言开发了一个简单坦克大战小游戏,主要采用面向对象程序设计思想来完成程序的需求分析,概念及逻辑设计,系统的详细实现等过程。

游戏主要实现了游戏场景的构造,坦克及子弹类的初始化,敌我坦克对战,游戏存盘及读档等功能。

关键词:Java;面向对象;敌我坦克对战;引言坦克大战是一个经典的单机对战游戏,其在青少年中非常流行,目前游戏开发商对其不断改进,已从简单的单机手游扩充为大型的网络对战游戏,但其基于面向对象程序设计思想仍未变。

本设计是为检验面向对象程序设计课程的知识运用而进行的实践,其主要目的是采用面向对象的思想,独立完成程序的各个过程,并在实践中应用学到的关于Java类与对象,接口,包,异常处理,多线程,事件处理及各类流的处理等知识。

1.系统分析1.1系统可行性分析在技术上,本系统的坦克大战是基于Java语言设计,并在Eclipse软件上具体实现的。

Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,具有简洁,安全,面向对象,动态,体系结构中立,可移植,高性能,多线程,解释执行,分布式等特性。

Java现在主要用在WEB开发,手机游戏及一些平台游戏的开发,因为其具有良好的跨平台性,在各类电子产品上应用非常广泛。

本系统使用Swing,GUI,Socket,面向对象设计等技术实现,这些技术已非常成熟,广泛应用于各类程序开发,故现在使用这些技术是可行的。

在实用性上,坦克大战为一款经典射击游戏,其前身为1985年日本游戏公司在任天堂FC(FamilyComputer)平台上开发的红白单机游戏,游戏以坦克战斗及保卫基地为主题,凭借流畅的游戏体验,不错的游戏视觉效果风靡全世界。

直到今天,仍有游戏商家以其为模型开发出3D网络对战版坦克大战,可见其具有广大的市场效益。

本系统运用Java跨平台编程语言,在PC上重新实现这一经典游戏,探究其设计思路与实现方法,并且设计了关卡模式,新增了游戏存盘,读档功能,使游戏玩法更加丰富。

坦克大战Java课程设计值得参考

坦克大战Java课程设计值得参考

《面向对象程序设计》课程设计报告题目:坦克大战软件设计与实现院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号:20121183011指导教师:吴奕20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制面向对象程序设计课程设计任务书目录1需求与总体设计 (5)1.1需求分析 (5)1.2总体设计 (6)1.2.1总体设计功能图 (6)1.2.2总体设计流程图 (6)1.3类图 (8)2详细设计 (9)2.1详细设计思路 (9)2.2类图详细说明 (12)2.3详细设计流程图 (20)3编码实现 (21)4系统测试 (46)4.1菜单项测试 (46)4.2游戏信息测试: (48)总结 (57)1需求与总体设计1.1需求分析1.设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来,界面能够接受用户的操作,具有人机交互功能。

用户可以选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。

2.界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家”。

3.坦克:坦克分为两种,敌方坦克和用户控制的坦克。

用户方和敌方坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。

坦克之间不能穿越,碰撞到后自动调换方向。

4.树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的元素,使得游戏更加贴切人性化。

树的数目不限,以游戏整体界面清晰美观来决定数目。

5.河流:界面中要包括河流,河流作用与树林相同,同样河流的数目不限,以游戏界面整体美观度来决定数目。

6.墙:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时会损坏,而铁墙可以阻碍子弹的穿越。

两方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。

普通墙体的数目配合其他元素合理安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越铁墙而使得游戏无法进行下去。

JAVA坦克大战课程设计

JAVA坦克大战课程设计

JAVA坦克大战课程设计实验报告专业班级:计算机学号:201110000姓名:指导老师:JAVA坦克大战课程设计一、课程设计目的Java坦克大战程序设计的课程程序设计是我们学习完Java语言程序设计课程后,进行的一次全面的综合设计,其目的是加深对理论教学内容的理解和掌握,使学生综合运用.学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下基础。

二、课程设计的预备知识和实验环境熟悉Java语言以及eclipse开发工具,实验环境为JDK1.6。

三、课程设计的主要内容坦克大战游戏是在eclipse环境下编程的游戏,其中包括对主坦克的编写、坦克的初始位置的编写、坦克移动方向的编写、坦克的速度的编写、坦克子弹速度的编写、敌对坦克子弹速度的编写、敌对坦克的编写等等。

游戏主要实现的功能有:1.能够四处移动2.能够打击敌人3.敌人能够移动4.能够模拟爆炸5.能够产生障碍6.能够增长生命四、程序具体设计1.版本0.1~0.2实现的主要功能:产生一个不能修改大小的窗体,并实现关闭窗体的事件处理。

源代码如下:2.版本0.3~0.5实现的主要功能:画出代表坦克的同心圆;让坦克运动起来;使用双缓冲来消除坦克移动时的闪烁现象;利用代码重构将以后可能需要多处修改的量定义为常量,例如窗体的宽度和高度(常量名一般为大写)主要代码如下: public class TankClient extends Frame {int x = 50, y = 50;public void paint(Graphics g) {Color c = g.getColor();g.setColor(Color.RED);g.fillOval(x, y, 30, 30);g.setColor(c);y += 5;}使用paint 方法来画出坦克,并将坦克的位置设置成变量来实现坦克的移动。

p ublic void lauchFrame() {this.setLocation(400, 300);this.setSize(800, 600);this.setTitle("TankWar");this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}this.setResizable(false);this.setBackground(Color.GREEN);setVisible(true);new Thread(new PaintThread()).start();}public static void main(String[] args) {TankClient tc = new TankClient();uchFrame();}private class PaintThread implements Runnable {public void run() {while(true) {repaint();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}}使用update来实现双缓冲结局移动时的闪烁问题public void update(Graphics g) {if(offScreenImage == null) {offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);}Graphics gOffScreen = offScreenImage.getGraphics();Color c = gOffScreen.getColor();gOffScreen.setColor(Color.GREEN);gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);gOffScreen.setColor(c);paint(gOffScreen);g.drawImage(offScreenImage, 0, 0, null);}在lauchFrame方法中启动线程,来实现坦克的移动,并加入sleep方法使移动出现延时。

java关于坦克大战的课程设计报告

java关于坦克大战的课程设计报告
本课程设计主要目的有:
掌握Java编程、面向对象的基础知识,编写坦克大战游戏。
较熟练地编写Java应用程序Application。
做好充分的准备之后,按照面向对象的设计思想,根据坦克大战游戏的实际需求设计相关的类与接口,实现多态、重载等开发工作。
指导教师签字:、日期:
指导教师评语
成绩:指导教师签字:日期:
课程设计所需软件、硬件等
硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
课程设计进度计划
起至日期
工作内容
备注
2012.11
2012.12
程序设计构思,查阅Leabharlann 料程序设计实现,课程任务书
参考文献、资料索引
序号
文献、资料名称
信息科学与工程学院
课程设计任务书
题目:
学号:
姓名:
专业:
课程:
指导教师:职称:
完成时间:20年月----20年月
课程设计任务书及成绩评定
课程设计的任务和具体要求
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA语言程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
编著者
出版单位
(1)Java语言实用教程(第2版) 丁振凡 北京邮电大学出版社.
(2)Java语言实用教程实验指导(第2版)丁振凡北京邮电出版社

java课设报告坦克大战

java课设报告坦克大战

java课设报告坦克大战什么是Java课设报告坦克大战?Java课设报告坦克大战是一个基于Java编程语言开发的游戏项目。

它模拟了坦克战争的场景,玩家需要操控一辆坦克,与其他玩家或者电脑控制的敌人进行战斗,完成各种任务。

这个项目旨在提高学生的Java编程能力和团队协作能力。

第一步:需求分析和设计在开始编写代码之前,我们需要进行需求分析和设计。

首先,确定游戏的功能和玩法。

例如,游戏应该具有地图、坦克、子弹等基本元素,玩家可以使用键盘控制坦克的移动和攻击,坦克和子弹应该有相应的属性和行为,坦克应该能够与其他坦克进行交互等等。

其次,我们需要设计游戏的界面和用户交互方式,包括游戏的开始菜单、游戏画面、得分、生命值等界面元素。

最后,我们应该考虑游戏的可扩展性,使得我们能够在后续的开发过程中添加更多的功能和元素。

第二步:编写代码在设计完成后,我们开始编写Java代码。

首先,我们创建一个Java项目,并进行必要的配置,例如添加游戏所需的外部库和资源文件。

然后,我们开始编写代码。

我们可以将游戏的不同元素,例如地图、坦克、子弹等,抽象成不同的类,并为每个类定义相应的属性和方法。

我们还可以使用设计模式和面向对象的编程思想,使得代码更加清晰和可维护。

同时,我们需要为游戏添加适当的事件处理器,以响应用户的操作和更新游戏状态。

我们还可以使用Java图形库或者相关的游戏引擎,使游戏具有更好的视觉效果和用户体验。

第三步:测试和调试在代码编写完成后,我们需要进行测试和调试。

我们可以编写一些测试用例,验证游戏的各个功能和元素是否正常工作。

同时,我们需要定期检查并修复可能存在的bug和错误,确保游戏的稳定性和可玩性。

在这个过程中,我们可以与团队成员合作,互相交流和帮助,提高解决问题的效率和质量。

第四步:项目上线和发布在完成测试和调试后,我们可以将游戏部署到服务器上,并发布给玩家。

我们可以选择通过应用商店或者网站进行发布,或者将游戏打包成可执行文件,供玩家下载和安装。

JAVA关于坦克大战的课程设计报告

JAVA关于坦克大战的课程设计报告
枣庄学院 信息科学与工程学院
课程设计任务书
题目:
学 号: 姓 名: 专 业: 课 程: 指导教师:
职称:
完成时间: 20 年 月----20 年 月
枣庄学院信息科学与工程学院制
课程设计任务书及成绩评定
课程设计的任务和具体要求 本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA 语言程
序设计》课程后,进行的一次全面的综合训练,JAVA 程序设计的设计目的是 加深对理论教学内容的理解和掌握,使学生综合运用所学知识,利用软件工程 为基础进行软件开发、并在实践应用方面打下一定基础。
2
二.系统分析 2.1 可行性分析
2.1.1 技术可行性 软件使用 swing、GUI、Socket、面向对象设计等技术实现,这些技术
均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现 使用这些技术是可行的。 2.1.2 经济可行性
本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件 暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务, 从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放 弃开发,以减少损失。
2.2 需求分析
设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来, 界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏, 退出游戏,暂停游戏游戏帮助。
界面中包含我方坦克,和敌人坦克以及坦克发出的子弹和爆炸后的效果。 坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方坦克均 可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏 边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到 后自动调换方向。 墙:游戏中的边界王家的坦克和敌人的坦克都不能越过,坦克的子弹也不 能穿过。 子弹:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线移动, 直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到一颗子弹攻 击会爆炸从而导致死亡,死亡后坦克消失。用户方受到子弹攻击后会减少寿命, 且受到四次攻击则死亡,此时如还有敌方坦克存在,则用户方输掉本次游戏。 爆炸:当子弹射击到坦克身上时,要产生爆炸效果。 方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹的方向 从属于坦克的方向。

TAVA课程设计 坦克大战

TAVA课程设计 坦克大战

《Java语言程序设计》课程设计报告题目:坦克大战专业:学号:姓名:指导教师:成绩:2010年 12 月28日1.课程设计研究背景及意义开发一个基于J2SE的游戏,坦克大战2.课程设计题目描述和要求坦克游戏要求:i.需要有图形游戏界面,让用户能看到游戏给出的反馈ii.有人机交互功能,使用户能操作指定的游戏元素iii.不同队伍的坦克,须显示不同外观,已分辨敌我iv.坦克能够开火,攻击敌方,但不能攻击队友v.需要有不可被子弹穿透的墙,且墙有可摧毁和不可摧毁两种vi.坦克有生命值,并非被击中一次就会爆炸vii.坦克爆炸后将产生道具,拾到道具的坦克可加满生命值3.课程设计报告内容3.1 题目求解的理论依据及算法解题原理:1)游戏基本元素:坦克,炮管,子弹,墙壁,地雷2)按住w,s,a,d或上,下,左,右箭头键,坦克向上下左右移动3)按鼠标左键,坦克开火,产生子弹,子弹与另一个坦克相碰,子弹3.2 数据结构:窗口:主窗口TankClient游戏元素:子弹 shot,坦克tank,墙壁wall,血条HitPoint,炸弹Bomb,涨炸弹的道具ShotsItem,涨血的道具 HitPointItem3.3 主要事件处理:1、按下鼠标左键发射普通子弹。

2、按下鼠标右键发射散弹。

3、子弹爆炸的效果,普通子弹和散弹的效果。

3.4 简要的设计流程:键盘监听器3.5、源代码:package cn.hnist.Joshua; import java.awt.*; /*** 抽象子弹类* @author bebebird@ */abstract class Shot { int shotSpeed; //子弹移动速度 int shotRadius; //子弹大小(半径) int shotPower; //子弹威力int ox, oy, sx, sy; //o 表示Tank 的中心坐标,s 表示炮弹坐标(初始时为炮筒端点) int lengthX, lengthY; //子弹每次移动的步长 boolean isLive;boolean isBomb; //死时是否产生爆炸 TankClient tc=null; Tank tk=null;ShotBomb shotBomb=null;public static final Toolkit TLK=Toolkit.getDefaultToolkit();public Shot(int ox,int oy,int sx,int sy,Tank tk){this.ox=ox;this.oy=oy;this.sx=sx;this.sy=sy;this.tc=tk.tc;=tk;this.isLive=true;}public Shot(Tank tk){this.ox=tk.x;this.oy=tk.y;this.sx=tk.turretDirx;this.sy=tk.turretDiry;this.tc=tk.tc;=tk;this.isLive=true;}abstract void draw(Graphics g);abstract void move();abstract void dead();public boolean isOutOfWindow() //检查子弹是否跃出边界{if(sx>TankClient.WIN_WIDTH||sx<0||sy>TankClient.WIN_HEIGHT||sy<0) {this.isBomb=false;return true;}else { return false; }}public Rectangle getRect() //碰撞检测时用于判断{return newRectangle(sx-shotRadius,sy-shotRadius,shotRadius*2,shotRadius*2;}}/*** 散弹类* @author bebebird@*/class HydraShot extends Shot{static final Image HYDRASHOT=TLK.getImage(Shot.class.getClassLoader().getResource("Image/Sh ot/SUPER.png"));public HydraShot(int ox,int oy,int sx,int sy,Tank tk){super(ox,oy,sx,sy,tk);this.shotPower=1;//子弹大小(半径)设置为6this.shotRadius=6;//炸弹速度设置为3this.shotSpeed=13;this.lengthX=shotSpeed*(sx-ox)/(int)Math.hypot(sx-ox,sy-oy);this.lengthY=shotSpeed*(sy-oy)/(int)Math.hypot(sx-ox,sy-oy);}public void draw(Graphics g){if(isLive){g.drawImage(HYDRASHOT,sx-shotRadius,sy-shotRadius,null);}else{if(isBomb&&shotBomb!=null) { shotBomb.draw(g); } }}public boolean isHitWall(){Wall w=null;for(int i=0;i<tc.wallList.size();i++){w=tc.wallList.get(i);if(w.isHits(this)){this.isBomb=true;return true; //散弹不可穿墙}}return false;}public boolean isHitTank() //检查炮弹是否击中对方Tank{Tank tempTk=null;for(int i=0;i<tc.tanksList.size();i++){tempTk=tc.tanksList.get(i);if(tempTk.isLive&&getRect().intersects(tempTk.getRect())&&tempTk .camp!=tk.camp){tempTk.tankHitPoint.cutsHitPoint(shotPower,this); //减少一些血this.isBomb=true;return true;}}return false; //未打中任何Tank}public void dead(){if(isLive){this.isLive=false;if(isBomb){ shotBomb=new ShotBomb(sx-32,sy-32,this); } //当撞到墙或Tank时子弹才爆炸else{tc.shotsList.remove(this);}}}public void move(){if(isLive){sx+=lengthX;sy+=lengthY;if(isOutOfWindow()||isHitWall()||isHitTank()){this.dead();}}}}/*** 普通炮弹类* @author bebebird@*/class NormalShot extends Shot //普通炮弹{static final Image[] NORSHOT={T LK.getImage(Shot.class.getClassLoader().getResource("Image/Shot/ NOR1.png")),TLK.getImage(Shot.class.getClassLoader().getResource("Image/Sh ot/NOR2.png"))};public NormalShot(Tank tk){super(tk);this.shotPower=1;this.shotRadius=6;this.shotSpeed=12;this.lengthX=shotSpeed*(sx-ox)/(int)Math.hypot(sx-ox,sy-oy);this.lengthY=shotSpeed*(sy-oy)/(int)Math.hypot(sx-ox,sy-oy); }public void draw(Graphics g){if(isLive){if(tk.camp){ g.drawImage(NORSHOT[0],sx-shotRadius,sy-shotRadius,null); } else{ g.drawImage(NORSHOT[1],sx-shotRadius,sy-shotRadius,null); } }else{if(isBomb&&shotBomb!=null) { shotBomb.draw(g); } }}public boolean isHitWall(){Wall w=null;for(int i=0;i<tc.wallList.size();i++){w=tc.wallList.get(i);if(w.isHits(this)){this.isBomb=true;return true; //普通子弹不可穿墙}}return false;}public boolean isHitTank() //检查炮弹是否击中对方Tank{Tank tempTk=null;for(int i=0;i<tc.tanksList.size();i++){tempTk=tc.tanksList.get(i);i f(tempTk.isLive&&getRect().intersects(tempTk.getRect())&&temp Tk.camp!=tk.camp){tempTk.tankHitPoint.cutsHitPoint(shotPower,this); //减少一些血this.isBomb=true;return true;}}return false; //未打中任何Tank}public void dead(){if(isLive){this.isLive=false;tk.shotsCount--; //将Tank已发射的子弹数减1if(isBomb){ shotBomb=new ShotBomb(sx-32,sy-32,this); } //当撞到墙或Tank时子弹才爆炸else{tc.shotsList.remove(this);}}}public void move(){if(isLive){sx+=lengthX;sy+=lengthY;if(isOutOfWindow()||isHitWall()||isHitTank()){this.dead();}}}}/*** 增强的炮弹* @author bebebird@*/class SpecialShot extends Shot{int hitCount; //子弹可以攻击的次数static final Image SPESHOT=TLK.getImage(Shot.class.getClassLoader().getResource("Image/Shot/SPE.png"));public SpecialShot(Tank tk){super(tk);this.hitCount=2;this.shotPower=2;this.shotRadius=6;this.shotSpeed=10;this.lengthX=shotSpeed*(sx-ox)/(int)Math.hypot(sx-ox,sy-oy);this.lengthY=shotSpeed*(sy-oy)/(int)Math.hypot(sx-ox,sy-oy); }public boolean isHitTank() //检查炮弹是否击中Tank{Tank tempTk=null;for(int i=0;i<tc.tanksList.size();i++){tempTk=tc.tanksList.get(i);if(getRect().intersects(tempTk.getRect())&tempTk.camp!=tk.camp)/ /自己发射的子弹不打自己人{if(tempTk.isLive){tempTk.tankHitPoint.cutsHitPoint(shotPower,this); //减少一些血this.hitCount--;if(0==hitCount) { this.isBomb=true; return true; } }}}return false; //未打中任何Tank}public void dead(){if(isLive){this.isLive=false;if(isBomb){ shotBomb=new ShotBomb(sx-32,sy-32,this); } //当撞到墙或Tank时子弹才爆炸else{this.tc.shotsList.remove(this); //将子弹从List中移除}}}void move(){if(isLive){sx+=lengthX;sy+=lengthY;if(isOutOfWindow()||isHitTank()){this.dead();}}}void draw(Graphics g){if(isLive){g.drawImage(SPESHOT,sx-shotRadius,sy-shotRadius,null);}else{if(isBomb&&shotBomb!=null) { shotBomb.draw(g); } }}}class SuperShot extends Shot //超级炮弹{int oldx,oldy; //起始坐标static final int MOVERANGE=150; //发射后移动此距离后爆炸static final ImageSUPERSHOT=TLK.getImage(Shot.class.getClassLoader().getResource("Image/Shot/SUPER.png"));public SuperShot(Tank tk){super(tk);this.shotPower=5;this.shotRadius=4;this.shotSpeed=8;this.oldx=sx;this.oldy=sy;this.lengthX=shotSpeed*(sx-ox)/(int)Math.hypot(sx-ox,sy-oy);this.lengthY=shotSpeed*(sy-oy)/(int)Math.hypot(sx-ox,sy-oy);}public void dead(){if(isLive){this.isLive=false;if(isBomb) { shotBomb=new SuperShotBomb(sx,sy,this); }else { this.tc.shotsList.remove(this); }}}void move(){if(isLive){sx+=lengthX;sy+=lengthY;if(isOutOfWindow()) { this.dead(); }if((int)Math.hypot(sx-oldx,sy-oldy)>MOVERANGE) //移动一定距离后爆炸{this.isBomb=true;this.dead();}}}/*** 画发射炮弹*/void draw(Graphics g){if(isLive){g.drawImage(SUPERSHOT,sx-shotRadius,sy-shotRadius,null);}else{if(isBomb&&shotBomb!=null) { shotBomb.draw(g); } }}}3.6 程序调试出错信息及解决方法程序在调试过程中碰到很多的错误,譬如说事件监听器与事件源没有关联、除数为零、数组下标越界等等。

java坦克大战

java坦克大战

基于java坦克大战课程设计报告摘要面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它吸取了结构化程序设计的精华,以更接近人们通常思维的方式来处理问题,是一种全新的软件开发技术。

作为一种新的的编程语言,Java很大程度推广了面向对象的思想。

随着计算机技术的发展,Java的强大展现出它不可替代的作用。

Java的功能不仅体现在它网络方面的应用,对于应用程序设计、游戏设计等Java都能满足需求。

本文针对Java 的具体应用,设计了一个小游戏。

根据游戏的规则,用户将可以和计算机进行简单对战。

程序实现了友好的用户交互界面,让用户能很好地对游戏进行操作。

关键字:JAVA GUI 游戏ABSTRACTThe Object-Oriented Method is a method which apllies the Object-Oriented Design to the process of the software exploiture and directs the ploy of development. It extracts the prime of the Structured Design for Computer Programmers, deals matters with afolksy fashion, which is considered to be a grand new software-develop technique.As a new programming language, Java spread the Object-Oriented Design in a certain degree. With the development of the technique of computer, the insurmountable function of JAVA is exhibited for its’ mightiness. Not only applies in network, JAVA also can fulfill the requirement of the Application-Design and Game-Design.In this paper, to use the idiographic application of JAVA , I design a game called . Following the regular of the game, user can play a simple revalry with computer. This programme actualizes a folksy GUI mode, which will make user master game easily.Keywords: JAVA GUI Game目录一、系统分析............................................................................................... 错误!未定义书签。

JAVA课程设计坦克大战(含代码)

JAVA课程设计坦克大战(含代码)

Java程序课程设计任务书项目名称:坦克大战游戏的设计与开发英文名:Tank Battle1、主要内容:1、基于java的游戏开发与设计的分析;2、坦克大战游戏的架构搭建与设计实现;3、游戏可以通过用户可以注册新用户,修改自己的密码、个人资料。

2、具体要求1、系统的功能要求:(一)实现玩家试玩游戏功能,屏蔽用户注册和登陆功能(空功能)(二)玩家具备一个或者两个备选坦克战车(三)玩家可以选择一个到两个关卡进行作战(四)玩家可以选择两个敌对阵营中的一个加入,与其他AI战车坦克并肩作战(五)胜利判定条件为:时间制、全杀制(可选)(六)至少提供两个可以自由切换的视角(七)至少提供一种炮弹类型(八)假定项目:如果用户注册,登陆功能能够顺利做好,则提供一个玩家分数上传和排行榜功能。

2、学习并掌握以下技术:数据库的JDBC连接,JA V A编程语言,MySQL数据库的应用;JSP的开发与运用3、熟练使用以下开发工具:JCreator,Myeclipse ,MySQL ,PowerDesigner 等3、进度安排:12月28日~ 12 月29 日:查阅资料,完成文献综述,任务书;12月29 日~ 12月31日:进行系统的需求分析与设计;1月1日~ 1月3日:根据分析进行各个模块程序的设计与创建;1月4日~ 1 月6日:完成各个模块的程序编写;1月7 日~ 1 月8 日:完成全部程序的编写及系统测试;1月9日~ 1 月10日:完成课程设计报告的编写,答辩;摘要随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,包括医药,汽车工业,手机行业,游戏,等等地方。

Java游戏的开发为满足人们娱乐所需而设计。

本游戏为坦克大战游戏,是基于Java的图形用户界面而开发的,可以放松心情的小游戏。

游戏从系统操作简便、界面友好、灵活、上手即会的基本要求出发,完成整款游戏的开发。

游戏更设置了暂停、计分、音乐、速度,用户信息保存等功能,可以根据自己的爱好,挑战更高难度,为用户带来愉悦的体验。

java实现坦克大战课程设计报告书

java实现坦克大战课程设计报告书

Java实现坦克大战小游戏摘要Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。

我的课程设计是用java来做一个简单的坦克大战小游戏。

我将这个程序细分了多个部分,每个部分都建了独立的类,比如:坦克的模型类,河道,树和坦克方向等等。

之所以将之细分,是遵循了java的万事万物皆对象的原理。

在实现每个类时,最简单但也是最繁琐就是建立界面与实例化坦克,因为这牵扯了界面布局,监听的建立等;而有一些类,比如;河道、墙、坦克,这些类这可以依样画葫芦的编写。

在编写过程,借鉴了他人的一些图片模型,实现的功能也并不是和经典的FC坦克大战相同,但是每个坦克之间的互动还是实现了的。

关键词:万事万物皆对象界面布局坦克之间的互动USE JAVA TO REALIZE BATTLE CITY MINI-GAMEABSTRACTJava is a object oriented program design language what can compose cross platform application software. My curriculum design is using JAVA language to make a simple small game called Tank Battle. I break down this program into multiple parts, each part is to establish an independent class, such as: Tank Model class, River Course class, Tree class, The Direction of Tank class and so on. The reason divides into multiple parts, is because follow the principle of JAVA that everything is an object. When implements every class, the most simple but also the most troublesome is build interface and instantiate Tank class, because it is involved of the interface layout, monitoring the establishment. While there are some classes, such as: River Course class, Wall class and Tank class, can write like stick closely to the pattern given.In the preparation process, I refer some pictures of models of others, the function of the retaliate isn’t like FC Tank Battle, but the interaction between ach tank is realized.Key words: everything is an object, the interface layout, the interaction betweeneach tank目录1 课程目的与要求 (1)1、1课程目标 (1)1、2 课程的实现环境 (1)2 概要设计 (2)3 详细设计 (3)4 测试结果与心得体会………………………………………………………………………5 参考文献……………………………………………………………………………………附录……………………………………………………………………………………………源程序代码……………………………………………………………………………………1 课程的目的与要求1、1课程目标JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

java坦克大战课程设计报告

java坦克大战课程设计报告

网络编程程序设计坦克大战网络版专业班级:09级网络工程(2)班组长:张玉利(200903060011)成员:李瑞琳(200903060016)张杰(200903060036)朱凯强(200903060020)杨达允(200902010026)指导教师:王占中一、需求分析每个人都玩过坦克大战这个游戏,本程序完成的功能就是平时所玩的游戏中所实现的一些基本功能。

并且在单机版的基础上改写成网络版具体游戏要求:●玩家控制的坦克能够四处移动●玩家控制的坦克能够打击敌人●敌人坦克能够任意移动●坦克被摧毁能够模拟爆炸●多个玩家(即客户端)通过服务器端进行互动。

二、java文件对应的功能。

Tank.java主要是包括Tank的相关信息;以及基本方法,以及对应的按键处理public void keyPressed(KeyEvent e) 按键响应函数private void locateDirection() 确定当前的坦克的位置private Missile fire() tank发射子弹public boolean isLive() 检测坦克是否还活着public void setLive(boolean live) 设定坦克的生死状态Tankclient.Java主要是客户端登陆的功能,具体通过套节字实现。

class ConnDialog extends Dialog此类主要实现通过对话框的形式来连接登录服务器。

客户机自动实现修改udPport的功能。

TankDeadMsg.Java本文件主要是向所有客户机包括服务器发送死亡坦克的信息。

这里主要用到的是多态机制。

(Tankdeadmsg继承msg接口)public void parse(DataInputStream dis)主要功能:* 分析接收到的消息数据* 接收到的消息数据的输入流public void send(DatagramSocket ds, String IP, int udpPort)主要功能:发送死亡坦克的相关的消息*通过该socket发送数据*数据的目标IP*数据的目标端口TankMoveMsg.java本文件主要是向所有客户机包括服务器发送坦克移动的相关息。

毕业设计---基于java坦克大战课程设计报告

毕业设计---基于java坦克大战课程设计报告

基于java坦克大战课程设计报告摘要随着计算机的普及以及对电子游戏的认识,电子游戏已被越来越多的人选作放松、娱乐的休闲方式;电子游戏既不需要专门购买游戏器材,也不需要宽阔的游戏场地,只需要一台能独立完成任务的计算机即可,它可以是人们工作、学习时用的计算机,并不需要另行配置,这比起传统休闲游戏即省钱又省事。

局域网游戏更是可以将现实空间中零散的计算机,组织起来,使其在逻辑空间中集中起来,使游戏的组织、开展变得轻松。

如此轻松而又安逸的休闲方式,使得越来越多的人尝试,甚至已经将电子游戏作为主要休闲方式,既然有如此多的人使用,那其中必然存在巨大的商机,即使人们不愿意为一个小小的休闲游戏花费金钱,但在游戏中添加广告、游戏相关服务也包藏了巨大的财富;当然电子游戏的制作如今已是空前的火爆,大大小小的游戏公司横空出世,都想在电子游戏制作这个行业里占据一席之地,而一款成功的电子游戏需要精心的策划、分析、设计,只有这样才能获得游戏中包藏的财富,以及做出一款真正能够让玩家娱乐、放松的游戏,而不是骗取玩家钱财的工具。

关键字:局域网;电子游戏;坦克大战;目录一、系统分析............................................................................................................................ - 1 -可行性分析.......................................................................................................................... - 1 - 需求分析.............................................................................................................................. - 1 - 二、概要设计............................................................................................................................ - 2 -工作流程图.......................................................................................................................... - 2 - 项目规划.............................................................................................................................. - 3 - 开发及运行环境.................................................................................................................. - 3 - 三、详细设计与算法实现........................................................................................................ - 4 -游戏主窗口.......................................................................................................................... - 4 - 网络管理.............................................................................................................................. - 6 - 封装的游戏元素.................................................................................................................. - 8 - 四、测试.................................................................................................................................. - 10 -测试环境............................................................................................................................ - 10 - 测试结果............................................................................................................................ - 10 -五、软件截图.......................................................................................................................... - 11 -六、总结.................................................................................................................................. - 14 -七、参考文献.......................................................................................................................... - 15 -一、系统分析可行性分析技术可行性软件使用swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现使用这些技术是可行的。

java课程设计-坦克大战

java课程设计-坦克大战

攀枝花学院学生课程设计(论文)题目:基于JAVA的坦克大战学生姓名:学号:所在院(系):计算机学院专业:计算机科学与技术班级:指导教师:职称:2011年5 月26 日攀枝花学院教务JAVA课程设计之坦克大战课程设计任务书攀枝花学院本科学生课程设计任务书注:任务书由指导教师填JAVA课程设计之坦克大战成绩评定表课程设计(论文)指导教师成绩评定表JAVA课程设计之坦克大战摘要摘要系统拥有可视化的登录界面,配有游戏帮助文档,程序的编写涵盖J2SE基础知识,包括典型的封装、继承、多态的实现,同时结合了socket网络编程、GUI图形用户界面的相关知识。

项目集成了单机个人、网络对战两个版本。

单机版实现精彩的人机对战,电脑间隔性产生敌方坦克,玩家通过血块持续攻击。

游戏进行了后门设计,玩家可以轻松穿越墙体攻击敌方坦克。

网络版游戏中作为服务器的主机需提前启动坦克服务器,服务器主线程将接收的客户端的数据包转发到其他客户端,实现客户端游戏界面的实时更新。

开始游戏后,主线程调用窗体对象的Paint方法进行绘图,画面采用双缓冲技术进行刷新。

坦克将在游戏开始时进行初始化,并随屏幕刷新的频率而移动。

关键字坦克大战,C/S网络体系,JAVA,Socket编程,GUI目录摘要 (Ⅰ)1 可行性研究 (1)1.1 可行性分析 (1)1.1.1 系统可行性 (1)1.1.2 技术可行性 (1)1.1.3 经济可行性 (1)1.1.4 操作可行性 (2)1.2 网络游戏的发展 (2)1.3 系统的现实意义 (2)1.4 系统特点 (2)1.5 Java、C语言、C++主流技术比较 (3)1.6 本章小结 (3)2 系统需求分析 (4)2.1 系统运行环境 (4)2.1.1 系统运行的软件环境 (4)2.1.2 系统运行的硬件环境 (4)2.2 相关理论 (4)2.2.1 关于Eclipse的介绍 (4)2.2.2 J2SE框架 (5)2.3 系统功能需求 (6)2.3.1 主界面人性化功能 (6)2.3.2 人机对战模式功能 (6)2.3.3 网络对战模式功能 (6)2.3.4 联机通信机制 (6)2.3.5 Java图形编程 (7)2.4 本章小结 (8)3 系统概要设计 (9)3.1系统功能设计 (9)3.1.1 坦克大战总体功能设计 (9)3.1.2 TankClient类基本功能分析 (10)3.1.3 Tank类基本功能分析 (11)3.1.4 Missile类基本功能分析 (12)3.1.5 Explode类基本功能分析 (12)3.1.6 服务器类基本功能分析 (13)3.1.7 信息传送类基本功能分析 (13)3.2 本章小结 (13)4 系统详细设计 (14)4.1 游戏主窗体实现 (14)4.2 单机游戏的实现 (15)4.3 联机功能实现 (18)4.4 网络模式主要代码 (22)4.5 本章小结 (25)5 结论 (26)5.1 课程设计总结 (26)5.2 本程序需解决的有关技术问题 (26)5.3 展望 (27)参考文献 (28)1 可行性研究1.1可行性分析1.1.1系统可行性人类进入21世纪,全球一体化,互联网就起到重要的作用,而且随着互联网的不断发展,信息技术逐渐发展壮大,将成为网络经济的核心。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五.设计体会与小结………………………………………………………… 六.附录………………………………………………………………………
1
一.程设计的目的与要求 1.1 课程设计目的
《JAVA 面性对象程序设计》是电子商务专业的必修专业基础课程,其实践 性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设 计专题实际是计算机相关专业学生学习完《JAVA 面性对象程序设计》课程后, 进行的一次全面的综合训练,JAVA 程序设计的设计目的是加深对理论教学内容 的理解和掌握,使学生综合运用所学知识,利用软件工程为基础进行软件开发、 并在实践应用方面打下一定基础。
子弹打到其他坦克上时用 hitTank(Tank t) 方法,子弹打到墙上时 hitWall(CommonWall w)方法,打到金属墙上 hitWall(MetalWall w),打到家 hitHome(),当然在这些方法里,都要作相应的操作来表示接受到子弹的后果,: 还有,当子弹射击到对方(用户方对敌方)时,当敌方射击到用户方,用户方 要减少生命值,没接受一枪,就执行
主函数,启动整个程序
用户类主要是综合调用各个类来协作完成游戏的设计。
2.3 游戏主窗口
游戏主窗口是人机交互的窗口,对玩家而言,他们只和游戏主窗口打交道, 并不关心游戏内部是如何实现的,所以游戏主窗口部分最重要的便是游戏数据 的输入、输出。
坦克的方向和子弹发射以及游戏的重新开始都是由键盘来控制的,所以在 Tank 类里面必须要实现这些功能。
Tank 类的 keyPressed()方法用于接受键盘的按键监听,接收到相应的键盘信 息后,如接收到 F,则表示发射子弹,所以此时要调用 Tank 类里的 fire()方法, fire()方法不带传递参数,因为子弹的方向总是从属于坦克的方向和位置。
2
二.系统分析 2.1 可行性分析
2.1.1 技术可行性 软件使用 swing、GUI、Socket、面向对象设计等技术实现,这些技术
均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现 使用这些技术是可行的。 2.1.2 经济可行性
本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件 暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务, 从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放 弃开发,以减少损失。
指导教师签字:
日期:
课程设计所需软件、硬件等 硬件要求能运行 Windows 9.X 操作系统的微机系统。JAVA 程序设计语言及相应的集
成开发环境,J2SDK 和 ECLIPSE 开发工具。
起至日期 2012.11
2012.12
课程设计进度计划
工作内容 程序设计构思,查阅资料
备注
程序设计实现,课程任务书
3
2.3 工作流程图
4
三.课程设计内容 3.1 程序具体设计
图形用户界面需要用到抽象窗口工具即 AWT 和 Swing 来设计实现,由于 游戏需要有功能按键来控制游戏的重新开始,退出,暂停,帮助等,所以在实 现过程中,设计菜单项。
5
坦克都是调用各自类里面的 draw 函数来画出来,最后 new 一个图形面板 出来,把所有的元素都 add 进面板就可以了。界面的构造在程序中由 MyPanel 类的构造方法来完成,即没构造一个用户类都会产生这样一个包含各种游戏元 素在内的界面。由于画面是静止的,而我们游戏的画面要求是动态的,游戏中 的坦克和子弹都是在不断的动,可穿透的普通墙体也在“动”,所以对于画面, 必须要不断的更新,重画才能产生动态的效果。
界面中的元素都是在构造界面的时候用界面实例对象的 add 方法加入进去 的,且“动”的元素要不断更新。
坦克主要由 Tank 类来实现。坦克的属性:速度(有 X 轴和 Y 轴的速度之 分),坦克大小,坦克所在新的位置(X 坐标和 Y 坐标),坦克是否还活着,行 动方向等。所有的这些属性都有一个初始化值,从而在游戏一开始就可以运行。
参考文献、资料索引
序号
文献、资料名称
编著者
出版单位
(1)Java 语言实用教程(第 2 版)
丁振凡
北京邮电大学出 版社.
(2)Java 语言实用教程实验指导(第 2 版) 丁振凡 北京邮电出版社
2
目录
一.课程设计的目的与要求 1.1 课程设计目的………………………………………………………………. 1.2 课程设计的实验环境……………………………………………………… 1.3 课程设计的预备知识……………………………………………………… 1.4 课程设计主要内容…………………………………………………………
本课程设计主要目的有: 掌握 Java 编程、面向对象的基础知识,编写坦克大战游戏。 较熟练地编写 Java 应用程序 Application。 做好充分的准备之后,按照面向对象的设计思想,根据坦克大战游戏的实 际需求设计相关的类与接口,实现多态、重载等开发工作。
指导教师签字:

指导教师评语
日期:
成绩:
四.系统的功能测试与调整 4.1 菜单项测试…………………………………………………………………. 4.2 游戏运行测试……………………………………………………………… 4.3 坦克爆炸测试……………………………………………………………… 4.4 保存游戏信息测试………………………………………………………… 4.5 帮助功能测试……………………………………………………………….
菜单功能包括游戏的重新开始,暂停,退出等。这些功能的用户界面放在了 MyPanel 的构造方法里,用到的是面板类和相应的监听功能,实现出来很简单。
3.2 主要方法和变量
属性 int Fram_width
int Fram_length
游戏用户界面的全局静态变量 宽度,初始化为600 游戏用户界面的全局静态变量
7
长度,初始化为500
void update(Graphics g)
图形用户界面的更新方法
void framPaint(Graphics g)
画图形用户界面的方法,需要重
画的界面元素都在这个方法里

void actionPerformed(ActionEvent e)
监听菜单项的方法
static void main(String[] args)
二.系统分析 2.1 可行性分析…………………………………………………………………. 2.2 需求分析…………………………………………………………………….. 2.3 工作流程图………………………………………………………………….
三.课程设计内容 3.1 程序具体设计………………………………………………………………. 3.2 主要方法和变量…………………………………………………………… 3.3 游戏主窗口………………………………………………………………….
由于坦克在碰到墙,界面边界和“家”等阻碍物时要改变方向,所以在 Tank 里面必须对于每一种阻碍物要设计一个方法来作为应对策略,当然解决方法是 把下一步的位置调整到上一步的位置。
子弹的属性:子弹前进的 X 轴和 Y 轴的速度——初始速度都为 10,子弹 的长度和宽度——初始的长宽都为 10,子弹的位置,子弹的方向,子弹是否 live 等。由于不同方向的子弹其实是图片,所以这里要考虑不同图片的选择用对应 的方向来指定,所以要建立 Map 键值对,用 String 属性的方向来指定不同的图 片。如:imgs.put(“L”, bulletImages[0]);
1.2 课程设计的实验环境
硬件要求能运行 Windows 9.X 操作系统的微机系统。JAVA 程序设计语言及 相应的集成开发环境,J2SDK 和 ECLIPSE 开发工具。
1.3 课程设计的预备知识
熟悉 JAVA 语言以及 ECLIPSE 开发工具。
1.4 课程设计主要内容
坦克大战游戏是在 Eclipse 环境下编程的游戏,其中包括对主战坦克的编 写、坦克的初始位置的编写、坦克的移动方向的编写、坦克的速度的编写、 坦克的子弹速度的编写、敌军的子弹速度的编写、设置游戏难度的编写、 子弹的编写、敌军坦克的编写、构造函数的编写等等。游戏主要实现的功 能有: (1).坦克可以上下左右移动 (2).坦克可以发子弹(可以连发) (3).我的坦克击中敌人坦克时,敌人就消失(显示爆炸效果) (4).我被击中后显示爆炸效果 (5).防止敌人坦克重叠运动 (6).玩游戏时可以暂停和继续 (7).记录玩家的成绩
在设计过程中,坦克出现的位置由坐标而定。用户之后的位置由键盘监听 方向,按指定方向以恒定的速度前进——此速度为全局静态变量,当没有接受 到键盘的控制时,则保持静止。敌方的坦克则是根据随机数来控制随机的方向 和路径的,当敌方坦克撞到阻碍物时,会转回到前一步的位置,从而解决了坦 克撞到阻碍物不回头的问题,这个功能由 Tank 类里的 changToOldDir()方法 实现。
具体代码: public boolean hitTanks(List<Tank> tanks) { //当子弹打到坦克时 for (int i = 0; i < tanks.size(); i++) { if (hitTank(tanks.get(i))) { //对每一个坦克,调用 hitTank return true; } } return false; }
t.setLife(t.getLife() - 50); // 受一粒子弹寿命减少 50 接受 4 枪就死,总生命值 200,当然方法里面还要做其他很多的判断,如生 命值是否小于 0,如果是的话就执行 t.setLive(false);从而结束游戏。 坦克的爆炸效果独立出来用一个类来描述,爆炸的属性:位置和存活状态, 另外,画爆炸效果的时候要取得用户界面控制,所以要定义 private static Toolkit tk = Toolkit.getDefaultToolkit();其他的方法只能的大同小异。
相关文档
最新文档