卡片里的数字假设越来越大则会超过卡片,这样看起来不好看,所以我们要推断数字的位数然后设置合适的大小。
在Card.cpp的setNumber()中增加例如以下代码
//设置数字大小 if ( num >= 0) { labelCardNumber->setFontSize (100); } if ( num >= 16) { labelCardNumber->setFontSize (90); } if ( num >= 128) { labelCardNumber->setFontSize (60); } if ( num >= 1024) { labelCardNumber->setFontSize (40); }
这样就依据数字的位数改变大小了。
然后就是不同的数字显示不同的颜色。
相同在setNumber()中增加
//推断数字的大小来调整颜色
if(number == 0){
colorBackground->setColor (Color3B( 200,190 ,180));
}
if ( number == 2) {
colorBackground->setColor (Color3B( 240,230 ,220));
}
if ( number == 4) {
colorBackground->setColor (Color3B( 240,220 ,200));
}
if ( number == 8) {
colorBackground->setColor (Color3B( 240,180 ,120));
}
if ( number == 16) {
colorBackground->setColor (Color3B( 240,140 ,90));
}
if ( number == 32) {
colorBackground->setColor (Color3B( 240,120 ,90));
}
if ( number == 64) {
colorBackground->setColor (Color3B( 240,90 ,60));
}
if ( number == 128) {
colorBackground->setColor (Color3B( 240,90 ,60));
}
if ( number == 256) {
colorBackground->setColor (Color3B( 240,200 ,70));
}
if ( number == 512) {
colorBackground->setColor (Color3B( 240,200 ,70));
}
if ( number == 1024) {
colorBackground->setColor (Color3B( 0,130 ,0));
}
if ( number == 2048) {
colorBackground->setColor (Color3B( 0,130 ,0));
}
这样差点儿相同就完毕了。
事实上还有非常多效果没有加,如滑动卡片时的滑动效果,记录最高分等等。因为时间有限,就依据网上的教程试了一下。游戏非常easy,做起来不easy啊。
最后附上全部的源码