用Visual C++编写属于自己的游戏 |
我的地盘我做主,编写属于自己的游戏永远是玩家的最高境界。这期程序谷带给大家的是辽宁肖占龙朋友编写的麻将对对碰小游戏,连小编我都爱不释手,欲罢不能。为了节约宝贵的版面,杂志内的文章有部分删节,完整文章的电子版以及Visual C++项目文件可以在www.cfan/11program/200501/ltmjbh.html到,非常适合喜欢Visual C++朋友按部就班,跟着文章一步步操作。如果你想一睹为快,可以直接下载编译完成的游戏,地址是www.cfan/11program/200501/mahjong.zip。游戏虽小但五脏俱全,游戏制作大师难道不是从编写小游戏起步的吗? ——程序谷栏目编辑 东渐 在这篇文章中我将向大家介绍麻将对对碰游戏的完整制作过程。这个游戏有点类似于早期街机上四川麻将的玩法,从四周起,到两个一样的就可以用鼠标左键确认消除。每人每次有60秒的时间去完成。此外,按下F1键可以重新开始,赛迦 奥特曼ESC退出游戏。我把游戏做成可以允许两个玩家轮流游戏的竞赛方式,这样你就可以和你的女朋友一起玩,省的她总是埋怨你忙着玩游戏而忽略了她的存在(见图)。 本游戏是用Visual C++ 6.0、DirectX SDK 7.0编写的。 1.DirectX SDK 首先介绍一下DirectX SDK。DirectX SDK是微软推出的一套在Windows中开发多媒体程序的API函数集,可以在www.microsoft/windows/directx/default.asp上免费获得,目前最新版本是9.0。 在DirectX SDK的帮助下,程序员可以专注开发游戏本身,涉及到2D、3D、声音以及网络等的功能,只要直接调用相应组件即可。我们的麻将对对碰只用了其中的图像功能。 2.在VC中配置DirectX SDK 首先安装DirectX SDK。之后,需要在Visual C++中配置一下,指定它的路径:依次选择“工具”、“选择”菜单,在“目录”页中的Include files中添加DirectX SDK的Include目录,然后在Library files中添加DirectX SDK的Lib目录。 3.编写游戏 首先在Visual C++中建立一个空的Win32 Appllcation工程。接着,往工程中加入stdafx.h文件,并且在stdafx.h文件中加入#include <ddraw.h>,表示将要使用DirectDraw组件。在向工程中加入资源文件后,使用Alt+F7调出设置对话框,在General下的Microsoft Foundation Classes选择use MFC in a Static Libarary。然后加入Dxguid.lib和ddraw.lib。 之后为工程建立一个窗口类,在窗口类的头文件中把构造函数声明修改为public。接下来我们还要定义一些函数和变量,其中DXInit()为DirectDraw的初始化函数,它是DirectX编程的核心,所有的绘图初始化都在其中。当然,DXInit()只是建立了主绘图页、实现后缓冲区和主绘图页的连接,并没有建立幕后内存区。函数loabmp()中实现了建立幕后内存区和显示位图的功能。 如何使用这三个绘图页呢?为了避免闪烁现象,我们首先把位图贴到幕后内存区中,然后在贴到后缓冲区,再利用翻页的方式绘出要显示的位图内容。以上操作分别由BitFast()贴图函数和Filp()翻页函数完成。具体的使用方法,请参阅有关资料。 为了方便以后的游戏操作,我就麻将图像排成序号:1-银行利息计算公式9代表1-9万、10-18代表1-9条、19-29代表1-9饼、28-34分别代表东、南、西、北、中、发、白。这样作的好处是简化了判断条件成立的条件,因为麻将每张都有四个,所以在麻将信息中加入了n用来判断该张发出的次数,h是用来存放麻将的类型。 接着使用“插入”、“新建类”建立应用程序类,在Class type对话框中选择Generic Class,在Name中输入类名CMajiangApp,在Base class(es)中的Derived From中输入CWinApp。 然后分别为工程添加WM_CREATE、WM_TIMER消息并填写相应代码,从而可以在屏幕上显示LOGO和麻将图像了。 游戏的主要功能是在play()中完成的,代码非常简单,核心问题就是如果判断所选两个麻将是否相同。这个过程请参见2004年18期程序谷刊登的《用VC作的一个扑克游戏》一文中的方法。 为了响应快捷键,向工程加入WM_KEYDOWN消息;为了实现右键取消功能,为工程加入WM_RBUTTONDOWN消息;为了实现左键选择功能,为工程加入WM_LBUTTONDOWN消息。最后加入fp()发牌函数、Scoreshow()和timeshow()函数,这样就可以实现游戏的功能了。 4.小结 这个游戏主要应用了当前比较流行的DirectX技术。如果你有兴趣,可以把它改成网络版,或者可以加上音效。欢迎到我的主页交流,网址是:guyu5273.91x/。 [YY19] 笔者第一次接触到多媒体,是上学时买的一套多媒体光盘,它集成了图像、动画、声音、文字等多种元素,使得学习的过程有声有,比如:在学语文时,有配乐朗诵;学化学时,只要动动鼠标就可以做氧气燃烧等各种化学试验;做数学题时它能帮我判断对错并提示出错原因等。当时就想,编制多媒体光盘的程序员们,真的是太神奇了。直到后来学会了Authorware,才发现不会编程也能制作多媒体光盘,其实我也可以这么牛的! (注:本文涉及到的程序、素材可在whua/cfan/200501/AWsource.rar处下载中国移动商城) 整装待发,简简单单做准备 实例描述:我用Authorware制作的第一个完整的软件,是一本多媒体相册,别看它小,功能却很完备,可以通过鼠标点击或使用热键的方式自由浏览照片,照片切换的时候能显示多个又酷又炫的过渡效果,浏览的过程中还有优美的音乐一路伴随呢。希望这个实例也能成为你学习Authorware的一个好起点。如图1所示,是这个多媒体相册最终效果的截图。 首先为本项目建立一个文件夹(本例中为“D:\dzxc”),在其下再建两个子文件夹Photo和Other,子文件夹分别存放将要显示的照片和主界面素材。 1.准备背景图片和音乐 用Photoshop之类的图像处理软件制作一幅640像素×480像素大小的图片,将其命名为bj.jpg;准备一个MP3格式的音乐文件,将其命名为yy.mp3。将这些素材都复制到“D:\dzxc\other”文件夹中。 2.按钮图片的制作 三张尺寸相同、形态稍有差异的图片(建议用PhotoImpact制作,其中带有大量按钮模板),分别命名为First.jpg、First_down.jpg和First_over.jpg(见图2),该组图片将用于显示“第一张”按钮的三种不同状态。用同样方法制作另外四组图片:Prv.jpg、Prv_down.jpg和Prv_over.jpg对应于按钮“上一张”;Next.jpg、Next_down.jpg和Next_over.jpg对应于“下一张”;Last.jpg、Last_down.jpg和Last_over.jpg对应于六大茶类“末一张”;Exit.jpg、Exit_down.jpg和Exit_over.jpg对应于“退出”。将这五组按钮图片全部复制到“D:\dzxc\other”中。 3.把你的照片放进相关文件夹 准备好你的照片,以JPG格式保存于“D:\dzxc\Photo”文件夹中。本例以五张花卉图片为例,分别命名为Pic01.jpg、Pic02.jpg、Pic03.jpg、Pic04.jpg和Pic05.jpg。 实战操作,轻轻松松做软件 第一步:启动Authorware 7.0中文版后会弹出新建对话框,点击“不选”按钮新建一个空白的文件。再单击菜单命令“文件→保存”将新建文件保存为dzxc.a7p(保存于上面所建立的“D:\dzxc”文件夹中)。在其属性面板(如果属性面板没有显示,可按Ctrl+I键将其调出)的“回放”选项卡中,将大小设置为“640x480(VGA,Mac13")”,单击勾选“屏幕居中”项,并清除掉其他选项(见图3)。 第二步:用鼠标按住声音图标(图标工具箱右侧第五个)不放并拖动到设计窗口的主流程线上,放开鼠标键时则主流程线上会增加一个声音图标。默认图标名称为“未命名”,双击图标名称可以输入新的名字,本例将其改名为“背景音乐”(见图4)。点选ios14快捷指令充电提示音“背景音乐”图标,在其属性面板中单击“导入”按钮,在打开的浏览窗口中点选“链接到文件”项,再选中上面已准备好的声音文件(D:\dzxc\other\yy.mp3),单击“导入”按钮返回设计窗口。单击声音属性面板上的“计时”选项卡,选择执行方式为“永久”,将播放设置为“直到为真”,并在条件框中输入“FALSE”(不含引号)。 第三步:在主流程线上拖放一个显示图标,命名为“背景图片”。双击这个图标打开演示窗口,接着单击菜单命令“插入→图像”,在弹出的图像属性窗口中单击“导入”按钮,然后以“链接到文件”的方式导入前面已准备好的背景图片bj.jpg怎么连接打印机。按“确定”返回后,再拖动图片调整其位置,让它恰好覆盖整个演示窗口。按Ctrl+B键返回设计窗口。 第四步:拖放一个框架图标到主流程线上,命名为“影集”,接着在“影集”图标右侧拖放五个组图标(根据照片数目而定),分别命名为“照片1”、“照片2”、“照片3”、“照片4”和“照片5”。至此,本例主流程线上的图标设置完毕。 第五步:双击“照片1”图标,打开二级流程线设计窗口,并拖入一个显示图标,命名为“照片”(见图5)。双击“照片”图标,在演示窗口中导入前面准备好的图片Pic01.jpg。拖动图片可移动它的位置,点选图片后它的四周会显示八个锚点,拖动锚点可调整图片的大小。 双击主流程线上的“背景图片”图标显示出背景图片,然后用鼠标点击设计窗口的标题条返回(不要按Ctrl+B键返回),再按Shift键不放并双击二级流程线上的“照片”图标,这样可使照片与背景图片同时显示在演示窗口中,此时即可以背景图片为参照,调整照片的大小及位置,使其正好填充在背景图片中的像框内。以同样的方法为“照片2”、“照片3”、“照片4”和“照片5”上也插入对应的照片(Pic02.jpg、Pic03.jpg、Pic04.jpg、Pic05.jpg)。 第六步:Authorware中预置了好几十种转场效果供选择,合理使用能让多媒体相册更富有情趣。双击“照片1”中的“照片”显示图标打开该照片,在其属性面板中单击“特效”右侧的按钮打开一个窗口,选择某一特效后单击“应用”按钮可即时预览效果。如对所选的效果感到满意的话,单击“确定”返回即可。以同样的方法为其他显示照片设置转场效果。 第七步:双击“影集”图标打开框架内部的导航设计窗口,点选其流程线上的“灰面板”图标并按Del键删除它;将交互图标“导航超链接”改名为“播放控制”,并删除其中的“返回”(Go back)、“最近页”(Recent pages)和“查”(Find)三个分支;在退出流程线上添加一个计算图标,将其命名为“结束”(见图6)。 第八步:单击“第一页”(First page)分支图标上方的小椭圆形(即按钮交互标志),在其属性面板的“按钮”选项卡的“鼠标”中设置“鼠标指针”为“鼠标指针(6)”(手型),并在“快捷键”框中输入“Home”;单击“按钮”进入按钮对话框,再单击“添加”打开按钮编辑对话框,分别点选“未按”、“按下”和“在上”,并通过右下方的“导入”按钮分别导入与三种状态相对应的图标文件(即上面我们制作的按钮图片First.jpg、First_down.jpg和First_over.jpg),然后单击两次“确定”返回,并拖动新按钮到合适的位置。用同样的方法设置“上一页”(Previous page)、“下一页”(Next page)、“最后页”(Last page)和“退出框架”(Exit framework)分支的交互属性,将其快捷键分别定义为“PageUP”、“PageDown”、“End”和“Esc”。最后双击“结束”图标,在打开的编辑窗口中输入一行表示退出程序的代码“Quit()”(不含引号),一个功能完备的多媒体相册便制作完成了。按下Ctrl+R键,欣赏一下自己的多媒体佳作吧。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论