news 2026/4/23 11:29:20

C语言制作消消乐游戏(4)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言制作消消乐游戏(4)

4.实现方块的移动

(1)处理用户点击操作

ExMessage msg; if (peekmessage(&msg) && msg.message == WM_LBUTTONDOWN) { //printf("=== 鼠标点击 === x=%d, y=%d\n", msg.x, msg.y); int clickedRow = -1, clickedCol = -1; // 遍历所有方块,精确检测点击了哪个 for (int i = 1; i <= ROW; i++) { for (int j = 1; j <= COL; j++) { int left = map[i][j].x; int right = map[i][j].x + block_size; int top = map[i][j].y; int bottom = map[i][j].y + block_size; // 打印每个方块的位置(调试用,可以注释掉) // printf("方块[%d,%d]: left=%d, right=%d, top=%d, bottom=%d\n", // i, j, left, right, top, bottom); if (msg.x >= left && msg.x <= right && msg.y >= top && msg.y <= bottom) { clickedRow = i; clickedCol = j; //printf("点击到方块: [%d,%d]\n", clickedRow, clickedCol); break; } } if (clickedRow != -1) break; } if (clickedRow == -1) { //printf("没有点击到任何方块!\n"); return; } // 处理点击逻辑 click++; if (click == 1) { posX1 = clickedRow; posY1 = clickedCol; //printf("第一次选中: [%d,%d]\n", posX1, posY1); } else if (click == 2) { posX2 = clickedRow; posY2 = clickedCol; //printf("第二次点击: [%d,%d]\n", posX2, posY2); // 检查是否相邻 int diff = abs(posX2 - posX1) + abs(posY2 - posY1); //printf("距离: %d\n", diff); if (diff == 1) { //printf("执行交换!\n"); exchange(posX1, posY1, posX2, posY2); click = 0; isMoving = true; isSwap = true; } else { //printf("不相邻,重新选择\n"); click = 1; posX1 = clickedRow; posY1 = clickedCol; } } }

(2)实现两个方块的移动

void move() { isMoving = false; for (int i = ROW; i > 0; i--) { for (int j = 1; j <= COL; j++) { struct block* p = &map[i][j]; int dx, dy; for (int k = 0; k < 3; k++) { int x = off_x + (p->col + 1) * (block_size + 2); int y = off_y + (p->row - 1) * (block_size + 2); dx = p->x - x; dy = p->y - y; if (dx)p->x -= dx / abs(dx); if (dy)p->y -= dy / abs(dy); } if (dx || dy)isMoving = true; //p->x; //p->y; //map[i][j].x = off_x + (j + 1) * (block_size + 2);//调整方块位置 //map[i][j].y = off_y + (i - 1) * (block_size + 2); } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:29:18

从‘歪楼’到‘横平竖直’:手把手教你用Halcon单张图片校正镜头畸变

工业视觉实战&#xff1a;单图镜头畸变校正的Halcon高阶技巧 当你在生产线上发现检测系统误判率突然升高&#xff0c;或是测量数据出现系统性偏差时&#xff0c;镜头畸变往往是隐藏的罪魁祸首。不同于学术论文中复杂的数学模型&#xff0c;工业现场需要的是快速诊断和即时解决方…

作者头像 李华
网站建设 2026/4/23 11:23:25

如何在Windows 11 LTSC系统上快速安装微软商店:3分钟完整指南

如何在Windows 11 LTSC系统上快速安装微软商店&#xff1a;3分钟完整指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否在使用Windows 11 LTS…

作者头像 李华
网站建设 2026/4/23 11:23:20

告别平台限制:WorkshopDL让你轻松下载Steam创意工坊模组

告别平台限制&#xff1a;WorkshopDL让你轻松下载Steam创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否曾在GOG或Epic平台购买了游戏&#xff0c;却发现无法…

作者头像 李华
网站建设 2026/4/23 11:17:02

别再手动调参了!用微软NNI+PyTorch实现ResNet自动调优(附完整代码)

用NNIPyTorch实现ResNet自动调参的工程实践指南 当你在PyTorch项目中反复调整batch_size和learning_rate时&#xff0c;是否想过让算法自动寻找最优组合&#xff1f;微软NNI工具链正是为解决这类问题而生。本文将展示如何在不重构现有PyTorch项目的前提下&#xff0c;将手动调参…

作者头像 李华