版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c#设计报告立方体模拟游戏设计引言21.1主题选择背景21.2国内外研究现状31.3本人做的主要工作3任务需求分析32.1主题的功能要求32.2主题的性能要求3相关主要工作原理和关键技术简介33.1 3d图形渲染原理技术简介33.2立方体旋转原理技术简介43.3主要问题解决思路43.3.1三维立方体说明问题的解决方案43.3.2立方体整体旋转问题的解决方案43.3.3立方体每个层旋转和故障排除4系统设计44.1系统整体结构、模块或进程54.2显示3d图形子模组的设计54.3立方体整体翻转子模块设计64.4立方体旋转子模块设计64.5立方结构混乱6系统实施65.1显示了三维立方子模块的实现。5.
2、2立方体整体翻转子模块实施115.3立方旋转子模块实施125.4立方结构干扰子模组实行16系统测试176.1测试环境176.1.1构建测试环境176.1.2 .反击测试的基本原则176.2测试记录18软件安装执行指南24经验24参考文献24引言1.1主题的主题背景真正的立方体总是让人们不断研究,人们通过旋转立方体来开发自己的思维,但有时买立方体仍然是件麻烦的事,很多人有自己的电脑,有时想体验在电脑上玩立方体的感觉。1.2国内外研究现状有很多基于c/c的幻方图,其中java、flash或opengl仅使用颜色绘制此游戏的所有面。用c#开发的立方体作品很少。但是,directx开发工具包出现了,成
3、为了现实。但是对directx的研究在国外有很多,国内用directx开发的作品太少,在这方面的资料也很不足,能找到的资料大部分是国外和英文版。1.3本人做的主要工作本人引入了基于c#的开发工具包directx,以便绘制三维病灶虚拟立方体,并通过鼠标控制整个旋转和每个层的旋转。任务需求分析2.1主题的功能要求绘制三维模拟立方体:绘制立方体(3*3*3形式)缩放和旋转整个立方体:使用鼠标控制旋转立方体:使用鼠标单击按钮以控制该面的旋转2.2主题的性能要求最好在计算机上用鼠标简单地控制立方体游戏更容易操控。介绍相关的主要工作原理和关键技术3.1 3d图形渲染原理技术简介使用visual c#语言开
4、发directx作为三维图形,并首先介绍用于处理directx中所有图形的device类。假定此类是图形卡,场景中的所有其他图形对象都依赖于device,并且计算机上可以有多个device。使用direct3d绘制的每个对象都由三角形组成,三角形由三个点组成,每个点由指定点的x、y和z坐标的矢量定义。directx具有定义顶点的结构。换句话说,customvertex类只需在呈现函数中添加绘制图形代码即可。绘制图元(primitives)提供了四种主要方法,具体取决于设备类的绘制方式,此过程设计主要使用以下绘制方法:public void drawuser primitives(primiti
5、ve type、int primitive count、object vertexstramzerodata);drawuserprimitives()方法通过读取系统内存中的顶点数据来绘制元素。每次调用drawuserprimitives()方法时,顶点数据都会从系统内存传递到视频卡,但是通常,如果大多数数据没有转换,以这种方式绘制元素,则每次渲染时都会从系统内存调用重复数据,并且在顶点数据杨怡较大时程序运行速度会非常慢。primitivetype。绘制linelist类型的线段线。3.2立方体旋转原理技术简介对魔方的旋转主要通过算法记录旋转前各个块的颜色,旋转后重新着色。继续渲染图形。3.
6、3主要问题解决思路3.3.1三维立方体说明问题的解决方案定义block类,该类表示小立方体及其位置的世界坐标,并对每个面进行着色。包含旋转面后旋转的小块的重着色实现。3.3.2立方体整体旋转问题的解决方案通过鼠标单击拖动控制立方体的整体旋转。定义了鼠标接收函数,移动鼠标后,坐标的更改会改变视图显示的角度,从而在视觉上产生不同的效果。3.3.3立方体每个层的旋转和故障排除每层的旋转定义了旋转函数,每次指定旋转层时,该旋转函数都会根据相应中心块的曲面颜色执行旋转函数。旋转函数通过更改块的颜色,直观地显示出在魔方中需要更改的小块重新着色后的效果。妨碍立方体的是随机指定旋转面,然后调用旋转函数。多次随
7、机旋转,就会出现纠缠的流言。系统设计4.1系统范围的结构、模块或进程图1:系统的整体结构根据礼物立方体功能,大致有3个模块,三维立方体显示,整个立方体翻转,立方体每个层的旋转。4.2显示了3d图形子模块的设计图2: 3d图形显示3d图形的绘制通过directx的device设备完成,通过相机将世界坐标系中的图形转换为视图矩阵,然后使用positioncolored表单定义顶点格式结构4.3立方体整体翻转子模块设计图3:翻转整个立方体立方体完全反转:通过鼠标接收功能接收鼠标输入,更改三维图形的显示角度以控制矩阵的偏移。4.4立方体旋转子模块设计图4:立方体每个层的旋转结构旋转立方体层:通过记录颜
8、色情况旋转单个块的面。4.5立方结构混乱对魔方的混乱只是多次随机调用魔方的层旋转函数。系统实现从主菜单中,选择“添加项目参考”,然后如下图所示。net上的microsoft . directx . microsoft . directx . direct 3d和microsoft .添加directx.direct3dx。打开表单和类的代码,然后添加directx引用,如下所示:using microsoft。directxusing microsoft . directx . direct 3d;public partial class cube ui : form/定义全局变量public
9、 static microsoft . directx . direct 3d . device device=null/定义绘图设备private static microsoft . directx . direct input . device鼠标/鼠标设备定义private vector3 camerapos/定义相机位置private vector3 mousepos/定义鼠标位置private float rho/角度r变量private float theta/角度变量(前后)专用浮点phi/角度变量(左和右)红宝石立方体;/类别宣告private customcolor rot
10、ateface/旋转面颜色渲染图形函数:/渲染函数,它告诉您渲染设备上渲染的内容/public void render()如果if (device=null) /device为空,则不会渲染returndevice . clear(clear flags . target | clear flags . z buffer,color.cyan,1.0f,0);/将windows接口清除到cyan深度缓冲区device。begin scene();/将渲染的图形代码添加到此处/mouse listen();/鼠标接收函数device . transform . world=matrix . tr
11、anslation(-1.5f,-1.5f,-1.5f);/矩阵偏移for(int x=0);x 3;x)for(int y=0);y 3;y)for(int z=0);z 3;z)红宝石立方体。getblock (x,y,z)。draw (x、y、z);device . renderer state . lighting=false;/排除光源,使其不变成黑色device . renderer state . cull mode=cull . none;/(使用摄影机变换时使用)不需要背面呈现功能position camera();device。end scene();device。pres
12、ent();this .invalidate();5.1显示了三维立方子模块的实施block类:public customcolor top、bottom、front、back、left、rightpublic static int scale=1;/定义确定图形顶点位置的简单变量/绘制立方体(小方块)和描影函数/定义未转换的坐标,即使用positioncolored表格定义顶点的世界空间坐标/转换的坐标采用transformedcolored格式,直接显示在屏幕上,而不定义视图和投影转换/custom vertex . transformed colored结构表示包含转换的顶点和颜色信息的
13、自定义顶点格式结构。/public void draw (float x、float y、float z)/customvertex。positioncolored表示包含位置和颜色信息的自定义顶点格式结构custom vertex . position coloredvertices=new custom vertex . position colored8;/立方体8个顶点的位置vertices 0。position=new vector 3 (x,y,z);/使用世界坐标存储顶点位置vertices 1。position=new vector 3 (x,y,z scale);vertices 2。position=new vector 3 (x scale,y,z scale);vertices 3。position=new vector 3 (x scale,y,z);vertices 4。position=new vector 3 (x,y scal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年食品安全监督抽检与追溯系统运行协同策略题
- 2026年法学研究生入学考试法学案例分析题
- 2026年物流与供应链管理智能物流系统运营专项题库
- 2026年智能控制技术与系统应用试题
- 2026年数字孪生城市模拟系统应用工程师考试题
- 2026年工程成本控制方法与实践技能练习题
- 数据驱动服务供给的融合路径研究
- 网络空间威胁情报共享机制-第1篇
- 滑雪行业从业人员能力测试规范试题及真题
- 2025年教育硕士备考:课程与教学论应试技巧试卷及答案
- 2026年标准版离婚协议书(有财产)
- 养老院电气火灾培训课件
- 中国工商银行2025年度春季校园招聘笔试历年典型考题及考点剖析附带答案详解
- 2026年类器官芯片技术项目商业计划书
- 2026北京西城初二上学期期末数学试卷和答案
- 中国家庭财富与消费报告2025年第三季度
- 马年猜猜乐(马的成语)打印版
- 2026年及未来5年市场数据中国磷化铟行业市场调研分析及投资战略咨询报告
- 过去进行时(总结)
- 物业节前安全教育培训
- GB/T 37507-2025项目、项目群和项目组合管理项目管理指南
评论
0/150
提交评论