用Visual C++编写属于自己的游戏
Visual C++编写属于自己的游戏

 
我的地盘我做主,编写属于自己的游戏永远是玩家的最高境界。这期程序谷带给大家的是辽宁肖占龙朋友编写的麻将对对碰小游戏,连小编我都爱不释手,欲罢不能。为了节约宝贵的版面,杂志内的文章有部分删节,完整文章的电子版以及Visual C++项目文件可以在www.cfan/11program/200501/ltmjbh.html到,非常适合喜欢Visual C++朋友按部就班,跟着文章一步步操作。如果你想一睹为快,可以直接下载编译完成的游戏,地址是www.cfan/11program/200501/mahjong.zip。游戏虽小但五脏俱全,游戏制作大师难道不是从编写小游戏起步的吗?       ——程序谷栏目编辑  东渐
在这篇文章中我将向大家介绍麻将对对碰游戏的完整制作过程。这个游戏有点类似于早期街机上四川麻将的玩法,从四周起,到两个一样的就可以用鼠标左键确认消除。每人每次有60秒的时间去完成。此外,按下F1键可以重新开始,赛迦 奥特曼ESC退出游戏。我把游戏做成可以允许两个玩家轮流游戏的竞赛方式,这样你就可以和你的女朋友一起玩,省的她总是埋怨你忙着玩游戏而忽略了她的存在(见图)

