【C++】2048游戏系列---优化模块第二稿【计分模块】

2048游戏系列---优化模块第二稿【计分模块】

(更新中……)
参考博客:https://blog.csdn.net/qq_39151563/article/details/104283217
参考博客:https://blog.csdn.net/qq_39151563/article/details/104342730
由于放在一篇会导致篇幅太长,所以分成了几篇。(可能有个10篇吧=.=)

目前写完的:


本篇讲解计分模块的激活。


一、布局和计算

从参考博客偷来的布局图:
布局

1.1-通过图片尺寸计算

布局和计算

1.2-一些定义的含义

我的思路是,先把它们紧密地拼凑在一起,再计算图片之间的间隔,只要加 DEVIDE 的就好了

const int WIDTH  = 500+2*DEVIDE;//画面总体宽度
const int HEIGHT = 660+2*DEVIDE;//画面总体长度

const int DEVIDE = 15;//间隔宽度
const int GRID_WIDTH = 106;//数字块宽度(正方形)

const int BOARD_X = 0+DEVIDE;//棋盘起始点
const int BOARD_Y = 160+DEVIDE

const int LOGO_X = 25+DEVIDE;//Logo图起始点
const int LOGO_Y = 20;

const int RESTART_X = 0+DEVIDE;//restart图起始点
const int RESTART_Y = 90; 

const int SCOREGB_X = 230+DEVIDE;//计分背景图起始点
const int SCOREGB_Y = 0; 

1.3-一些关键的修改

具体的可以参考后面的源码

initgraph(WIDTH, HEIGHT);
//图片
PIMAGE GameLogoImg;
PIMAGE RestartImg;
PIMAGE ScoreBgImg;

GameLogoImg = newimage();
RestartImg = newimage();
ScoreBgImg = newimage();	
getimage(GameOverImg,  "image\\gameOver.png");
getimage(GameLogoImg,  "image\\gamelogo.png"); 
getimage(RestartImg,   "image\\restart.png"); 
getimage(ScoreBgImg,   "image\\scorebg.png"); 

delimage(GameLogoImg);
delimage(RestartImg);
delimage(ScoreBgImg);

//Draw函数里面
putimage_withalpha(NULL, GameLogoImg,  LOGO_X,    LOGO_Y);//Logo图 
putimage_withalpha(NULL, RestartImg,   RESTART_X, RESTART_Y);//重新开始图 
putimage_withalpha(NULL, ScoreBgImg,   SCOREGB_X, SCOREGB_Y);//计分背景图 
int x = (j+1)*DEVIDE + j*GRID_WIDTH + BOARD_X;
int y = (i+1)*DEVIDE + i*GRID_WIDTH + BOARD_Y;

1.4-运行结果

改布局调试1

后来我又在上面添加了一个 DEVIDE,也就是每一张图片的 y + DEVIDE,大家可以根据自己喜欢调整布局,感觉有那味了

二、激活重新开始按键

现在的重新开始按键就是摆设,鼠标点击它并没有什么反应,我们要做的工作就是激活它!!!

2.1-鼠标检测模板

bool flag = false;//判断标志位
int xClick = yClick = 0;//记录鼠标位置
for(;is_run();delay_fps())
{
    flag = false;
    while (mousemsg())
    {
			mouse_msg msg = getmouse();
    		if (msg.is_left() && msg.is_down())
    		{
                isClick = true;
                xClick = msg.x;
                yClick = msg.y;
    		} 
    }
    if(flag)
    {
        ...//具体操作
    }
}

具体操作原理可以参看参考博客,与键盘检测逻辑类似

2.2-检测是否点击在矩形区域内

const int RESTART_X = 0+DEVIDE;
const int RESTART_Y = 90+DEVIDE;
const int RESTART
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值