文档库 最新最全的文档下载
当前位置:文档库 › 游戏设计实验报告

游戏设计实验报告

游戏设计实验报告
游戏设计实验报告

游戏设计

目录

第一章引言 (5)

第二章需求分析 (8)

2.1 系统开发目标 (8)

2.2 系统需求分析 (8)

2.2.1 业务需求分析 (8)

2.2.2 用户需求分析 (9)

2.2.3 功能需求分析 (9)

第三章系统概要设计 (10)

3.1 背景故事 (10)

3.2游戏程序流程设计 (11)

图3.2 游戏程序流程图 (12)

第四章系统详细设计 (12)

4.1画面和切换 (12)

4.2 定义游戏世界 (14)

4.3 系统功能模块 (16)

4.4 储存素材 (17)

4.5游戏界面 (18)

4.6 分数榜设定 (19)

4.7游戏总控制 (21)

4.8 游戏设置 (22)

第五章软件运行与测试 (22)

5.1系统测试 (22)

5.1.1 游戏页面显示 (22)

5.1.2 移动主角测试 (23)

5.1.3 主角碰到金币测试 (23)

5.1.4 判定结束测试 (23)

5.1.5 暂停测试 (23)

5.1.6 恢复测试 (23)

5.1.7 压力测试 (23)

5.2 结果分析 (24)

第六章结论 (24)

第一章引言

安卓游戏是运行在安卓系统平台的游戏,随着移动终端设备的发展,安卓游戏不但可以运行于智能手机,也可以运行在平板电脑上。安卓游戏的系统架构和其它操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。Android开放的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系

统等建立应用软件的开发工具的集合。Android SDK 指的是Android专属的软件开发工具包。

libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C++语言编写而成。ibgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac、Linux、Windows等系统,最近加入了对html5的支持)与Android平台(Android1.5以上即可使用,Android2.1以上可满功率发挥)。Libgdx以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖Android的Bitmap加载处理图像,可以支持png、jpg、bmp,最近的两个版本中加入了对gif图片的支持.Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要类库所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件(3D部分目前无组件),以及Libgdx内置工具类。

Gdx是Libgdx类库运行的核心所在,不单运行Graphics、Input、Files、Audio、AndroidApplication等Libgdx关键部分,所必需的实例会在Libgdx初始化时注入Gdx中对应的graphics、input、files、audio、app等静态变量里面,就连Libgdx对OpenGL 接口(或OpenGLES,视Libgdx运行平台而定,以下统称OpenGL)的GL10、GL11、GL20、GLCommon等封装类也会在Graphics 实例化时分别注入到gl10、gl11、gl20、gl这四个同样位于Gdx

的静态变量当中。

第二章需求分析

这是一款跳跃型的游戏,主人物会一直往上跳,我们只需控制左右移动让其踩在适当的跳台上即可继续的往上跳,最终加到的金币越多,同时要避开飞在空中的蜜蜂,直到到达最顶部的城堡,才进入下一关。

2.1 系统开发目标

采用基于Android的Java编程技术,以及用Libgdx框架的相关技术开发出界面简洁清新,易操作,细节精致,设置齐全的SupperJumper游戏。

2.2 系统需求分析

2.2.1 业务需求分析

总所周知,SupperJumper是一款经典不过时的游戏,它无论在电脑,小霸王,手机都有它的身影,即使现在市场上各种游戏百花齐放,各种各样,但是SupperJumper依然能够占有一席之地,其市场还是很大的.这是由于它的特殊在于它能吸引人更深入,简单上手,该游戏的优势在于它的简单易行,不论是小游戏机,还是手机,都能很快顺利的运行.

2.2.2 用户需求分析

游戏设计出来后,其质量还是要由用户来评判的,在游戏为用户所用时,用户也对游戏有自己的期望和要求。

(1) 简单易学

每个人的时间都是宝贵的,用户不愿意花一大堆时间去学习如何玩意个游戏,因此游戏必须很容易上手,要求界面简洁明了,否则太复杂难懂的话会让很多客户离去。

(2) 运行稳定

一个游戏如果设计出来却不能保证其稳定性,那么就可能使游戏无法正常运行。如果用户正在游戏突然软件崩溃了,无疑会让用户感到烦躁,从而把软件给卸载了,这样也会失去很多用户。

(3) 操作简便

用户之所以选择SupperJumper,就是由于其快捷简便性,所以我们要让用户玩的舒心则必然要设计出一套操作简便的系统。

2.2.3 功能需求分析

本项目是一个运行在安卓手机上的游戏,我们初步设定本游戏具有以下几个功能。

?游戏的主角不断向上跳跃,从一个平台跳到另一平台。游戏世界在垂直方向跨了多个画面。

?通过左右倾斜屏幕来控制水平移动。