本游戏是用Visual C++ 6.0DirectX SDK 7.0编写的。
1.DirectX SDK
首先介绍一下DirectX SDKDirectX SDK是微软推出的一套在Windows中开发多媒体程序的API函数集,可以在www.microsoft/windows/directx/default.asp上免费获得,目前最新版本是9.0
DirectX SDK的帮助下,程序员可以专注开发游戏本身,涉及到2D3D、声音以及网络等的功能,只要直接调用相应组件即可。我们的麻将对对碰只用了其中的图像功能。
2.VC中配置DirectX SDK
首先安装DirectX SDK。之后,需要在Visual C++中配置一下,指定它的路径:依次选择工具选择菜单,在目录页中的Include files中添加DirectX SDKInclude目录,然后在Library files中添加DirectX SDKLib目录。
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.libddraw.lib
之后为工程建立一个窗口类,在窗口类的头文件中把构造函数声明修改为public。接下来我们还要定义一些函数和变量,其中DXInit()DirectDraw的初始化函数,它是DirectX编程的核心,所有的绘图初始化都在其中。当然,DXInit()只是建立了主绘图页、实现后缓冲区和主绘图页的连接,并没有建立幕后内存区。函数loabmp()中实现了建立幕后内存区和显示位图的功能。
如何使用这三个绘图页呢?为了避免闪烁现象,我们首先把位图贴到幕后内存区中,然后在贴到后缓冲区,再利用翻页的方式绘出要显示的位图内容。以上操作分别由BitFast()贴图函数和Filp()翻页函数完成。具体的使用方法,请参阅有关资料。
为了方便以后的游戏操作,我就麻将图像排成序号:1银行利息计算公式9代表19万、1018代表19条、1929代表19饼、2834分别代表东、南、西、北、中、发、白。这样作的好处是简化了判断条件成立的条件,因为麻将每张都有四个,所以在麻将信息中加入了n用来判断该张发出的次数,h是用来存放麻将的类型。
接着使用插入新建类建立应用程序类,在Class type对话框中选择Generic Class,在Name中输入类名CMajiangApp,在Base class(es)中的Derived From中输入CWinApp
然后分别为工程添加WM_CREATEWM_TIMER消息并填写相应代码,从而可以在屏幕上显示LOGO和麻将图像了。
游戏的主要功能是在play()中完成的,代码非常简单,核心问题就是如果判断所选两个麻将是否相同。这个过程请参见200418期程序谷刊登的《用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),在其下再建两个子文件夹PhotoOther,子文件夹分别存放将要显示的照片和主界面素材。
1.准备背景图片和音乐
Photoshop之类的图像处理软件制作一幅640像素×480像素大小的图片,将其命名为bj.jpg;准备一个MP3格式的音乐文件,将其命名为yy.mp3。将这些素材都复制到D:\dzxc\other”文件夹中。
2.按钮图片的制作
三张尺寸相同、形态稍有差异的图片(建议用PhotoImpact制作,其中带有大量按钮模板),分别命名为First.jpgFirst_down.jpgFirst_over.jpg(见图2),该组图片将用于显示第一张按钮的三种不同状态。用同样方法制作另外四组图片:Prv.jpgPrv_down.jpgPrv_over.jpg对应于按钮上一张Next.jpgNext_down.jpgNext_over.jpg对应于下一张Last.jpgLast_down.jpgLast_over.jpg对应于六大茶类“末一张Exit.jpgExit_down.jpgExit_over.jpg对应于退出。将这五组按钮图片全部复制到D:\dzxc\other”中。
3.把你的照片放进相关文件夹
准备好你的照片,以JPG格式保存于D:\dzxc\Photo”文件夹中。本例以五张花卉图片为例,分别命名为Pic01.jpgPic02.jpgPic03.jpgPic04.jpgPic05.jpg
实战操作,轻轻松松做软件
第一步:启动Authorware 7.0中文版后会弹出新建对话框,点击不选按钮新建一个空白的文件。再单击菜单命令文件保存将新建文件保存为dzxc.a7p(保存于上面所建立的D:\dzxc”文件夹中)。在其属性面板(如果属性面板没有显示,可按CtrlI键将其调出)回放选项卡中,将大小设置为640x480(VGA,Mac13")”,单击勾选屏幕居中项,并清除掉其他选项(见图3)

第二步:用鼠标按住声音图标(图标工具箱右侧第五个)不放并拖动到设计窗口的主流程线上,放开鼠标键时则主流程线上会增加一个声音图标。默认图标名称为未命名,双击图标名称可以输入新的名字,本例将其改名为背景音乐(见图4)。点选ios14快捷指令充电提示音背景音乐图标,在其属性面板中单击导入按钮,在打开的浏览窗口中点选链接到文件项,再选中上面已准备好的声音文件(D:\dzxc\other\yy.mp3),单击导入按钮返回设计窗口。单击声音属性面板上的计时选项卡,选择执行方式为永久,将播放设置为直到为真,并在条件框中输入FALSE(不含引号)
第三步:在主流程线上拖放一个显示图标,命名为背景图片。双击这个图标打开演示窗口,接着单击菜单命令插入图像,在弹出的图像属性窗口中单击导入按钮,然后以链接到文件的方式导入前面已准备好的背景图片bj.jpg怎么连接打印机。按确定返回后,再拖动图片调整其位置,让它恰好覆盖整个演示窗口。按CtrlB键返回设计窗口。
第四步:拖放一个框架图标到主流程线上,命名为影集,接着在影集图标右侧拖放五个组图标(根据照片数目而定),分别命名为照片1”、照片2”、照片3”、照片4”和照片5”。至此,本例主流程线上的图标设置完毕。
第五步:双击照片1”图标,打开二级流程线设计窗口,并拖入一个显示图标,命名为照片(见图5)。双击照片图标,在演示窗口中导入前面准备好的图片Pic01.jpg。拖动图片可移动它的位置,点选图片后它的四周会显示八个锚点,拖动锚点可调整图片的大小。
双击主流程线上的背景图片图标显示出背景图片,然后用鼠标点击设计窗口的标题条返回(不要按CtrlB键返回),再按Shift键不放并双击二级流程线上的照片图标,这样可使照片与背景图片同时显示在演示窗口中,此时即可以背景图片为参照,调整照片的大小及位置,使其正好填充在背景图片中的像框内。以同样的方法为照片2”、照片3”、照片4”和照片5”上也插入对应的照片(Pic02.jpgPic03.jpgPic04.jpgPic05.jpg)
第六步:Authorware中预置了好几十种转场效果供选择,合理使用能让多媒体相册更富有情趣。双击照片1”中的照片显示图标打开该照片,在其属性面板中单击特效右侧的按钮打开一个窗口,选择某一特效后单击应用按钮可即时预览效果。如对所选的效果感到满意的话,单击确定返回即可。以同样的方法为其他显示照片设置转场效果。
第七步:双击影集图标打开框架内部的导航设计窗口,点选其流程线上的灰面板图标并按Del键删除它;将交互图标导航超链接改名为播放控制,并删除其中的返回(Go back)最近页(Recent pages)(Find)三个分支;在退出流程线上添加一个计算图标,将其命名为结束(见图6)
第八步:单击第一页(First page)分支图标上方的小椭圆形(即按钮交互标志),在其属性面板的按钮选项卡的鼠标中设置鼠标指针鼠标指针(6)(手型),并在快捷键框中输入Home”;单击按钮进入按钮对话框,再单击添加打开按钮编辑对话框,分别点选未按按下在上,并通过右下方的导入按钮分别导入与三种状态相对应的图标文件(即上面我们制作的按钮图片First.jpgFirst_down.jpgFirst_over.jpg),然后单击两次确定返回,并拖动新按钮到合适的位置。用同样的方法设置上一页(Previous page)下一页(Next page)最后页(Last page)退出框架(Exit framework)分支的交互属性,将其快捷键分别定义为PageUP”、PageDown”、End”和Esc”。最后双击结束图标,在打开的编辑窗口中输入一行表示退出程序的代码Quit()(不含引号),一个功能完备的多媒体相册便制作完成了。按下CtrlR键,欣赏一下自己的多媒体佳作吧。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。