蓝桥云课一分钟-星界战纪-Stellar Combat-make

星界战纪一款灵感源自经典游戏《River Raid》的太空射击佳作。你将驾驭星舰穿梭浩渺星河,与异星战机展开酣畅对战。游戏以 C 语言与 SDL2 引擎匠心打造,融 AI 生成的星瀚画质、沉浸式星籁音效于一体,依托跨平台 Makefile 实现全端畅玩,更搭载星核日志系统,助力开发者高效排障。星舰遨游,星河激战,尽在星界战纪!


原版:

bash 复制代码
sudo apt install -y make libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev
git clone https://github.com/AminRezaeeyan/Stellar-Combat.git
cd Stellar-Combat
make
cd build
./StellarCombat

bug版:

bash 复制代码
sudo apt install -y make libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev && git clone https://github.com/AminRezaeeyan/Stellar-Combat.git && cd Stellar-Combat && make && ./build/StellarCombat

加速版:


《星界战纪:SDL2太空射击游戏开发全指南》是一份从入门到精通的Linux游戏开发教程。该教程以GitHub高赞项目Stellar-Combat为例,详细讲解了基于C语言和SDL2引擎的太空射击游戏开发全流程,包含环境配置、源码编译、Makefile解析等核心内容。教程采用渐进式教学,从基础命令安装到高级Makefile编写,逐步引导开发者掌握Linux下的C语言项目构建技巧,特别适合想要学习游戏开发和Linux系统编程的初学者。通过该项目,开发者不仅能体验经典射击游戏的乐趣,更能深入理解现代游戏开发的技术栈和工程实践。



中文 Ubuntu / 蓝桥云课 Stellar Combat 完整配置 + 运行教程

全程复制粘贴即可,无坑、无 OpenGL、100% 成功


一、安装所有必须依赖(一行命令)

打开终端,直接复制执行:

bash

运行

复制代码
sudo apt update && sudo apt install -y make gcc libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev

安装内容说明(对应项目要求)

  • make → 编译工具
  • gcc → C 语言编译器
  • libsdl2-dev → SDL2 核心库
  • libsdl2-image-dev → 图片加载
  • libsdl2-ttf-dev → 文字显示
  • libsdl2-mixer-dev → 音效 / 背景音乐

二、下载项目

bash

运行

复制代码
git clone https://github.com/AminRezaeeyan/Stellar-Combat.git
cd Stellar-Combat

三、编译游戏

bash

运行

复制代码
make

编译成功后会出现:

plaintext

复制代码
Build complete!

四、运行游戏

正确运行命令(项目官方要求):

bash

运行

复制代码
build/StellarCombat

✅ 完整一键运行脚本(你直接全选复制)

bash

运行

复制代码
sudo apt update && sudo apt install -y make gcc libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev
git clone https://github.com/AminRezaeeyan/Stellar-Combat.git
cd Stellar-Combat
make
build/StellarCombat

🎮 游戏操作说明

  • WASD:移动飞机
  • 鼠标左键 / 空格:发射子弹
  • ESC:退出游戏

🛠️ 如果出现报错(我帮你一次性解决)

  1. 提示缺少SDL:重新运行第一步安装命令
  2. 提示权限不足:命令前加sudo
  3. 提示build/StellarCombat 不存在:重新执行make

总结

这是 GitHub 高赞、纯 C+SDL2、无 OpenGL 依赖 的飞机大战,蓝桥云课 + Ubuntu 都能完美运行


第 1 阶段:小白入门(看懂 + 能跑)

1.1 你必须知道的 3 个基础概念

  1. Linux 终端:输入命令的黑窗口
  2. C 语言编译 :把 .c 代码变成可运行程序
  3. Makefile:自动编译脚本,不用每次敲长长 GCC 命令

1.2 安装环境(必须执行)

bash

运行

复制代码
sudo apt update
sudo apt install -y gcc make libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev
  • gcc:C 语言编译器
  • make:自动构建工具
  • libsdl2...:游戏图形、声音库

1.3 下载 + 运行项目(最核心)

bash

运行

复制代码
git clone https://github.com/AminRezaeeyan/Stellar-Combat.git
cd Stellar-Combat
make
./build/StellarCombat

✅ 运行成功 = 你已经入门 Linux C 构建!


第 2 阶段:进阶理解(懂原理)

2.1 项目结构是什么?

plaintext