?当游戏主角离开水平屏幕边界时,它将从屏幕相反的一边重新进入。

?平台可以静止或者水平移动。

?有些平台在主角撞上时会随机地变得粉碎。

?在向上的路上,主角可以收集物品来获得分数。

?除了钱币,在一些平台上会有弹簧,它们可以使主角跳得更高。

?邪恶的力量充满了游戏世界,它们水平移动。当碰上它们时,主角将死亡并且游戏结束。

?当主角掉落到屏幕的底部边缘时,游戏也将结束。

?在关卡的顶部会有一些目标,当主角碰上目标,新的关卡将开始。

?当游戏结束后,显示玩家在游戏中所获得的分数。

第三章系统概要设计

3.1 背景故事

游戏的主角得了慢性跳跃症。他每次接触到地面都必须进行跳跃。更糟的是,他深爱的公主(不给她取名字了)被会飞行的松鼠杀手组成的邪恶军队绑架,关在天上的一个城堡中。在这种情况下,主角的病症反而对拯救公主有所帮助。他开始寻觅心爱的

人,与邪恶的松鼠军队战斗。

图3.1 初始的游戏机制实物模型,显示了主角、平台、钱币、

邪恶势力和关卡顶部的目标

3.2游戏程序流程设计

本游戏程序流程图如图3.2所示。

图3.2 游戏程序流程图

第四章系统详细设计

4.1画面和切换

?有一个带标识的主画面;有PLAY、HIGHSCORES和HELP 菜单项;并有一个按键来控制声音的开启和关闭。

?有一个游戏画面来询问玩家是否准备好控制运行、暂停、

结束游戏和下一关卡的状态。比起Mr. Nom,这里只是新增了画面的下一关卡状态,它将在主角碰到城堡时触发。这时新的关卡生成,并且主角将重新从世界的底部开始并保持他的分数。

?有一个高分画面用来显示玩家最高的5个分数。

?有一个帮助画面来说明游戏机制和玩家的目标,此处省略了玩家如何进行控制的描述。

图4.1 Super Jumper的所有画面和切换

4.2 定义游戏世界

在世界空间中按物理规律定义了对象,其边界形状和位置的度量单位是米,速度的度量单位是米/秒。但对象的图像表示使用像素定义,因此不得不做一些映射。解决这个问题的方法是首先针对图像资源定义目标分辨率。与Mr. Nom一样,此处使用的目标分辨率是320×480像素(纵横比是1.5)。之所以使用这个目标分辨率,是因为这是最低的可行的分辨率,但是如果游戏专门针对平板电脑,则可以使用800×1 280像素这样的分辨率,或者这两种分辨率之间的一种分辨率,例如480×800像素(典型的Android手机)。不管目标分辨率如何,其原理是相同的。

接下来在像素和世界空间中的米之间建立对应关系。图3.1中的实物模型显示了不同对象使用的画面空间的大小以及它们

间的相对比例。对于2D游戏,此处推荐将32像素映射为1米。那么现在在实物模型上覆盖一个网格,网格的尺寸是320×380像素,每个单元格大小是32×32像素。在世界空间中,单元格映射为1×1米的大小。图4.2显示的是实物模型和网格。

图4.2覆盖网格的实物模型。每个单元格是32×32像素,

对应游戏世界的1×1米

?Bob是0.8×0.8米;它并不完全占用一个单元格。

?平台是2×0.5米,水平占据两个单元格,垂直占据半个单元格。

?钱币是0.8×0.5米。它几乎垂直占据一个单元格,水平占据半个单元格。

?弹簧是0.5×0.5米,在两个方向上各占据半个单元格。实际上弹簧垂直方向比水平方向要稍长一点。它的边界形状是正方形,因此碰撞测试不是十分严格。

?松鼠是1×0.8米。

?城堡是0.8×0.8米。

由这些尺寸可以得到用于碰撞检测的对象的边界矩形的尺寸。它们的大小可以根据游戏对这些值的使用方式进行调整。

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

软件测试 扫雷游戏

软件测试 实验报告(20 15 -20 16 学年第 2学期) 学号: 学生姓名: 专业班级: 学院: 学生成绩:

1.引言 1.1编写目的 编写该测试报告目的为: (1).查找并总结该模块程序所存在的问题; (2).为更改存在的问题,提供参考。 (3).评估测试测试执行和测试计划是否符合 1.2 程序功能 扫雷游戏中各个功能实现 1.3 测试对象 扫雷软件游戏规则测试 1.4 测试方法 黑盒测试 2.测试计划 2.1、条件: ?方块当前状态:标识问号方块、方块初始状态、方块标识红旗、 标识数字X且周围已标记了X个雷、标识数字X且周围没有标记完X个雷,标识数字X标雷错误 ?鼠标操作:左键、右键、双击 ?方块状态:有雷、无雷 2.2、动作: ?方块白色 ?方块标识问号 ?方块标识数字 ?方块旗子 ?炸弹爆炸,游戏结束

