思想的风暴正归于平静

看着树叶一片片的凋落,我的思想渐渐得到了新生。
 
毕业已经有半年的时间了,在这半年里,思想的风暴从未停止过,就像一块烧红的铁一下子投到了冰水里,反应剧烈。
 
刚刚接触社会的我,无助的像个才出生的婴儿。我对一切是那么的不了解,而一切又是那么的真实,理想和现实激烈的冲突常常使我陷入思想的泥潭,无法自拔。
 
我过于看重别人对自己的评价而活在了别人的世界里。但现在我明白了我对自己的看法才是最重要的。让所有人说好是不可能的,也是不现实的。
 
这么简单的一个道理却困扰了我这么久,不过现在好了,我终于又一次赢得了胜利。
### 将俄罗斯方块游戏代码整合到单个C文件中 以下是一个完整的示例,展示如何将基于Keil5、点原子标准库、STM32F407ZG开发板和3.5寸TFTLCD屏的俄罗斯方块游戏代码整合到一个 `.c` 文件中。代码结构清晰,并包含必要的初始化、游戏逻辑和显示函数。 ```c #include "stm32f4xx.h" #include "lcd.h" // 点原子提供的LCD驱动库 #define GRID_WIDTH 10 // 游戏区域宽度 #define GRID_HEIGHT 20 // 游戏区域高度 typedef struct { uint8_t x; // 当前方块的X坐标 uint8_t y; // 当前方块的Y坐标 uint8_t shape[4][4]; // 当前方块形状 } Tetromino; // 定义一个简单的方块形状 uint8_t square_shape[4][4] = { {1, 1}, {1, 1} }; Tetromino current_tetromino; uint8_t game_grid[GRID_HEIGHT][GRID_WIDTH] = {0}; // 游戏区域网格 void SystemClock_Config(void); // 系统时钟配置函数声明 void GPIO_Init(void); // GPIO初始化函数声明 /// 初始化系统时钟 void SystemClock_Config(void) { // 系统时钟配置代码(略) } /// 初始化GPIO void GPIO_Init(void) { // GPIO初始化代码(略) } /// 在游戏区域生成新的方块 void spawn_tetromino(void) { current_tetromino.x = GRID_WIDTH / 2; current_tetromino.y = 0; memcpy(current_tetromino.shape, square_shape, sizeof(square_shape)); } /// 检查方块是否发生碰撞 bool check_collision(uint8_t x, uint8_t y) { for (uint8_t i = 0; i < 4; i++) { for (uint8_t j = 0; j < 4; j++) { if (current_tetromino.shape[i][j] && (x + j >= GRID_WIDTH || y + i >= GRID_HEIGHT || game_grid[y + i][x + j])) { return true; } } } return false; } /// 锁定当前方块到游戏区域 void lock_tetromino(void) { for (uint8_t i = 0; i < 4; i++) { for (uint8_t j = 0; j < 4; j++) { if (current_tetromino.shape[i][j]) { game_grid[current_tetromino.y + i][current_tetromino.x + j] = 1; } } } } /// 方块下落逻辑 void move_down(void) { if (!check_collision(current_tetromino.x, current_tetromino.y + 1)) { current_tetromino.y++; } else { lock_tetromino(); spawn_tetromino(); } } /// 清除满行并更新分数 void clear_lines(void) { for (uint8_t i = 0; i < GRID_HEIGHT; i++) { bool full = true; for (uint8_t j = 0; j < GRID_WIDTH; j++) { if (!game_grid[i][j]) { full = false; break; } } if (full) { for (uint8_t k = i; k > 0; k--) { memcpy(game_grid[k], game_grid[k - 1], sizeof(game_grid[k])); } memset(game_grid[0], 0, sizeof(game_grid[0])); } } } /// 绘制游戏区域网格 void draw_grid(void) { for (uint8_t row = 0; row < GRID_HEIGHT; row++) { for (uint8_t col = 0; col < GRID_WIDTH; col++) { if (game_grid[row][col]) { lcd_fill(col * 16, row * 16, (col + 1) * 16 - 1, (row + 1) * 16 - 1, RED); } else { lcd_fill(col * 16, row * 16, (col + 1) * 16 - 1, (row + 1) * 16 - 1, WHITE); } } } } /// 绘制当前方块 void draw_tetromino(Tetromino tetromino) { for (uint8_t i = 0; i < 4; i++) { for (uint8_t j = 0; j < 4; j++) { if (tetromino.shape[i][j]) { lcd_fill((tetromino.x + j) * 16, (tetromino.y + i) * 16, (tetromino.x + j + 1) * 16 - 1, (tetromino.y + i + 1) * 16 - 1, BLUE); } } } } int main(void) { SystemClock_Config(); // 配置系统时钟 GPIO_Init(); // 初始化GPIO lcd_init(); // 初始化LCD [^2] spawn_tetromino(); while (1) { draw_grid(); draw_tetromino(current_tetromino); move_down(); clear_lines(); delay(500); // 控制方块下落速度 } } ``` --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值