快速业务通道

c++ win32 API实现方块联机游戏历程

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

先简单介绍下自己的情况,2006年普通大专院校毕业,毕业后到了北京参加软 件测试的培训,目前做ASP.NET网站安全等方面的测试。很多人都说技术不好才去 做测试的,很不幸言中了,我当时我的情况确实是这样的,这大概也是很多做测 试的朋友心中的一个老梗。即使工作了,心中的梦魇一直没能除去,所以决定试 试自己到底能不能写点东西。在工作期间,自学SQLSERVER+ASP.NET 在工作一年 后正式参与网站开发。

写俄罗斯方块联机游戏想法,源于到北京后的培训 经历,那时候的老师是一个在华为经历几年开发经验和测试经验的高手,当他告 诉我说:“听说你号称学过C++的时候”,我心里其实蛮惭愧的,因为 确实不懂。从此C++这东西,基本是心中不堪回首的回忆。也开始有想用C++写个 小东西的想法。直到最近终于付诸于现实。

大学时间学习了MFC,对 WINDOWS窗口的运行机制一窍不通,只会拖拖控件添加消息,是个准新手。于是开 始看一些关于那方面的书和视频,主要是 《Windows程序设计》和孙鑫老师的c++ 视频第一、二章节。了解面向对象的基本概念和WINDWOS窗口的消息机制等基本的 理论。有了这些基础后,脑袋里大概就有个模型,觉得可以实现这个俄罗斯方块 游戏。开始实际写代码。

我坚信所有复杂的东西都是由最简单的东西组成 的,我所有的编程思路和实现都是基于这个简单的思路来做的。当然这个游戏很 简单,对于一些有经验的朋友可以说是 一天半天就可以完成的,但是对于完全没 有windwos窗口编程的新手来说,这会是一个让人务实,让人探索前进的思路。我 坚信在开发进行中的所有困难或BUG都是因为一个很简单的错误而出现的。我能做 的就是不停的实验和测试来实现。在这方面,测试的经验给了我不少的帮助。让 我在出现问题的时候,有大量的想法去测试寻找问题的缘由,+上自己的耐心,所 有的问题都迎刃而解。

实际过程:

1 对话框: 最开始,什么都不想,要玩游戏就得有个窗口 。我用createwindow把里面大部分的窗口类型都组合测试了一边,最终才选定用 一个没有最大化最小化按钮、没有改变大小边框的对话框窗口来实现。

2 游戏界面:用什么实现方块。有很多想法,用一张画好的图片,做方块格子,也 想过用按钮。最后想想就用一个彩色矩形代表一个方块最简单。FillRect();

3 游戏方块: 接着用设计好游戏规格,方块大小,游戏界面宽高。就用 FillRect()画个黑色矩形来表示游戏方块。现在想想其实建立一个子窗口做界 面是最方便的了 .

4 显示第一个方块:游戏对话框有了,游戏界面有了, 于是我试着在黑色矩形游戏界面中画第一个方块,是一个直条。这也是我第一次 接触到WM_PAINT消息。第一次知道窗口的重绘。刚开始的时候,出现很多的问题 ,不是只有直条就是只有游戏界面。在重绘函数里面有很多错误的代码,走了很 多湾路。光为了在游戏界面中画出一个直条我就画了两天,终于才明白重绘的原 理和基本的函数的使用。当我在游戏界面中出现第一个直条的时候,我非常兴奋 ,我觉得这个是一个很好的开始,起码证明了我的方法在一定程度上是可行的。 意味着前面的工作都没白费。给了我很大的鼓舞。

5 设计方块基类: 有 了前面的基础,我就坚信可以完成。我觉得方块基类是整个游戏的基础, 一定要 先确定好的,于是设计了一个4维的数组来表达7类方块20多种的变化。这样在游 戏中需要方块的数据的时候都可以从中提取。其实最开始的时候在这块想了很多 ,因为不确定后面到底要怎么样用到方块,承前启后的想了很久,既要考虑到后 面的使用,又要尽量简单,最开始的时候还想用vector来实现,于是还顺便学习 了关于容器的内容,怎么使用怎么初始化等等。不过最后还是否定了这个方案。

6 设计游戏类:其实不懂面向对象,只是觉得

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号