【C++】SDL2环境安装及AI编码简单的俄罗斯方块游戏

article/2025/8/19 3:12:13

AI时代编码及文档功能

SDL2环境安装

Windows系统安装方法
下载SDL2开发库从官网(https://www.libsdl.org/download-2.0.php),选择SDL2-devel-2.0.x-mingw.tar.gz(MinGW)或SDL2-devel-2.0.x-VC.zip(Visual Studio)。解压后将以下文件复制到对应目录:

  • include文件夹内容 → 编译器头文件目录(如C:\MinGW\include\SDL2
  • lib文件夹内容 → 编译器库目录(如C:\MinGW\lib
  • SDL2.dll → 项目输出目录或系统C:\Windows\System32

Linux系统安装方法
通过包管理器直接安装:

sudo apt-get install libsdl2-dev  # Debian/Ubuntu
sudo yum install SDL2-devel       # CentOS/Fedora

macOS系统安装方法
使用Homebrew安装:

brew install sdl2


项目配置示例(CMake)

创建CMakeLists.txt文件,添加SDL2依赖:

cmake_minimum_required(VERSION 3.10)
project(Tetris)
find_package(SDL2 REQUIRED)
add_executable(tetris main.cpp)
target_include_directories(tetris PRIVATE ${SDL2_INCLUDE_DIRS})
target_link_libraries(tetris ${SDL2_LIBRARIES})


简单俄罗斯方块实现代码框架

初始化SDL2窗口与渲染器

#include <SDL2/SDL.h>
#include <vector>const int GRID_WIDTH = 10;
const int GRID_HEIGHT = 20;
const int CELL_SIZE = 30;SDL_Window* window = nullptr;
SDL_Renderer* renderer = nullptr;bool init() {if (SDL_Init(SDL_INIT_VIDEO) < 0) return false;window = SDL_CreateWindow("Tetris", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, GRID_WIDTH * CELL_SIZE, GRID_HEIGHT * CELL_SIZE, 0);renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);return window && renderer;
}

定义方块形状
使用4x4矩阵表示7种经典方块:

std::vector<std::vector<std::vector<int>>> SHAPES = {{{1,1,1,1}, {0,0,0,0}}, // I{{1,1}, {1,1}},         // O{{0,1,1}, {1,1,0}}      // Z// 添加其他形状...
};

游戏主循环逻辑

void gameLoop() {bool running = true;SDL_Event e;while (running) {while (SDL_PollEvent(&e)) {if (e.type == SDL_QUIT) running = false;if (e.type == SDL_KEYDOWN) {switch (e.key.keysym.sym) {case SDLK_LEFT:  moveCurrentPiece(-1); break;case SDLK_RIGHT: moveCurrentPiece(1);  break;case SDLK_DOWN:  dropPiece();          break;}}}SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);SDL_RenderClear(renderer);renderGrid();SDL_RenderPresent(renderer);}
}

碰撞检测实现

bool checkCollision(const std::vector<std::vector<int>>& grid, int x, int y) {for (int i = 0; i < 4; ++i) {for (int j = 0; j < 4; ++j) {if (currentPiece[i][j] && (x + j < 0 || x + j >= GRID_WIDTH || y + i >= GRID_HEIGHT || grid[y + i][x + j])) {return true;}}}return false;
}


进阶功能建议

  • 添加分数系统:消除行时累计分数
  • 实现影子预览:显示方块下落最终位置
  • 音效支持:使用SDL_mixer播放背景音乐

SDL2环境安装及AI编码简单的俄罗斯方块游戏

VS配置及编码

vs2022配置SDL环境

 SDL2相关文件

 https://download.csdn.net/download/wenchun001/90932057

成品图


http://www.hkcw.cn/article/HUthlDLUxA.shtml

相关文章

美国政府关税政策面临激烈的司法博弈 裁决引发贸易策略调整

美国国际贸易法院28日裁定特朗普政府的一揽子关税政策非法,称联邦法律并未赋予总统“无限制的权力”对来自几乎所有国家的进口商品征税。这是对美国本届政府关税政策的首次重大法律挑战。在这种情况下,美国政府将不得不采取更缓慢的策略,启动更耗时的贸易调查,并依靠其他贸…

【深度学习新浪潮】什么是混合精度分解?

混合精度分解是大模型压缩领域的一项核心技术,通过将模型参数或计算过程分解为不同精度的子单元,在保持性能的同时显著降低存储和计算成本。其核心思想是对模型中敏感度高、信息量大的部分采用高精度表示,而对冗余度高、敏感度低的部分采用低精度表示,从而在精度损失与压缩…

Arbitrary Response Filter Design and Analysis--任意响应滤波器设计与分析(待完成)

Create Desired Absorption Filter创建所需吸收滤波器 任务一 &#xff08;注意&#xff1a;函数 absorption是用户我&#xff0c;定义好的.m文件需要放在工作路径下才可调用&#xff09; 以下是我定义的函数 function alpha absorption(f) % ABSORPTION 计算海水中声波的…

t013-集团门户网站设计与实现 [基于springboot+Vue 含材料及源码]

项目演示视频 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装集团门户网站软件来发挥其高效地信息处理的作…

防爆对讲机:易燃易爆环境中的高效指挥调度工具

在石油开采平台、化工生产车间、煤矿井下等易燃易爆环境中&#xff0c;一个微小的电火花或设备表面高温都可能引发灾难性后果。传统通信设备因存在电磁辐射、机械摩擦或电池短路风险&#xff0c;往往被列为危险作业场景的禁忌品。而防爆对讲机的出现&#xff0c;正是为了在保障…

【博客系统】博客系统第十一弹:从 0 到 1 搭建 Java 部署环境并部署 web 项目到 linux 系统

搭建 Java 部署环境 apt apt&#xff08;Advanced Packaging Tool&#xff09;是 Linux 软件包管理工具&#xff0c;用于在 Ubuntu、Debian 和相关 Linux 发行版上安装、更新、删除和管理 deb 软件包。 大多数 apt 命令必须以具有 sudo 权限的用户身份运行。 apt 常用命令 列出…

新一线城市公布,成都连续11年第一 综合实力再获认可

新一线城市公布,成都连续11年第一 综合实力再获认可。5月28日,第一财经旗下城市数据研究智库新一线城市研究所发布了《2025新一线城市魅力排行榜》。15个进入新一线的城市依次为:成都、杭州、重庆、武汉、苏州、西安、南京、长沙、郑州、天津、合肥、青岛、东莞、宁波、佛山…

特朗普首次长文回应关税措施被叫停 抨击裁决并指责幕后势力

美东时间周四晚上,特朗普在其社交媒体平台Truth Social上发长文,抨击了美国国际贸易法院叫停其关税政策的裁决。周三,美国国际贸易法院裁定,特朗普无权对几乎所有国家征收一揽子全面关税,即他所谓的“解放日关税”在法律层面无效。法官们认为,加征关税的权力应由国会行使…

石破茂主动给特朗普打了25分钟电话 贸易协议势头增强

日本首相石破茂于29日主动致电美国总统特朗普,双方讨论了关税、外交及安全等议题。石破茂表示,通过此次对话,双方进一步加深了了解。这次通话持续了25分钟,距离两人上次对话还不到一星期。据日媒报道,石破茂向特朗普提出希望达成符合两国利益的贸易协议,并要求美方重新评…

国际调解院落户香港有何深意 凝聚国际人才

国际调解院将在香港成立,5月30日在港举行《关于建立国际调解院的公约》签署仪式。在香港特区立法会行政长官互动交流答问会上,行政长官李家超表示,国际调解院在港设立将为香港带来多方面利益,认为其影响深远,可不断发挥影响力,凝聚不同国家和地区的人才。特区政府愿意推荐…

58岁梁实发文称将参加第29次高考 梦想与挑战并存

梁实今年58岁,即将参加他的第29次高考。他表示,今年看书时间少,底气有些不足。查询历年成绩显示,梁实的高考分数均超过400分。对此,他回应说,400多分是个非常基础的分数,感觉一直停滞不前。上大学一直是梁实的梦想。尽管别人可能认为他多年来的坚持是躺平的表现,但他羡…

烟台一高校校长论文抄袭被免职 学术诚信受重视

近日,“烟台科技学院校长硕士论文涉嫌严重抄袭”一事引发社会广泛关注。5月29日,烟台科技学院就此事发布声明。声明中提到,有网民向媒体反映该事件后,学校进行了查核,确认情况属实。学校董事会高度重视,为严肃学术纪律,维护高校声誉和教育公信力,决定免去马红坤同志烟台…

TOTP算法原理与实现

一、原理说明 基于 HMAC-SHA1 生成的 20 字节哈希值&#xff0c;通过 ​偏移量截取法​ 生成 32 位整数示例&#xff1a; 假设 HMAC-SHA1 生成的 20 字节哈希值为&#xff1a; 1f 86 98 69 0e 02 ca 16 61 85 50 ef 7f 19 da 8e 94 5b 55 5a&#xff08;字节编号从 0 到 19&a…

JAVA与C语言之间的差异(二)

一、while循环&#xff0c;do while循环 众所周知&#xff0c;while循环的结构是这样的&#xff1a; while(循环条件) {循环语句;} 在C语言中&#xff0c;可以直接再循环条件处写1&#xff0c;表示死循环&#xff0c;直到执行break才可以跳出&#xff0c;但是在JAVA中不可以&…

环境温度通过H2A.Zub和H3K27me3动态调控拟南芥细胞命运决定

2025年4月22日&#xff0c;中国科学院遗传与发育生物学研究所肖军研究组在Developmental Cell在线发表了题为Dynamic control of H2A.Zub and H3K27me3 by ambient temperature during cell fate determination in Arabidopsis的研究论文&#xff0c;本研究综合运用ChIP-seq、C…

国际调解院正式落户香港有哪些亮点 凝聚国际人才

国际调解院将在香港成立,计划于5月30日在港举行《关于建立国际调解院的公约》签署仪式。在香港特区立法会行政长官互动交流答问会上,李家超表示,国际调解院在港设立对香港多方面有利,认为其影响深远,可不断发挥影响力,凝聚不同国家和地区的人才。他表示,特区政府愿意将人…

特朗普关税政策为何被暂时恢复 法院裁决引发争议

5月29日,美国联邦巡回上诉法院批准了特朗普政府的请求,暂时搁置了美国国际贸易法院此前做出的禁止执行依据《国际紧急经济权力法》对多国加征关税措施的裁决。联邦巡回上诉法院在裁决书中表示,在审议相关动议文件期间,美国国际贸易法院在这些案件中作出的判决和永久性禁令将…

中国寻亲网将关闭 负责人回应原因 公司注销不影响运营

中国寻亲网将关闭 负责人回应原因 公司注销不影响运营。近日,中国寻亲网在官方网站发布公告,宣布将于2025年7月15日正式关闭服务器。自5月1日起,该网站已停止发布新的寻亲信息,仅保留原有数据的修改功能。这一消息引起众多网友关注,并引发对关闭原因的猜测。寻子家长、电影…

大众中国CEO:中国人喜欢智能 欧洲人看中实用 市场偏好差异显著

大众中国CEO:中国人喜欢智能 欧洲人看中实用 市场偏好差异显著。大众中国CEO贝瑞德指出,中国消费者和欧洲消费者在电动汽车的偏好上存在显著差异。中国年轻用户群体对“智能座舱”和“语音交互”功能习以为常,电动车主的平均年龄不到35岁,他们崇尚数字体验。相比之下,欧洲…

C库-进程

库 头文件: #include<stdio.h> <>代表区系统路径下查找头文件 /usr/include #include"head.h" ""代表先去当前路径下查找头文件&#xff0c;找不到再去系统路径下查找 头文件也就是以.h结尾的文件&#xff0c;其中包含&#xff1a;宏定义…