?未标识方块闪速 ?周围所有的非雷显示 2.4、简化公式: 6*3*2 =(1+1+1+1+1+1)*3*2 =1*3*2+1*2*2+1*3*2+1*1*1+1*1*1+1*1*1 =6+4+6+1+1+1 =19

3.测试结果分析 3.1结果分析 在程序代码基本完成后,经过不断的调试和修改,最后测试本次所设计的扫雷游戏能够正常运行,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,总的来说本次设计在功能上已经基本达到要求,在其他细节方面有待以后完善。 3.2 修改建议 1.在游戏中可以假如一些声音的提示,在游戏完成和失败的时候弹出一些小 的Flash动画。 2.完善一下扫雷英雄榜等。 4.测试评估 4.1测试任务评估 本次测试执行准备充足,完成了既定目标。 4.2 测试对象评估 测试对象尚未完善,不符合现阶段测试质量要求,存在着一些缺陷,本测试需要进一步修正,重新进行测试。

机械设计综合实验指导书与实验报告

机械设计综合实验指导书 及实验报告 班级 学号 姓名 机械基础实验中心雷代明 2017年3月 第一部分机械设计

实验一机械零件认知与分析实验 一、实验目的 1、熟悉常用的机械零件的基本结构,以便对所学理论知识产生一定的感性认识。 2、分析常用机械零件的基本构造及制造原理。 3、了解常用机械零件的实际使用情况。 二、实验内容 通过观察,掌握常用的机械零件的基本结构及应用场合。 三、实验简介 机械零件陈列观摩,共包括: (1)螺纹联接与应用 (2)键、花键、销、铆、焊、铰接 (3)带传动 (4)链传动 (5)齿轮传动 (6)蜗杆传动 (7)滑动轴承与润滑密封 (8)滚动轴承与装置设计 (9)轴的分析与设计 (10)联轴器与离合器。 共10个陈列柜,罗列了机械设计内容中大多数常用的基本零件与标准件,并对相应的零件进行了结构和基本受力分析,联接和安装的基本方法的说明,有些常用的零件还给出了简单的应用举例。 通过本实验的观摩,学生可以对照书本所学的基本内容,初步领会机械设计的一些常用零部件的基本设计与应用原理,从而达到举一反三的教学目的,对其所学的课本理论知识进一步巩固和深化。 四、实验要求 1、学生必须带上课本,以便于与书本内容进行对照观察。 2、进入实验室必须保持安静,不得大声喧哗,以免影响其他同学。 3、不得私自打开陈列柜,不得用手触摸各种机械零件模型。 4、服从实验人员的安排,认真领会机械零件的构造原理。 五、思考题 1、常用螺纹联接的方法有哪些? 2、说明无键联结的优缺点. 3、在带传动中,带张紧的方法有哪些?

4、轴上零件轴向常用的定位方法有哪些?举例说明。 第二章滑动轴承实验 实验二滑动轴承基本性能实验 一、概述 滑动轴承用于支承转动零件,是一种在机械中被广泛应用的重要零部件。根据轴承的工作原理,滑动轴承属于滑动摩擦类型。滑动轴承中的润滑油若能形成一定的油膜厚度而将作相对转动的轴承与轴颈表面分开,则运动副表面就不发生接触,从而降低摩擦、减少磨损,延长轴承的使用寿命。 根据流体润滑形成原理的不同,润滑油膜分为流体静压润滑(外部供压式)及流体动压润滑(内部自生式),本章讨论流体动压轴承实验。 流体动压润滑轴承其工作原理是通过轴颈旋转,借助流体粘性将润滑油带入轴颈与轴瓦配合表面的收敛楔形间隙内,由于润滑油由大端入口至小端出口的流动过程中必须满足流体流动连续性条件,从而润滑油在间隙内就自然形成周向油膜压力(见图2-1),在油膜压力作用下,轴颈由图2-1(a)所示的位置被推向图2-1(b)所示的位置。 当动压油膜的压力p在载荷F方向分力的合力与载荷F平衡时,轴颈中心处于某一相应稳定的平衡位置O1,O1位置的坐标为O1(e,φ)。其中e=OO1,称为偏心距;φ为偏位角(轴承中心0与轴颈中心0l连线与外载荷F作用线间的夹角)。 随着轴承载荷、转速、润滑油种类等参数的变化以及轴承几何参数(如宽径比、相对间隙)的不同,轴颈中心的位置也随之发生变化。对处于工况参数随时间变化下工作的非

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.wendangku.net/doc/6616948938.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号: 2015年12月16日

目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;

