- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Win-TC魔方游戏编程实现
游戏编程一般讲究动画效果和人机交互性。在Win-TC(1.9)编译环境下设计一个魔方游戏程序,仿效现实中一个三层魔方体的游戏过程。首先是实现魔方体在三维空间中的正确显示和每一层的转动以及魔方的整体旋转。
魔方体在三维空间中的正确显,是计算机图形学中消隐问题。魔方体一个简单的凸多面体,其消隐算法的关键是测试它的哪些表面可见,哪些表面是不可见。利用表面外法线方向可测试物体表面的可见性,外法线方向由物体表面指向外部空间。多边形平面的外法线矢量由它任意相交且不重合的两线段矢量的乘积计算出来。
如右图所示,面ABCD的外法线矢量N=AB×BC或
N=AB×AD。当已知各顶点三维坐标时,外法线的
计算公式为:
其中:P1=XB-XA,P2=YB-YA,P3=ZB-ZA,
Q1=XC-XB,Q2=YC-YB,Q3=ZC-ZB,
据上式可求出表面外法线矢量N的分量:
物体表面上的任一点与视点形成的视线向量用S表示,N和S间的夹角θ可判断出物体表面的可见性。
当0≤θ90时,即,表面可见。
当θ=90时,表面处于可见或不可见之间。
当90≤θ≤180时,表面不可见。
魔方体每层的转动,在程序描述中为每层六个面各个对应面颜色的交换。
魔方的整体旋转是根据操作者的需要分左、右、上、下四个方向旋转魔方,以便观察魔方的各个面颜色分布情况。
为了更方便游戏操作,游戏全过程用鼠标操作。Win-TC在图形模式下是全屏黑背景色显示,为了游戏的视觉美观,程序中设计了一个窗体操作平台。如下图所示:
图1、魔方游戏操作平台
在操作平台左上方有几个按钮,其中Game按钮中包括几个子菜单:
Begin -----------------重新开局
Open ----------------- 打开游戏记录
Save ------------------ 保存游戏记录
Quit ------------------ 退出返回系统
图2、Game子菜单图示
操作平台下面分四栏分别是操作游戏的各个按钮。右上方有一个关闭按钮。
游戏规则:
游戏开始,玩家自己随意把魔方各层面的颜色打乱,越乱越好,然后再把魔方各层面颜色恢复原样,本次游戏胜利结束,显示胜利会话框。按任意键退出会话框,鼠标选择Game按钮中的Begin子菜单重新开局。
图3、胜利会话框
关于一个图形绘制显示的问题,Win-TC图形库graphics.h中的一些图形在液晶显示器(21.5寸宽屏)里显示填充不满或是线段连接处是背景色。本程序中特别用putpixel()函数编写了几个函数,使得本游戏可以在液晶显示器里编译显示成功。
图4、游戏中
图5、游戏中
魔方游戏源程序如下:
#include graphics.h
#include stdio.h
#include math.h
#include dos.h
#include string.h
#include malloc.h
#inclu
文档评论(0)