我用VC实现的纸牌,规则和windows自带的纸牌相同,但多一个"秘笈"功能:当按住空格键不放,所有扣着的牌都将显示牌面.整个工程已经上传至CSDN下载频道,标题是“带秘笈的纸牌源码”。先来个截图:
这就是按住空格键的“秘笈”效果。整个游戏的要点只有一个:鼠标检测。逻辑判断很简单,扑克牌用0-51表示,除13取余是牌值,商是花色(0-3)。牌的存储用数组实现。移动牌的时候,检测鼠标坐标->获取当前移动的牌。当鼠标松开时,检测坐标,将移动的牌方至对应的数组中。
在鼠标松开的时候,要有对应的逻辑判断:右上角的牌要依次递增,下边七列的牌要一红一黑且递减有序。就这些内容。
至于图形移动、牌的正反面显示,包括鼠标坐标计算,我的方法应该能继续优化,法无定法,巧妙不同。我只讲以上的逻辑部分,其他细节欢迎大家讨论。
windows自带的纸牌,玩家成功后,有一个扑克牌平抛的动画,也简单。将牌的横纵坐标、水平/垂直偏移量封装到一个结构体中。每次刷屏,修改这两个偏移量即可。落下时,垂直偏移量不断增加;弹起时,垂直偏移量不断减少。最终的结果如下:
总体感觉比上回那个挖金子精致得多,大家多讨论吧。