贪吃蛇小游戏实验报告[

软件设计报告 设计题目:贪吃蛇 学院:华北电力大学科技学院 专业班级:软件10K1 学生姓名:张飞 学生学号:101909020122 指导教师:乔玲玲 提交时间: 成绩: - 0 -

目录 一.需求分析 二.概要设计 三.详细设计 四.心得体会 一.需求分析 1.1关于题目 1.1.1题目要求 利用Microsoft Visual C++制作一个贪吃蛇的小游戏,要求: (1)应用MFC单文档制作 (2)能够记录游戏成绩 (3)可根据玩家要求设置游戏速度(级别):初级,中级,高级 (4)可以根据个人喜好更换背景图片,食物图片,障碍物图片,结束图片等 1.1.2选题背景 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。 1.2关于编译软件 本程序采用Microsoft Visual C++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。 - 1 -

- 2 - 1.3关于兼容性 本程序经过调试,可以在XP 系统下编译运行,也可以在Vista 下运行,界面稍有不同,但不影响运行结果。 二. 概要设计 2.1软件主要功能设计 2.1.1程序结构 根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、停止游戏,设置游戏级别(速度),设置图片等。具体的程序结构如下面的图1-1所示。 图2-1 贪吃蛇结构图 2.1.2程序流程 根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括: 游戏开始,随机出现食物。 贪吃蛇 游 戏开始 游戏设置 游戏结束 开始 初级 中级 高级 结束

游戏C语言实验报告

嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇

目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................

高级编程技术课程实验报告-扫雷游戏

高级编程技术课程实验报告 班级通信一 班 姓名陈远春学号201100120084 课程实验内容 扫雷游戏,是Windows操作系统自带的一款经典游戏。其规则简单,上手容易,不论男女老少皆可娱乐。扫雷的目的就是要把所有非地雷的格子揭开即胜利。踩到地雷格子就算失败。 设计的扫雷游戏应包含以下功能:能够显示主菜单和界面;能够接收鼠标输入功能;能够根据规则翻转相应的格子;能够标记指定格子的功能;游戏胜负判断功能;游戏支持背景音乐功能;游戏提供帮助说明。 设计分工安排 本程序由三人共同完成。 其中我主要负责程序代码编写调试和上台讲解方面的工作。 其余两个主要负责游戏设计部分模块的工作。 一、系统概述 扫雷游戏,是Windows操作系统自带的一款经典游戏。其规则简单,上手容易,不论男女老少皆可娱乐。扫雷的目的就是要把所有非地雷的格子揭开即胜利。踩到地雷格子就算失败。 本设计的扫雷游戏包含以下功能:能够显示主菜单和界面;能够接收鼠标输入功能;能够根据规则翻转相应的格子;能够标记指定格子的功能;游戏胜负判断功能;英雄榜记录更新;游戏支持背景音乐功能;游戏提供帮助说明。 二、需求分析 随着世界经济的长足发展和计算机技术的日益成熟,计算机被应用到人类活动的各个领域,各种应用软件也相继问世,这其中有相当一部分是游戏软件。使用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用3D设计对系统配置的要求较高。 在众多游戏软件中,也不乏一些小游戏的身影,它们对系统的配置要求较低。能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。在各种操作系统中都附带了一些小的游戏,而这些游戏也成为电脑用户软件中不可或缺的一部分。 扫雷游戏是比较经典的一款小游戏,过去的几年里Windows操作系统历经数次换代,变得越来越庞大、复杂,但这个可爱的小游戏在任何版本的Windows操作系统里去却依然保持着原貌。但几乎每个电脑使用者都接触过它,并且深爱着这款小游戏。

微机综合设计实验报告

微机接口实验报告 学院:计算机与通信工程学院专业:计算机科学与技术 班级: 学号: 姓名: 综合设计实验

带分频的AD转换 实现功能: 利用8254实现分频功能,再利用AD0809实现数模转换功能。 设计思路: 首先利用8254芯片的计时功能,将CLK0端输入的1MHz的脉冲信号分频为0.1MHz的脉冲,并且从OUT0端输出,然后将输出的脉冲信号作为AD0809数模转换单元的输入信号,从而实现8254的分频功能和AD0809的数模转换功能。 设计接线图: 实验代码: (加粗为分频部分代码,未加粗为AD转换部分代码) IO8254_MODE EQU 283H ;8254控制寄存器端口地址 IO8254_COUNT0 EQU 280H ;8254计数器0端口地址 IO0809 EQU 298H ;AD0809DE STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, IO8254_MODE ;初始化8254工作方式 MOV AL,37H ;计数器0,方式3 00110111 OUT DX,AL MOV DX,IO8254_COUNT0 ;装入计数初值 MOV AX,000AH ;10D=0AH(可以自己设计分频倍数或者利用多个计数器实现更大倍数的分频) MOV AL,03H

OUT DX,AL MOV AL,AH OUT DX,AL MOV DX, IO0809 ;启动A/D转换器 OUT DX, AL MOV CX, 0FFH ;延时 DELAY: LOOP DELAY IN AL, DX ;从A/D转换器输入数据 MOV BL,AL ;将AL保存到BL MOV CL, 4 SHR AL, CL ;将AL右移四位 CALL DISP ;调显示子程序显示其高四位 MOV AL, BL AND AL, 0FH CALL DISP ;调显示子程序显示其低四位 MOV AH, 02 MOV DL, 20H ;加回车符 INT 21H MOV DL, 20H INT 21H PUSH DX MOV DL, 0FFH ;判断是否有键按下 MOV AH, 06H INT 21H POP DX JE START ;若没有转START MOV AH, 4CH ;退出 INT 21H DISP PROC NEAR ;显示子程序 MOV DL, AL CMP DL, 9 ;比较DL是否>9 JLE DDD ;若不大于则为'0'-'9',加30h为其ASCII码 ADD DL, 7 ;否则为'A'-'F',再加7 DDD: ADD DL,30H ;显示 MOV AH, 02 INT 21H RET DISP ENDP CODE ENDS END START

游戏实验报告

游 戏 程 序 设 计 计算机科学学院 教育技术学1班 刘文举 41109020114

CF优缺点对比首先,他们都是第一人称射击游戏。 最大的区别,除了各自应用技术不同之外,CS可以看成是一款单机游戏。而CF只能算是网络游戏。假若你要优缺点,就看你是想从哪方面看CS和CF优缺点了。 那么咱们就先从争议最多的武器装备和作弊的方面说吧。从武器装备的选择和分配上看,CF作为一款网络游戏,赚钱是必须的。倘若你花费金钱依旧不能从一定程度上提升实力,那恐怕就不会有人购买你的武器吧?所以,CF武器基本上就分了两类。RMB购买的超武器和平民用的普通武器.两者武器性能比自然不用多说。 由此引出很多争议,有钱就是大爷?很遭歧视。特别是一些会员特权,同样是令人憎恨。可不管怎么说,人家是要钱的.从这个观点的优点讲,CF其实是为肯出钱玩游戏的玩家"优"的。在这里,可以用金钱弥补你的实力差。人家就是收取费用提供服务的.那对于高手而言是没有什么问题的,但是对于小鸟们而言呢,cs相对比较平衡,在大家的印象里,CS差不多刚开始都是在局域网的吧,更多的考验的是你的实力.来不得半点马虎。没有实力,只有挨虐.但也只有被虐了,才能成长。从这个角度看,CS是为提升实力"优"的。它相比较CF,有更公平的游戏环境。 咱们再谈谈作弊。不晓得为什么,CF作弊的很多,很多,很多。但是CS 相比下,却是少的多。就我个人感觉,可能就是因为CF游戏很容易让玩家不平衡。感觉输得不服,而且很多一些,都是实力不错的玩家惨死。原因就是没有那些恐怖的武器。 再来谈谈CF的的新模式,的确,CF的幽灵模式独树一帜。很吸引人.是CS 所没有的。也是CF的主打招牌,也是吸引人的优点,但是倒退十年,CS 本身就是射击类游戏的优点集中。是它开启了射击类游戏的先河,并引导产生并掀起了诸如CF特种部队,彩虹七号,等等以第一人称射击类为主的游戏狂潮。从这点讲,CF仅仅只是CS射击游戏基础上闪亮的一棵果实.而CS,就可能是这棵大树的主干吧。

Java程序设计实验报告2(弹球游戏)[1]1

《Java语言程序设计》课程设计 实习报告 题目: 班级: 学号: 姓名: 同组人员: 指导老师:张彬

一、实验目的 1、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。 2、掌握多线程编程的基本原理,能使用Runnable、ExecutorService等接口进行 线程的创建、启动等工作。 3、培养独立查找资料,并解决问题的能力。 二、实验任务 1、设计并编程实现弹球游戏: 用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。 鼠标在界面中显示为方块状,玩家需按住鼠标来回移动以避开运动的小球及屏幕四周,如果鼠标碰到任一小球或者窗口四周,则游戏结束。 程序需提供计时功能,并最终显示玩家能坚持多少秒。 2、程序要求: (1)具备相应界面,并通过事件编程,实现相应的GUI组件功能。 (2)使用多线程技术,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。 (3)实现鼠标与屏幕四周,以及与小球的碰撞检测。 三、开发工具与平台 1.开发工具:Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只

是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。如C/C++插件(CDT)。 2.开发平台:JDK1.5 四、设计思路 1.界面设计 (1)制作一个简单的面板JFrame,文件保存为bollFrame.java 其中为一public的类bollFrame,其构造方法为: bollFrame(int n){ super(); setTitle("我的弹球小游戏"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();//得到电脑屏幕大小 setSize(450,450); setLocation((dimension.width-game.getWidth())/2-250, (dimension.height-game.getHeight())/2-250);//设置面板显示基中; this.n = n; myBollPanel = new bollPanel(n);//构造一个画板; add(myBollPanel);//将画板放入JFrame createMenu();//创建菜单; setJMenuBar(bar); } (2)构造画板类,文件保存为bollPanel.java 其构造函数如下: bollPanel(int n){ this.n = n; // executorThread = Executors.newCachedThreadPool();//创建线程池; mouse = new mouseThread(mxNow,myNow,groupThread,this);//启动鼠标线程; this.setIsOver(false);//游戏开始线程条件的判断; for(int i =0 ;i

计算机操作系统综合设计实验报告实验一

计算机操作系统综合设计 实验一 实验名称:进程创建模拟实现 实验类型:验证型 实验环境: win7 vc++6.0 指导老师: 专业班级: 姓名: 学号: 联系电话: 实验地点:东六E507 实验日期:2017 年 10 月 10 日 实验报告日期:2017 年 10 月 10 日 实验成绩:

一、实验目的 1)理解进程创建相关理论; 2)掌握进程创建方法; 3)掌握进程相关数据结构。 二、实验内容 windows 7 Visual C++ 6.0 三、实验步骤 1、实验内容 1)输入给定代码; 2)进行功能测试并得出正确结果。 2、实验步骤 1)输入代码 A、打开 Visual C++ 6.0 ; B、新建 c++ 文件,创建basic.h 头文件,并且创建 main.cpp 2)进行功能测试并得出正确结果 A 、编译、运行main.cpp B、输入测试数据 创建10个进程;创建进程树中4层以上的数型结构 结构如图所示:。

