stm32f103ZET6实现2048小游戏(LVGL)保姆级教程(二)(核心思路)

2048是一款数字益智游戏,玩家需要通过滑动方块来合并相同数字的方块,最终得到数字2048的方块。下面是2048小游戏的核心思路:

概要:

  1. 游戏面板:2048游戏面板是一个4x4的方格网格,初始状态有两个随机生成的数字方块,每个方块上有数字2或4。

  2. 移动方块:玩家可以通过滑动方向键或触摸屏来控制方块的移动方向。每一次移动操作,所有的方块都会在所选择的方向上移动尽可能远的距离,直到遇到其他方块或边界。

  3. 合并方块:当两个相同数字的方块在移动过程中碰撞时,它们会合并为一个新的方块,数字是原来两个方块数字的和。

  4. 生成新方块:每次移动之后,游戏会生成一个新的数字方块,随机出现在空白格子中。新生成的数字方块只可能是2或4。

  5. 游戏结束判断:当所有的格子都被填满,且相邻的方块不能合并时,游戏结束。

  6. 得分计算:每次合并方块时,玩家会获得对应合并数字的分数。最终得分是所有合并操作得分的总和。

  7. 游戏目标:玩家的目标是合并数字方块,尽可能得到一个2048数字方块。

核心思路

 1.游戏面板

        2048游戏面板是一个4x4的方格网格,初始状态有两个随机生成的数字方块,每个方块上有数字2或4。

这里可以使用一个二维数组存储1~12的数字,用switch语句可代表不同的方块,用for循环双重嵌套输出

void show_mb(lv_obj_t* bg) {
    uint8_t margin_x = 0, margin_y = 0;

    for (uint8_t i = 0; i < WIDTH; i++) {
        margin_x = 0;
        for (uint8_t j = 0; j < WIDTH; j++) {
            //printf("%d ", sz[i][j]);
            show_color_block(sz[i][j], margin_x + j * BLOCKH, margin_y + i * BLOCKH, bg, i, j);
            margin_x += 5;
        }
        margin_y += 5;
        //printf("\n");
    }
}
switch (n) {
    case 0:
        lv_obj_set_style_bg_color(block, lv_color_hex(0xc6b8ab), LV_STATE_DEFAULT); break;
    case 1:
        lv_obj_set_style_bg_color(block, lv_color_hex(0xece2d8), LV_STATE_DEFAULT); break;
    case 2:
        lv_obj_set_style_bg_color(block, lv_color_hex(0xeadec6), LV_STATE_DEFAULT); break;
    case 3:
        lv_obj_set_style_bg_color(block, lv_color_hex(0xf0af76
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值