MFC设计局域网对战五子棋游戏(一)设计

一直想做游戏,不过鉴于D3D和OPENGL有点复杂,所以就选择了比较简单的GDI+和GDI混合模式,这样就解决了GDI绘图质量不高和GDI+不支持双缓冲的问题。

开发环境采用Visual Studio 2010旗舰版,因为不需要做什么项目,因为我还是学生呵呵,所以不需要考虑太多的兼容性方面的因素,还是喜欢用新的工具。

开发过程中使用到的技术大概有:

DWM API:这是vista以来新增的API,具体内容见MSDN,游戏中只使用了部分窗口毛玻璃的效果;

GDI混合GDI+:因为GDI+不支持双缓冲,所以画图时先使用GDI创建缓冲位图,然后使用GDI+的Graphics画在这个位图上,最后由GDI绘制到屏幕;

CSocket:局域网对战肯定要用到socket通信,因为数据量很少,所以使用了封装好的比较简单的CSocket类,这样可以省不少代码;

多线程和互斥对象:因为CSokcet工作在阻塞模式,所以不能使用主线程接受和发送游戏数据,我把绘制图像的代码也放在一个独立线程中,所以需要使用互斥对象来确保主线程退出时所有子线程以释放主线程中的资源,否则会引起内存错误;

自绘控件:在游戏中使用默认的控件也太挫了吧,所以就要自己绘制控件,这样才像游戏,虽然市面上有很多,但是拿来的和自己写的用着感觉不一样;

 

先看看主对话框类:

MFC设计局域网对战五子棋游戏(一)设计_第1张图片

这是对话框完成后效果:

MFC设计局域网对战五子棋游戏(一)设计_第2张图片

 

 游戏流程图:

 

 

 

 

MFC设计局域网对战五子棋游戏(一)设计_第3张图片

 

 

开始后游戏过程流程图:

 

 所有游戏类的设计:

 

MFC设计局域网对战五子棋游戏(一)设计_第4张图片

源代码下载: http://download.csdn.net/download/jokers_i/4223218

你可能感兴趣的:(多线程,游戏,socket,api,mfc,DWM)