createpc 创建进程命令。 参数: 1 pid(进程id)、 2 ppid(父进程id)、3 prio(优先级)。 示例:createpc(2,1,2) 。创建一个进程,其进程号为2,父进程号为1,优先级为2 3)输入创建进程代码及运行截图 4)显示创建的进程

3、画出createpc函数程序流程图 分析createpc函数的代码,画出如下流程图:

四、实验总结 1、实验思考 (1)进程创建的核心内容是什么? 答: 1)申请空白PCB 2)为新进程分配资源 3)初始化进程控制块 4)将新进程插入到就绪队列 (2)该设计和实际的操作系统进程创建相比,缺少了哪些步骤? 答:只是模拟的创建,并没有分配资源 2、个人总结 通过这次课程设计,加深了对操作系统的认识,了解了操作系统中进程创建的过程,对进程创建有了深入的了解,并能够用高 级语言进行模拟演示。一分耕耘,一分收获,这次的课程设计让 我受益匪浅。虽然自己所做的很少也不够完善,但毕竟也是努 力的结果。另外,使我体会最深的是:任何一门知识的掌握, 仅靠学习理论知识是远远不够的,要与实际动手操作相结合才能 达到功效。

游戏开发实验报告

实验报告 课程名称:多媒体技术 实验题目:用Unity开发设计打靶游戏系别:计算机学院 专业:计算机科学与技术 班级:计科1303 学号:2013011204 姓名:赵雨阳 指导教师:申闫春 实验日期:2016年06月24日