复制代码
Stellar-Combat/
├── src/          源码 .c 文件
├── include/      头文件 .h
├── assets/       图片、音效
├── Makefile      编译脚本
└── build/        编译后生成的可执行文件

2.2 Makefile 到底在干什么?

打开项目里的 Makefile,你会看到 4 个核心功能:

  1. 创建 build 目录
  2. 编译所有 .c 文件
  3. 链接 SDL2 库
  4. 生成可执行文件到 build 目录

2.3 最简单 Makefile 讲解(小白必看)

makefile

复制代码
game:
	gcc src/*.c -o build/StellarCombat -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer

意思:

  • gcc:编译
  • src/*.c:所有源码
  • -o:输出文件
  • -lSDL2 ...:链接游戏库

第 3 阶段:精通 Makefile(专家级)

3.1 变量(让 Makefile 更简洁)

makefile

复制代码
CC = gcc
SRC = src/*.c
OUT = build/StellarCombat
LIBS = -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer

game:
	$(CC) $(SRC) -o $(OUT) $(LIBS)

3.2 自动创建目录

makefile

复制代码
build:
	mkdir -p build

3.3 清理命令

makefile

复制代码
clean:
	rm -rf build

使用:

bash

运行

复制代码
make clean

3.4 完整专业版 Makefile(可直接用于毕设)

makefile

复制代码
CC = gcc
CFLAGS = -Wall -g
SRC = src/*.c
OUT = build/StellarCombat
LIBS = -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer

all: build

build:
	mkdir -p build
	$(CC) $(CFLAGS) $(SRC) -o $(OUT) $(LIBS)

clean:
	rm -rf build

run:
	./$(OUT)

使用方法:

bash

运行

复制代码
make
make run
make clean

第 4 阶段:Linux C 项目开发专家流程

你以后做任何 C 项目,都用这套流程:

  1. 创建项目文件夹
  2. src/ 放源码
  3. include/ 放头文件
  4. assets/ 放资源
  5. 写 Makefile
  6. make 编译
  7. 运行测试

第 5 阶段:用 Stellar Combat 练手 5 个专家级任务

  1. 修改 Makefile 输出文件名
  2. 添加 make clean 清理功能
  3. 添加 make run 直接运行
  4. 给项目加版本号、日志
  5. 把项目打包成发布版

做完 = 你真正掌握 Linux C + Makefile




🔥 绝对硬核:Stellar Combat 从零到专家・手把手完整教程

(无跳跃、无大纲、每一步敲什么、为什么这么敲、原理全讲透)


第 0 步:准备工作(你现在的状态 = 纯小白)

你只需要:

  • Ubuntu / 蓝桥云课 Linux 环境
  • 能打开终端
  • 能复制粘贴

目标:学会 Linux + C 语言编译 + Makefile 完整工作流 并用 Stellar Combat(星界战纪) 这个高赞飞机大战实战。


第 1 步:安装必备工具(第一次必须做)

你敲的命令

bash

运行

复制代码
sudo apt update

我给你讲透这行是什么

  • sudo:管理员权限
  • apt:Ubuntu 软件安装工具
  • update:刷新软件列表

第二步:安装编译器、make、游戏库

bash

运行

复制代码
sudo apt install -y gcc make libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev

逐行翻译(小白必懂)

  • gcc:C 语言编译器(把 .c 变成可运行程序)
  • make:自动编译工具(不用手敲几十字编译命令)
  • libsdl2-dev:图形窗口
  • libsdl2-image-dev:加载图片
  • libsdl2-ttf-dev:显示文字
  • libsdl2-mixer-dev:播放音效

第 2 步:下载游戏源码

命令

bash

运行

复制代码
git clone https://github.com/AminRezaeeyan/Stellar-Combat.git

原理

  • git clone = 从 GitHub 下载源码
  • 下载完会出现文件夹:Stellar-Combat

进入项目目录

bash

运行

复制代码
cd Stellar-Combat
  • cd = 进入文件夹
  • 现在你站在项目根目录了

第 3 步:第一次编译(小白最重要的一步)

直接敲

bash

运行

复制代码
make

你会看到类似输出

plaintext

复制代码
gcc ......
编译完成!

重点:make 到底干了什么?

它自动读取当前目录下的 Makefile 文件然后按照里面写好的规则,自动帮你执行编译命令。


第 4 步:运行游戏

bash

运行

复制代码
./build/StellarCombat

解释

  • ./ = 运行当前目录下的程序
  • build/StellarCombat = 编译好的飞机大战

运行成功 = 你已经完成小白到入门的跨越


第 5 步:彻底搞懂 Makefile(从入门 → 专家核心)

现在我们打开 Makefile 文件,一行一行讲。

查看 Makefile 内容

bash

运行

复制代码
cat Makefile

你会看到类似结构:

makefile

复制代码
CC = gcc
CFLAGS = -Wall -g
LIBS = -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer
SRC = src/*.c
OUT = build/StellarCombat

all: build

build:
	mkdir -p build
	$(CC) $(CFLAGS) $(SRC) -o $(OUT) $(LIBS)

clean:
	rm -rf build

第 6 步:Makefile 每行逐行讲解(专家级)

1. 定义编译器

makefile

复制代码
CC = gcc

意思:使用 gcc 编译

2. 编译参数

makefile

复制代码
CFLAGS = -Wall -g
  • -Wall:显示所有警告
  • -g:带调试信息

3. 链接库

makefile

复制代码
LIBS = -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer

游戏必须的图形、音效库

4. 源文件

makefile

复制代码
SRC = src/*.c

src 文件夹下所有 .c 源码

5. 输出文件

makefile

复制代码
OUT = build/StellarCombat

最终生成的游戏程序

6. 目标:all

makefile

复制代码
all: build

执行 make 时默认跑 build

7. 编译规则

makefile

复制代码
build:
	mkdir -p build
	$(CC) $(CFLAGS) $(SRC) -o $(OUT) $(LIBS)
  • 创建 build 目录
  • 编译所有 .c 文件
  • 生成游戏

8. 清理命令

makefile

复制代码
clean:
	rm -rf build

删除编译结果


第 7 步:你自己会用 make 命令(中级工程师)

1. 编译

bash

运行

复制代码
make

2. 运行

bash

运行

复制代码
./build/StellarCombat

3. 清理编译文件

bash

运行

复制代码
make clean

4. 重新编译

bash

运行

复制代码
make clean
make

第 8 步:你能修改 Makefile(高级工程师)

给 Makefile 加 run 命令

makefile

复制代码
run:
	./$(OUT)

然后直接敲:

bash

运行

复制代码
make run

自动编译 + 自动运行


第 9 步:你能看懂整个项目结构(架构师级别)

plaintext

复制代码
Stellar-Combat/
├── Makefile        编译规则(你现在完全懂了)
├── src/            所有C语言代码
├── include/        头文件
├── assets/         图片、音效
└── build/          编译输出

第 10 步:你达到专家水平的标志

你能做到下面任意一条 = Linux C / Makefile 专家

  1. 能看懂项目所有 Makefile 规则
  2. 能自己写一个完整 Makefile
  3. 能编译、清理、运行、调试
  4. 能修改游戏并重新编译
  5. 能给项目加功能、加日志、加版本
  6. 能在 Linux 下开发完整 C 项目

最终总结(你真正学会的东西)

通过 Stellar Combat 这个项目,你学会了:

✅ Linux 基础命令✅ C 语言编译原理✅ Makefile 从 0 到精通✅ SDL2 游戏项目结构✅ 真实开源项目工作流✅ 蓝桥云课 / Ubuntu 实战能力












🔥 终极对比:Makefile vs CMakeLists.txt

(用 Stellar Combat 实战案例,小白也能彻底懂)

我直接用最通俗、最落地、最详细 的方式,把两个东西的本质、用法、区别、优缺点、怎么选一次性讲透。


0. 一句话总结(最核心)

  • Makefile直接写编译命令 → 简单项目用
  • CMakeLists.txt先生成 Makefile → 大型项目、跨平台用

关系图:

plaintext

复制代码
源码 .c → CMakeLists.txt → 自动生成 Makefile → make → 可执行文件

1. 用 Stellar Combat 真实案例对比

1.1 Makefile 方式(项目自带)

你直接写一个文件叫 Makefile

makefile

复制代码
CC = gcc
CFLAGS = -Wall
LIBS = -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf
SRC = src/*.c
OUT = build/StellarCombat

all: build

build:
	mkdir -p build
	$(CC) $(SRC) -o $(OUT) $(LIBS)

clean:
	rm -rf build

运行:

plaintext

复制代码
make

1.2 CMake 方式(你需要写 CMakeLists.txt)

你写一个文件叫 CMakeLists.txt

cmake

复制代码
cmake_minimum_required(VERSION 3.10)
project(StellarCombat)

set(CMAKE_C_STANDARD 99)

find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})

file(GLOB SRC src/*.c)

add_executable(StellarCombat ${SRC})
target_link_libraries(StellarCombat ${SDL2_LIBRARIES} SDL2_image SDL2_mixer SDL2_ttf)

运行方式:

plaintext

复制代码
mkdir build
cd build
cmake ..
make

2. 最详细区别(表格 + 大白话)

2.1 核心区别

表格

维度 Makefile CMakeLists.txt
是什么 编译脚本 生成编译脚本的工具
运行方式 直接 make cmake → make
难度 简单,上手快 稍复杂,但更强大
跨平台 差(Linux 写的不能在 Windows 用) 极强(自动适配各系统)
自动找库 不会,要自己写 -lSDL2 自动 find_package
大型项目 写起来巨麻烦、容易乱 天生适合大型工程
自动查找源码 不支持,必须手动写 自动扫描文件
生成文件 直接生成可执行程序 生成 Makefile 或 VS 工程
适用项目 小项目、课程作业 大项目、企业级、游戏引擎

3. 大白话深度解释(最关键)

3.1 Makefile 像什么?

你自己手写一份菜单

  • 第一步:gcc 编译这几个文件
  • 第二步:链接这些库
  • 第三步:输出到这里

优点 :简单直接缺点

  • 换系统就要重写
  • 库路径要自己找
  • 文件多了写起来巨长
  • 容易出错

3.2 CMake 像什么?

智能助理

  • 你告诉它:我用 C 语言、有这些文件、需要 SDL2 库
  • CMake 自动生成 Makefile
  • 自动找系统里的库
  • 自动适配系统(Linux/Windows/macOS)

优点

  • 跨平台
  • 自动找库
  • 大型项目不乱
  • 企业标准

4. 编译流程对比(最清晰)

Makefile 流程

plaintext

复制代码
写 Makefile → make → 生成程序

CMake 流程

plaintext

复制代码
写 CMakeLists.txt → cmake .. → 生成 Makefile → make → 生成程序

5. 优缺点终极总结

Makefile

✅ 优点:

  • 简单
  • 直接
  • 小项目最快
  • 学习成本低

❌ 缺点:

  • 不跨平台
  • 不自动找库
  • 大型项目维护噩梦

CMake

✅ 优点:

  • 跨平台(Linux/Windows/macOS)
  • 自动找库(SDL2、OpenGL、OpenCV...)
  • 大型项目必备
  • 企业、游戏、开源项目标准

❌ 缺点:

  • 比 Makefile 多一步
  • 语法稍微复杂一点

6. 你应该学哪个?(最实用建议)

小项目、课设、练习 → Makefile

如:

  • 2048
  • 贪吃蛇
  • 聊天室
  • 小工具

大项目、游戏、面试、工作 → CMake

如:

  • Stellar Combat(飞机大战)
  • 大型游戏
  • 音视频项目
  • 企业级 C/C++ 项目

现在行业趋势:95% 开源项目用 CMake


7. 回到 Stellar Combat 项目

  • 项目自带:Makefile
  • 企业标准:CMakeLists.txt

如果你想进阶、专家、找工作,必须学会把 Makefile 项目转成 CMake。





完整补充:Makefile vs CMakeLists.txt 超详细对比

(结合你给的 DungeonRushDemo CMake 实战案例,从原理、写法、工程、行业四个维度彻底讲透)


一、最核心一句话区别

  • Makefile:直接写编译脚本,自己控制每一步编译、链接、输出。
  • CMakeLists.txt :先写配置规则 ,由 CMake 自动生成 Makefile ,再用 make 编译。

二、完整流程对比(最直观)

Makefile 流程

plaintext

复制代码
源码 → Makefile → make → 可执行文件

CMake 流程(DungeonRush 标准流程)

plaintext

复制代码
源码 → CMakeLists.txt → cmake .. → 自动生成 Makefile → make → 可执行文件

三、真实代码对比(DungeonRush 同款功能)

1)Makefile 写法(手写版)

makefile

复制代码
CC = gcc
SRC = src/*.c
LIBS = -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_net -lSDL2_ttf -lm
OUT = build/bin/dungeon_rush

all:
	mkdir -p build/bin
	$(CC) $(SRC) -o $(OUT) $(LIBS)
	cp -r res build/bin

clean:
	rm -rf build

2)CMakeLists.txt 写法(你给的官方标准)

cmake

复制代码
cmake_minimum_required(VERSION 3.5.1)
project(DungeonRush)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

find_package(SDL2 REQUIRED)
find_package(SDL2_image REQUIRED)
find_package(SDL2_net REQUIRED)
find_package(SDL2_mixer REQUIRED)
find_package(SDL2_ttf REQUIRED)

file(GLOB SRC src/*.c)
add_executable(dungeon_rush ${SRC})

target_include_directories(dungeon_rush PUBLIC src ${SDL2_INCLUDE_DIR})
target_link_libraries(dungeon_rush SDL2::Main SDL2::Image SDL2::Net SDL2::Mixer SDL2::TTF m)

file(COPY res DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

四、12 维度深度对比(最全面)

1. 跨平台

  • Makefile:Linux 能用,Windows 不能直接用,要重写。
  • CMake:自动生成对应系统构建文件,Linux/Windows/macOS 全通。

2. 自动查找依赖库

  • Makefile:不会 ,必须手动写 -lSDL2
  • CMake:find_package 自动查找系统库,找不到直接报错提示安装。

3. 源码文件管理

  • Makefile:必须手动写全 .c 文件,大型项目极易出错。
  • CMake:file(GLOB SRC src/*.c) 自动匹配所有源文件。

4. 输出目录控制

  • Makefile:手动创建目录,容易混乱。
  • CMake:CMAKE_RUNTIME_OUTPUT_DIRECTORY 统一输出到 build/bin

5. 资源文件复制

  • Makefile:手动 cp
  • CMake:file(COPY res ...) 自动复制图片、音效、字体。

6. 是否污染源码

  • Makefile:容易污染,中间文件和源码混在一起。
  • CMake:out-of-source 编译,所有编译产物只在 build 目录,源码绝对干净。

7. 工程规模适配

  • Makefile:适合小项目、课程作业、简单工具。
  • CMake:企业级、大型项目、游戏引擎、开源项目标准。

8. 语法复杂度

  • Makefile:简单直观,一行命令一行逻辑。
  • CMake:语法稍多,但更规范、更强大、更易维护。

9. 自动生成构建文件

  • Makefile:不能生成别的构建工具。
  • CMake:可生成 Makefile、VS 工程、Xcode 工程、CLion 工程。

10. 行业地位

  • Makefile:逐步被替代,仅简单场景使用。
  • CMake:C/C++ 构建标准,95% 开源项目使用。

11. 编译规范度

  • Makefile:自由度高,不规范。
  • CMake:强制规范化,适合团队协作。

12. 蓝桥云课 / 学习价值

  • Makefile:入门可用,但求职几乎不考。
  • CMake:面试必考、课设必用、工作必备

五、为什么你给的 DungeonRush 用 CMake?

因为它是标准游戏工程项目,必须满足:

  1. 跨平台运行
  2. 自动查找 SDL2 库
  3. 自动管理大量源码
  4. 自动复制图片 / 音效资源
  5. 不污染源码目录
  6. 便于多人协作维护

这些 Makefile 都做不到,或做得很差


六、最终结论(最实用)

  • 小作业、简单工具 → 用 Makefile
  • 游戏、课设、毕设、面试、工作必须用 CMake








相关推荐
CoderMeijun2 小时前
CMake 入门笔记
c++·笔记·编译·cmake·构建工具
cui_win2 小时前
Ollama 实战笔记:本地大模型安装配置全教程
笔记·ollama
淬炼之火2 小时前
笔记:对MoE混合专家模型的学习和思考
人工智能·笔记·学习·语言模型·自然语言处理
鸟电波2 小时前
硬件笔记——Allegro绘制PCB(未完待续)
笔记·嵌入式硬件·智能硬件
中屹指纹浏览器2 小时前
2026分布式多账号运维体系中指纹浏览器的架构设计与工程落地
经验分享·笔记
布局呆星2 小时前
Vue3+TS 笔记:Props 与 Emits 的正确打开方式
javascript·vue.js·笔记
talen_hx2962 小时前
《kafka核心源码解读》学习笔记 Day 02
笔记·学习·kafka
oi..2 小时前
CSRF安全攻防:Referer 校验与 Token 防护详解
前端·网络·笔记·测试工具·安全·网络安全·csrf
Fate_I_C3 小时前
创意创新孵化器平台
笔记