欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计报告坦克大战游戏设计java版.docx

    • 资源ID:884382       资源大小:219.59KB        全文页数:17页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计报告坦克大战游戏设计java版.docx

    1、数据结构课程设计报告 坦克大战游戏设计java版 数据结构课程设计报告 坦克大战游戏设计(java版)组长: 组员: 指导老师: 所在学院: 电子与信息工程学院 班级: 软件工程1001班 1.需求分析 21.1选题的意义及背景 21.2本组课程设计的目标 21.3人员组成 32.设计方案 32.1原始数据 32.2输出数据 32.3对数据的处理 32.4 程序流程图 42.5封装的数据元素 52.6游戏的主要组成 53.详细设计 53.1构建游戏主类 53.2构建坦克类Tank 63.3添加炮弹Missile类 93.4实现坦克的互相攻击 103.5创建Explode类 153.6添加障碍物

    2、 163.7添加血块类 184设计结果与分析 195 设计体会 22坦克大战游戏的设计与实现摘 要:通过此次课程设计,深刻认识了单链表和顺序表的逻辑结构和存储结构,熟练掌握了线性表的存储方式和一些基本操作,如单链表和线性表的建立、求表长操作、取元素操作、按值查找、插入和删除操作等。通过综合运用课程知识来设计一个初具规模的游戏坦克大战。借此熟练了数据结构以及复杂条件语句在游戏中的作用、随机函数在中型游戏中的应用、游戏中状态的概念和切换方法、游戏中速度的实现方法、覆盖和碰撞问题的实现方法、使用API函数和Buffer实现复杂的游戏图像显示以及声音和输入的处理。该游戏设计已经实现以下功能:坦克能力说

    3、明、地图说明、奖励物品说明、游戏操作说明、游戏技术组成、“坦克大战”游戏的创意、控件参数和窗体属性的设置、游戏代码设计等说明。关键词:数据结构 java 游戏设计 函数和变量1.需求分析1.1选题的意义及背景运用数据结构知识,开发一个基于J2SE的游戏-坦克大战1.2本组课程设计的目标培养自己综合利用数据结构进行程序设计的能力,主要是培养自己的综合编程能力。(1)基本实现游戏图形界面,让玩家能看到游戏给出的反馈,让玩家能感受到游戏的乐趣(2)玩家能操纵特定的游戏元素(3)不同队伍的坦克须显示不同的外观,以分辨敌我(4)坦克能够开火攻击敌方,但不能攻击队友(5)需要有不可被子弹穿透的墙,且墙有可

    4、摧毁和不可摧毁两种(6)能够模拟爆炸,实现较美观的爆炸效果(7)坦克有生命值,并非被击中一次就会爆炸(8)游戏中随机出现血块,可以将主战坦克的血量加满1.3人员组成组长:组内成员:2.设计方案2.1原始数据(1)各种坦克的图片,各种墙的图片,基地图片,爆炸的图片,草地图片,河道的图片,药剂的图片。(2)通过键盘操作,进行游戏。2.2输出数据 玩家需要从游戏输出数据中获得游戏信息,如坦克往上行驶,坦克发射了子弹,坦克爆炸等,这些均需要通过游戏数据的输出来告知玩家2.3对数据的处理 本次课程设计主要运用了数据结构中的数组和链表以及向量的存储,2.4 程序流程图 TankClient类2.5封装的数

    5、据元素 窗口:主窗口 TankClient 游戏元素:子弹 Missile,坦克tank,墙壁brickWall,爆炸类explode, 敌人坦克enemyTank,血量Blood,方向Direction,背景音乐sound.2.6游戏的主要组成(1)构建游戏主类(2)构建坦克类Tank(3)添加炮弹Missile类(4)实现坦克的互相攻击(5)创建Explode类(6)添加障碍物(7)添加血块类3.详细设计3.1构建游戏主类 在主类中构建一个主Frame框架,主要代码如下: this.setLocation(200,100);this.setSize(Game_wide,Game_heigh

    6、t);this.setTitle(坦克大战);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );3.2构建坦克类Tank构建主窗口中所需的Tank类,用单链表来存储产生的每一辆坦克并将坦克加到主窗体中,template /建立结构体 定义结点struct Node U data; Node *next; / 也可以省略;template LinkList:LinkList() first=new Node; / 动态分配内存 if(first

    7、=NULL) coutout of memorynext=NULL; / 建立只有头结点的空链表template /用尾插法建立单链表LinkList:LinkList(T a,int n) / 尾插法 first=new Node; / 生成头结点 Node *p=first; / 尾指针初始化 for(int i=0;in;i+) Node *s=new Node; / 为每一个数组元素建立一个结点 s-data=ai; p-next=s; p=s; / 插入到终端结点之后 p-next=NULL;/ 单链表建立完毕,将终端结点的指针域置空 Public void paint(Graphi

    8、cs g) /调用paint方法画坦克 myTank.draw(g);让坦克朝八个方向运动起来,在主类TankClient中启用多线程机制,让系统不断的进行重画。并在Tank类中建立处理按键的方法,实现坦克的手动移动;根据坦克类修改TankClient主类,在主类中注册事件监听器,并调用Tank类中的方法。主类TankClient中使用双缓冲机制消除坦克的闪烁现象。在Tank类当中添加的按键方法,代码如下:public void keyPressed(KeyEvent e) int key = e.getKeyCode(); switch(key) case KeyEvent.VK_LEFT

    9、: bL = true; break; locateDirection(); public void keyReleased(KeyEvent e) int key = e.getKeyCode(); switch(key) case KeyEvent.VK_LEFT : bL = false; break; locateDirection(); TankClient类中的多线程机制的主要代码如下:new Thread(new PaintThread().start();private class PaintThread implements Runnable public void run(

    10、) while(true) repaint();try Thread.sleep(100); catch (InterruptedException e) e.printStackTrace(); 3.3添加炮弹Missile类在Missile类当中添加x,y,dir等属性以及常量。在Missile类当中添加构造方法,draw方法等必要方法。根据不同的方向,子弹要进行不同的运动。在TankClient当中new一颗子弹出来,要用到数据结构单链表的插入方法。template bool LinkList:Insert(T key,int pos) Node *p=first; int j=0; w

    11、hile(p&jpos-1) / 第pos-1个元素 j=1 jnext; j+; if(p=NULL) couterroendl; return false; Node *s=new Node; s-data=key; s-next=p-next; / 向内存申请一个结点s p-next=s; / 将结点s插入到结点p之后 return true;3.4实现坦克的互相攻击(1)让主战坦克出炮弹1)在Tank类当中增加对ctrl键的处理,使每按下ctrl键的时候,坦克打出一发炮弹。case KeyEvent.VK_CTRL : fire(); break;2)根据“坦克打出炮弹”这句话,确定T

    12、ank当中的fire方法,其返回值为Missile。public Missile fire() Missile m = new Missile(x, y, ptDir); return m; 3)为了解决坦克停下来也能开火的问题给坦克加一炮筒,根据炮筒方向和 位置设定子弹的方向和位置并new出来,然后返回,每次move之后根据Tank的新方向确定炮筒的方向。if(this.dir != Direction.STOP) this.ptDir = this.dir;4)为了能够打出多发炮弹,使用容器填装多发炮弹,每当抬起Ctrl键的时候就往容器中加入新的炮弹List missiles = new

    13、ArrayList();5)解决炮弹不消亡的问题,加入控制炮弹生死的量live,当炮弹已经死去就不需要对其重画,当炮弹飞出边界就死亡,当炮弹死亡就从容器中移去,移除用到了单链表的delete方法template bool LinkList:Delete(int pos) Node *p=first; int j=0; while(p&jpos-1)/ 查找第i-1个结点 j=1 jnext; j+; if(!p|!p-next) / 结点p或结点p的后继结点不存在 couterrorendl; return false; else Node *q=p-next; T x=q-data; / 暂存被删结点 p-next=q-next; / 摘链 delete q; cout被删结点元素是:xendl; return true; / 通过边界条件判定是否移除if(x 0 | y TankClient.GAME_WIDTH | y TankClient.GAME_HEIGHT) live = false; public void draw(Graphics g)


    注意事项

    本文(数据结构课程设计报告坦克大战游戏设计java版.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开