一、实验目的: 通过本次实验使学生掌握用Unity开发射击打靶游戏的基本方法,学会在虚拟世界添加灯光、材质、刚体等物体对象,学会用Javascript编写游戏程序,学会添加天空盒子、设置碰撞检测、发布游戏等编程能力。 二、实验要求: 1、开发出实验内容要求的程序。 2、写出上机实验报告,并写出自己调试程序的心得体会。 三、部分实验操作过程及源程序 1、首先在电脑上安装Unity3D,这是本课程需要的游戏开发制作引擎。 2、接下来打开U3D准备创建游戏工程。详细步骤如下 启动Unity,双击桌面Unity,Create New Project,(在D盘建u3d01文件夹),Browse,选D:\u3d01\sheji,Create, !!!去掉“check for updates”的对勾,单击skip new vertion,关闭welcome to unity。 3、在D盘建u3d01文件夹。在层次面板,create,3d object,cube,选中,F2改名,dimian, 创建地面:建立方体cube,按F2键改名,为dimian,按F键聚焦显示物体,鼠标中轮放大缩小,按住平移, 把物体放到原点(0,0,0),用transform(位置)变换,直接输入0,0,0,或单击设置齿轮,选reset,按F键聚焦, 拉伸scale成地面:改x100,y1,z100,按F键聚焦,完成地面。 4、创建一个砖块,用于砌墙,按F2改名zhuankuai,并且添加质量以及为场景添加灯光,在层次窗口创建源,对齐主摄像机,对齐视图,可以看齐砖块了,单击运行,看到砖块后选中砖块,添加刚体组件。之后块添加颜色或材质,选中物体,建立材质,材质可以赋给物体。 5、创建一个脚本之前,首先创建一个球体作为射弹,改名为:射弹,制成预制物体,可以重复使用。创建脚本赋给主摄像机作为射击用,改名叫sheji,并编写第一个代码:功能是控制主摄像机在场景中移动,按W键向前移动,按S键向后移动,按A键向左移动,按D键向右移动,或同时让4个光标移动键同样有移动功能。 6、下是游戏所需要的代码。 #pragma strict function Start() { } var speed : int =5; var newobject:Transform; function Update() { var x:float =Input.GetAxis("Horizontal")*Time.deltaTime*speed; var z:float

