MFC实现连连看游戏之地图显示
MFC实现连连看游戏前期过程中遇到的一大问题是如何将地图显示出来,最后还是看了其他人的源码才搞定。
首先是地图数组的生成,这个网上找有很多,我用的是随机生成地图的种类,然后将其放在两个连续的位置,最后再进行两两随机交换位置,得到随机地图,具体如下:
voidCGameDlg::InitMap() { for(inti=0;i其中MAX_X和MAX_X是宏定义,需要注意的是地图数组的最外一层不要放图片,后面的消子算法会更加方便。
接下来就是地图的显示了:
voidCGameDlg::ShowMap() { inti,j; CPointp;//按钮位置 CStringstr=_T(""); //清除原有按钮 for(i=0;iID>0) { str.Format(_T("res\\%d.png"),btn->ID); CImageimage; image.Load(str); btn->Create(str,WS_CHILD|BS_BITMAP|WS_VISIBLE, CRect(70+(i%(MAX_Y-2))*50,70+(i/(MAX_Y-2))*50, 120+(i%(MAX_Y-2))*50,120+(i/(MAX_Y-2))*50),this, IDC_BLOCK+i); btn->SetBitmap(image); btn->ShowWindow(SW_SHOW); } } } 在生成地图的过程中,我并没有将图片拼接起来,并用掩码消去背景色,这里只是简单的将图片加载到按钮上,不过因为.png的图片能实现透明(.bmp图片是无法实现透明的,会有白色背景),所以也算是实现了透明背景。
还有就是自己重写了一个新的CLLKButton类继承CButton类,就添加了两个属性:intID;//图片的种类 CPointp;//按钮的位置完整源码已上传至我的GitHub
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。