# 2048 **Repository Path**: yanfeng_gitee/2048 ## Basic Information - **Project Name**: 2048 - **Description**: 三个版本 一个纯c终端键盘输入实现。 第一个在arm平台触屏交互,注意,bmp.c中是文件的路径,可以自定义但尺寸要注意,在x86的架构下直接改cmake中的编译器就好了 第二个是arm架构下触屏交互 第三个是模块化后的 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-19 - **Last Updated**: 2025-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2048v_2 游戏项目文档 ## 项目概述 这是一个基于Linux帧缓冲(framebuffer)的2048游戏实现,专门为嵌入式设备或Linux系统设计。游戏通过直接操作帧缓冲设备 `/dev/fb0` 来显示图形界面,并通过触摸屏输入进行游戏操作。 ## 项目结构 ``` 2048v_2/ ├── inc/ # 头文件目录 │ ├── 2048.h # 主要头文件,包含全局定义 │ └── 2048_fuction.h # 函数声明头文件 ├── src/ # 源代码目录 │ ├── bmp.c # 图形显示相关实现 │ └── touch.c # 触摸屏输入处理实现 ├── main.c # 主程序入口 └── pic/ # 游戏图片资源目录 ``` ## 核心功能 ### 1. 显示系统 - 通过内存映射 `/dev/fb0` 设备直接操作帧缓冲 - 支持800x480分辨率,32位色深显示 ### 2. 游戏逻辑 - 经典2048游戏规则实现 - 4x4游戏棋盘管理 - 随机生成新数字块(2或4) - 支持四个方向滑动操作 ### 3. 输入处理 - 通过 `/dev/input/event0` 设备读取触摸屏输入 - 检测滑动方向(上下左右) - 实现手势识别逻辑 ### 4. 图形资源 - 为不同数字块提供专用BMP图片 - 游戏结束界面图片 - 数字块从2到65536的视觉表示 ## 核心数据结构 ### 全局变量 - `matrix[4][4]`: 游戏棋盘状态 - [plcd](file://e:\share\project\2048\2048v_2\inc\2048.h#L35-L35): 帧缓冲映射指针 - `bmpfiles[]`: BMP图片文件路径数组 - [game_over](file://e:\share\project\2048\2048v_2\inc\2048.h#L33-L33): 游戏结束标志 ### 常量定义 - [LCD_WIDTH](file://e:\share\project\2048\2048v_2\inc\2048.h#L15-L16)/[LCD_HEIGHT](file://e:\share\project\2048\2048v_2\inc\2048.h#L16-L17): 屏幕分辨率(800x480) - [BOARDSIZE](file://e:\share\project\2048\2048v_2\inc\2048.h#L25-L26): 棋盘大小(4x4) - [PIECE_SIZE](file://e:\share\project\2048\2048v_2\inc\2048.h#L23-L24): 数字块尺寸(100像素) ## 主要函数模块 ### 显示相关 - [DrawMatrix()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L6-L6): 绘制整个游戏棋盘 - [LcdDrawRect()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L5-L5): 绘制矩形区域 - [drawBmpByname()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L4-L4): 显示BMP图像 ### 输入处理 - [getFingerDirection()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L10-L10): 获取触摸滑动方向 - [changeMatrix()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L12-L12): 根据输入改变棋盘状态 ### 游戏逻辑 - [initBoard()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L9-L9): 初始化游戏棋盘 - [rand_matrix()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L21-L21): 随机生成新数字块 - [move_judge()](file://e:\share\project\2048\2048v_2\inc\2048_fuction.h#L14-L14): 判断游戏是否结束 ## 工作流程 1. 初始化帧缓冲设备和触摸屏输入 2. 设置随机数种子并初始化游戏棋盘 3. 进入主游戏循环: - 检测用户输入并更新棋盘 - 若有有效移动则生成新数字块 - 检查游戏是否结束 4. 游戏结束后显示结束画面 5. 释放系统资源 ## 编译与运行 cd 2048v_2/build cmake .. && make 将编译好的可执行文件放在pic目录下,并运行