java_扫雷_课程设计_报告

《JAVA程序设计》 课程设计报告 系别:计算机与电子系 专业班级:计算机科学与技术0803班 学生姓名:曾一墙 指导教师:徐鹏 (课程设计时间:2011年6月13日——2011年6月24日) 华中科技大学武昌分校

课程设计报告撰写内容、格式与成绩评定 一、课程设计报告的撰写内容与要求 1.课程设计总结报告应包括:前言、基本原理或理论、设计计算书或实验报告、结论、图纸(框图、流程图)、参考资料等;或调查、访谈报告、调查问卷、调查提纲等。 2.课程设计总结报告应书写工整,文句通顺、精炼、逻辑性强,图纸和曲线的绘制应符合规范。 3.调查型课程设计应根据调查结果撰写调查报告。调查报告内容包括:题目、参加时间、地点、方式、过程、调查对象一般情况、调查内容、发现的问题、调查结果和调查分析及体会等。调查报告要求语言简练、准确;叙述清楚、明白;数据、资料可靠;结论有理、有据。 4.图纸应布局合理,比例恰当,线条分明,字体工整,符合国家制图标准。 5.课程设计报告字数要求:理工、艺术类不少于2000字,其他专业不少于3000字。 二、课程设计成绩评定 1.学生的课程设计成绩由平时成绩、业务考核成绩两部分组成,均为百分制记分,其中平时成绩占总成绩的30%,业务考核成绩占70%。业务考核含设计报告(计算说明书、调查提纲、调查问卷等)、绘制的图纸、编制的软件、制作的模型、撰写的论文或问卷统计、调查分析等的完成及质量情况;平时成绩含设计表现、到课率等。 2. 教师按学生实际成绩(百分制,含平时成绩和业务考核成绩两部分)登记并录入教务MIS系统,由系统自动转化为“优秀(90~100分)、良好(80~89分)、中等(70~79分)、及格(60~69分)和不及格(60分以下)”五等。

电子电路综合设计实验报告

电子电路综合设计实验报告 实验5自动增益控制电路的设计与实现 学号: 班序号:

一. 实验名称: 自动增益控制电路的设计与实现 二.实验摘要: 在处理输入的模拟信号时,经常会遇到通信信道或传感器衰减强度大幅变化的情况; 另外,在其他应用中,也经常有多个信号频谱结构和动态围大体相似,而最大波幅却相差甚多的现象。很多时候系统会遇到不可预知的信号,导致因为非重复性事件而丢失数据。此时,可以使用带AGC(自动增益控制)的自适应前置放大器,使增益能随信号强弱而自动调整,以保持输出相对稳定。 自动增益控制电路的功能是在输入信号幅度变化较大时,能使输出信号幅度稳定不变或限制在一个很小围变化的特殊功能电路,简称为AGC 电路。本实验采用短路双极晶体管直接进行小信号控制的方法,简单有效地实现AGC功能。 关键词:自动增益控制,直流耦合互补级,可变衰减,反馈电路。 三.设计任务要求 1. 基本要求: 1)设计实现一个AGC电路,设计指标以及给定条件为: 输入信号0.5?50mVrm§ 输出信号:0.5?1.5Vrms; 信号带宽:100?5KHz; 2)设计该电路的电源电路(不要际搭建),用PROTE软件绘制完整的电路原理图(SCH及印制电路板图(PCB 2. 提高要求: 1)设计一种采用其他方式的AGC电路; 2)采用麦克风作为输入,8 Q喇叭作为输出的完整音频系统。 3. 探究要求: 1)如何设计具有更宽输入电压围的AGC电路; 2)测试AGC电路中的总谐波失真(THD及如何有效的降低THD 四.设计思路和总体结构框图 AGC电路的实现有反馈控制、前馈控制和混合控制等三种,典型的反馈控制AGC由可变增益放大器(VGA以及检波整流控制组成(如图1),该实验电路中使用了一个短路双极晶体管直接进行小信号控制的方法,从而相对简单而有效实现预通道AGC的功能。如图2,可变分压器由一个固定电阻R和一个可变电阻构成,控制信号的交流振幅。可变电阻采用基极-集电极短路方式的双极性晶体管微分电阻实现为改变Q1电阻,可从一个由电压源V REG和大阻值电阻F2组成的直流源直接向短路晶体管注入电流。为防止Rb影响电路的交流电压传输特性。R2的阻值必须远大于R1。

《程序设计课程设计》实验报告材料

《程序设计》课程设计 姓名: 学号: 班级:软件工程14 班 指导教师: 成绩:

1.消除类游戏 1.1【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 1.2【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 1.3【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 1.4【功能实现】 #include #include using namespace std;

int main() { int m, n, i ,j; int temp; cin >> n >> m; temp = m; m = n; n = temp; int * map = new int[m * n]; int * mark = new int[m * n]; int * tmap = map; int * tmark = mark; int dif = 0; //输入 for ( i = 0 ; i < m ; i++ ) for (j = 0; j < n; j++) cin >> *(tmap + i * n + j); for (i = 0; i < m; i++) for (j = 0; j < n; j++) { //横行 if ((tmap + 2 - map) % n != 0 || (tmap + 1 - map) % n != 0) if (*(tmap) == *(tmap + 1) && * (tmap + 1) == *(tmap + 2)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + 1) = 0; *(tmark + dif + 2) = 0; } //竖列 if (tmap + 2 * n - map < m * n || tmap + n - map < m * n) if (*(tmap) == *(tmap + n) && * (tmap + n) == *(tmap + 2 * n)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + n) = 0; *(tmark + dif + 2 * n) = 0; } tmap = map + (j+1) + i * n; } //输出 cout << endl; tmap = map; for (i = 0; i < m; i++)

吉林大学无机化学研究生化学综合设计实验报告--全

化学综合和设计实验 实验报告 姓名:李玲云 学号:2014332036 专业:无机化学

扫描电子显微镜和EDS能谱演示实验 一、实验目的 1、初步了解扫描电子显微镜的工作原理、基本构造、操作及用途 2、掌握样品的制备方法 二、扫描电子显微镜的工作原理及用途 从电子枪阴极发出的直径20cm~30cm的电子束,受到阴阳极之间加速电压的作用,射向镜筒,经过聚光镜及物镜的会聚作用,缩小成直径约几毫微米的电子探针。在物镜上部的扫描线圈的作用下,电子探针在样品表面作光栅状扫描并且激发出多种电子信号。这些电子信号被相应的检测器检测,经过放大、转换,变成电压信号,最后被送到显像管的栅极上并且调制显像管的亮度。显像管中的电子束在荧光屏上也作光栅状扫描,并且这种扫描运动与样品表面的电子束的扫描运动严格同步,这样即获得衬度与所接收信号强度相对应的扫描电子像,这种图象反映了样品表面的形貌特征。第二节扫描电镜生物样品制备技术大多数生物样品都含有水分,而且比较柔软,因此,在进行扫描电镜观察前,要对样品作相应的处理。扫描电镜样品制备的主要要求是:尽可能使样品的表面结构保存好,没有变形和污染,样品干燥并且有良好导电性能。 在高压(2~20kV)的作用下,利用聚焦得到非常细的高能电子束,使其在试样上扫描(电子束与试样表层物质相互作用),激发出背散射电子、二次电子等信息,通过对上述信息的接收、放大和显示

成像,对试样表面进行分析。 根据量子力学理论,物质中存在着隧道现象,电子可以通过隧道穿过一个能级高度大于其总能量的势垒而出现在势垒的另一侧。因此,物质的表面电子可以借助隧道作用散逸出来,在物质表面附近形成电子云。在导体表面电子云中某位置的电子几率密度,会随着此位置与表面距离的增大而以指数形式迅速衰减。 扫描电子显微镜被广泛应用于材料科学、生物医学、信息产业、地质、石油化工和其它相关学科领域。是在微观尺度范围内,对样品的形貌进行观察、分析和测量的工具。现在的扫描电子显微镜,在配备相应附件后,可以获得试样表面的化学成分,晶体缺陷、电势、磁场及晶体取向等信息,是对固体物质表层进行综合分析的仪器。 吉林大学无机合成与制备化学国家重点实验室拥有场发射扫描电子显微镜。该显微镜通过接收二次电子信息来对样品表面形貌进行分析。显微镜的扫描倍数从25到650000倍,最大分辨率可达到1nm。显微镜有Oxford的能谱附件,可以进行样品的能谱测试。该显微镜不能对具有较强磁性的物质进行分析。 三、扫描电子显微镜的构造 1、电子光学系统(镜筒) 电子枪、三个电磁透镜、扫描线圈、试样室 电子枪中的灯丝产生高能电子束,电子枪的引出电压直接反映了灯丝状态的好坏(5kV~8kV不等)。每次实验都必须注意并记录电子枪引出电压。

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