云课五分钟-03第一个开源游戏复现-贪吃蛇

news2024/11/25 10:47:12

前篇

云课五分钟-02第一个代码复现-终端甜甜圈C++


视频

云课五分钟-03第一个开源游戏复现-贪吃蛇

一个终端的动态字符显然很难调动编程的积极性,那么更有趣的开源的游戏也许是一种更好的启发。 


文本

蓝桥ROS机器人之绚丽贪吃蛇

如何在Linux下使用 DungeonRush-master 开源游戏

在Linux下使用DungeonRush-master开源游戏,您可以按照以下步骤进行操作:

  1. 获取DungeonRush-master源代码:首先,您需要从开源游戏的官方仓库或托管平台下载DungeonRush-master的源代码。这通常是一个压缩文件或Git仓库。您可以使用Git工具克隆仓库,或者下载压缩文件并解压缩。

  2. 安装依赖:在Linux上编译和运行DungeonRush-master游戏可能需要一些依赖库和工具。请确保您的系统上已安装所需的依赖项。这些依赖项可能包括开发工具链、图形库、音频库等。您可以查阅DungeonRush-master的文档或项目说明,了解并安装所需的依赖项。

  3. 编译游戏:一旦您获得源代码并安装了依赖项,接下来是编译游戏。进入源代码目录,查找是否有编译脚本(如Makefile或CMakeLists.txt)。如果有,您可以使用相应的构建工具(如make或cmake)进行编译。执行编译命令后,将生成可执行文件或游戏二进制文件。

  4. 运行游戏:当编译完成后,您将得到一个可执行的游戏二进制文件。在终端中导航到游戏二进制文件所在的目录,并运行该文件。通常,您可以使用以下命令运行游戏:

 

bash

./game_binary_name

其中,"game_binary_name"是生成的游戏二进制文件的名称。运行该命令后,游戏应该开始运行并在Linux上启动。

请注意,上述步骤提供了一般性的指导,具体的步骤可能因DungeonRush-master游戏的特定要求而有所不同。确保您阅读并遵循游戏的文档和项目说明,以确保正确地安装、编译和运行游戏。


这个开源游戏里面有大量代码,而非一个文件。

仅靠g++,可能力不能及啊……

 

怎么办呢?

需要CMakelist.txt。

CMakeLists.txt文件是用于定义项目的构建规则和设置编译选项的配置文件,它被CMake构建系统使用。CMake是一个跨平台的构建工具,可以自动生成特定平台的构建脚本,如Makefile或Visual Studio项目文件等,从而方便用户在不同的操作系统和开发环境中使用统一的方式进行构建。CMakeLists.txt文件通常位于项目的根目录下,它使用CMake自定义的一种简单的语言来描述构建过程,并指定项目的源代码文件、依赖库、可执行程序等。

cmake_minimum_required(VERSION 3.5.1)
project(DungeonRush VERSION 0.1.0
                    DESCRIPTION "A game inspired by snake"
                    LANGUAGES C)

# Add SDL2 CMake modules
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)

# Set output path
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

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

set(BIN_NAME dungeon_rush)

file(GLOB SRC src/*.c)

add_executable(${BIN_NAME} ${SRC})

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

file(COPY res DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

这段代码是一个CMakeLists.txt文件,它用于构建一个名为DungeonRush的游戏项目。以下是对每一部分的详细分析:

  1. cmake_minimum_required(VERSION 3.5.1)

    • 这一行指定了构建该项目所需的CMake的最低版本为3.5.1。
  2. project(DungeonRush VERSION 0.1.0 DESCRIPTION "A game inspired by snake" LANGUAGES C)

    • 这里定义了项目的基本信息。项目名为DungeonRush,版本号为0.1.0,项目描述为“一个受snake启发的游戏”,编程语言为C。
  3. list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)

    • 这一行将当前目录下的cmake/sdl2目录添加到CMAKE_MODULE_PATH变量中,以便CMake能够找到SDL2相关的模块。
  4. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

    • 这里设置了运行时输出目录,即生成的可执行文件将放置在构建目录下的bin文件夹中。
  5. find_package 函数调用

    • 这些行用于查找和加载所需的SDL2库和相关的库(如SDL2_image、SDL2_net、SDL2_mixer和SDL2_ttf)。这些库是开发游戏通常需要的库。
  6. set(BIN_NAME dungeon_rush)

    • 设置变量BIN_NAME的值为"dungeon_rush",代表生成的可执行文件的名称。
  7. file(GLOB SRC src/*.c)

    • 使用GLOB函数将src目录下的所有.c源文件存储到SRC变量中。
  8. add_executable(${BIN_NAME} ${SRC})

    • 用add_executable函数创建一个可执行文件,目标名称为变量BIN_NAME的值,源文件列表为SRC变量中存储的文件。
  9. target_include_directories 函数调用

    • 这些行用于向目标添加头文件目录,以便编译器能够找到必要的头文件。
  10. target_link_libraries 函数调用

    • 这行代码用于将目标链接到所需的库。这里链接了SDL2的多个库(如SDL2::Main, SDL2::Net等)以及m库(通常是数学库)。
  11. file(COPY res DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})

  • 这行代码将res目录(通常是资源目录)复制到运行时输出目录。

这个CMakeLists.txt文件整体上用于配置一个使用SDL2库和相关库的游戏项目的构建。它设置了项目的基本信息、源代码文件的组织、头文件和库的路径,以及最终的输出目录。通过这个配置文件,CMake可以生成适用于特定平台的构建脚本,从而简化项目的构建过程。


如果要想顺利使用开源代码,readme.md也必然要读一读的。

这是一个关于游戏“Dungeon Rush”的发布说明和玩法介绍。

  1. 发布说明:这里列出了几个版本更新,包括修复的错误以及添加的功能,例如多人/局域网模式。

  2. 游戏玩法

    • 单人模式:玩家使用WASD键移动,收集英雄以扩大自己的军队,同时防御来自怪物的攻击。每个级别都有一个英雄队列的目标长度,一旦达到,玩家将被送到下一个级别并重新开始。根据玩家所处的级别,许多因素(例如生命值和伤害、增益和减益的持续时间、怪物的数量和强度等)都会进行调整。
    • 多人模式:玩家使用WASD键和箭头键移动。这个模式是竞争性的,玩家在防御怪物的同时也要防御来自队友的攻击。
    • 武器:怪物会随机掉落强大的武器。不同种类的英雄可以装备不同的武器。这里还提到了作者最喜欢的武器——ThunderStaff。
    • 增益/减益:攻击有可能触发自己身上的某种增益或敌人身上的减益。例如,IceSword可以冻结敌人,HolySword可以给你一个吸收伤害的护盾,使你免疫于DeBuff。GreatBow可以增加所有英雄的攻击伤害。同时,某些怪物也会有武器可以给你施加减益!(例如讨厌的泥泞怪物可以减慢你的移动速度)。
  3. 依赖项:项目所需的依赖不过是常见的SDL2库。

对于你提供的文本,我并没有找到具体的问题或疑问。如果你有关于这段代码的具体问题(例如编译错误、运行错误、逻辑错误或其他疑问),请明确指出,我会尽量为你提供帮助。

从你给出的文本中,我看到你提供了关于“DungeonRush”游戏的更多详细信息,包括如何在openSUSE和MacOS上安装依赖项,以及如何编译该游戏。你还列出了一些已知的问题和游戏的许可及来源信息。

对于这部分内容,我注意到以下几点:

  1. 依赖安装:你为openSUSE和MacOS提供了安装依赖的命令,这非常有用。对于其他操作系统,你建议用户参考SDL教程来设置环境,这也是一个很好的通用建议。
  2. 编译:你提供了一个简单的编译流程,首先使用cmake配置构建目录,然后进行构建。这为用户提供了一个清晰的构建指南。
  3. 已知问题:你列出了一个与某些NVIDIA显卡在Linux上的速度过快有关的问题。提供这样的信息可以帮助用户了解游戏的当前限制或问题,并可能激发社区找到解决方案。
  4. 许可和来源:你明确指出了代码中使用的不同媒体的许可,这是一个很好的做法,因为它帮助用户了解他们可以在何种条件下使用和重用这些资源。但是,你也提到了有一些音频、位图和字体的许可未知,这可能会引发一些问题或混淆。如果可能的话,最好是追踪并列出所有资源的许可和来源。

建议:

  • 对于那些未知许可的资源,如果可能的话,你可能需要联系原始创作者或寻找其他替代资源,以确保你的项目在许可方面是清晰和合规的。
  • 考虑为你的项目创建一个FAQ(常见问题解答)或文档,列出这些编译指南、已知问题和许可信息,这样可以为用户提供更为详细和集中的信息来源。

总的来说,你提供了大量有关“DungeonRush”游戏的信息和资源,这看起来是一个很有趣的项目。确保用户清楚地知道如何安装、编译和游戏许可是非常重要的,你已经在这方面做了很多工作。如果还有其他问题或需要进一步的澄清,随时提问。

在上述交流中,我们主要讨论了“DungeonRush”游戏的发布说明、玩法、安装依赖、编译指南、已知问题以及许可和来源等方面的信息。这些信息详细地介绍了游戏的特点和玩法,以及如何在不同的操作系统上安装游戏所需的依赖库,并提供了游戏的编译指南。

此外,我们还讨论了游戏的许可和来源问题,以确保用户在使用和重用游戏资源时能够遵守相应的许可规定。对于已知的问题,我们也进行了列举,以便用户了解游戏的当前限制和问题,并可能有助于社区找到解决方案。

总之,这次交流提供了关于“DungeonRush”游戏的全面信息,包括安装、编译、许可等方面的指南和问题,为用户更好地理解和玩这款游戏提供了帮助。

基于上面提供的资料,以下是在Ubuntu环境下安装和使用“DungeonRush”游戏的详细流程:

  1. 安装依赖项
    打开终端,并输入以下命令来安装游戏所需的SDL库:

sudo apt update
sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
  1. 获取游戏代码
    你可以从游戏的官方网站或代码仓库下载游戏的源代码。如果代码托管在GitHub上,你可以使用git命令克隆代码库。假设游戏代码库名为“DungeonRush”,执行以下命令:

git clone https://github.com/USERNAME/DungeonRush.git
cd DungeonRush

注意替换USERNAME为实际的用户名或组织名。
3. 编译游戏
使用CMake进行构建和编译。在终端中执行以下命令:

mkdir build
cd build
cmake ..
make

这将创建一个名为“build”的目录,并在其中编译游戏。
4. 运行游戏
编译完成后,你可以在“build”目录中找到可执行文件。在终端中执行以下命令来运行游戏:

./dungeon_rush

游戏应该开始运行,你可以使用键盘控制角色移动,进行游戏。
5. 多人模式
如果游戏支持多人模式,你可以通过局域网与朋友一起玩游戏。确保你和你的朋友在同一网络中,并获取彼此的IP地址。然后,通过在命令行参数中指定IP地址来连接对方。例如:

./dungeon_rush --multiplayer --ip=YOUR_FRIEND_IP_ADDRESS

替换YOUR_FRIEND_IP_ADDRESS为实际的朋友的IP地址。具体的多人模式参数和选项可能会根据游戏而有所不同,请参考游戏的文档或说明进行配置。

这些步骤提供了在Ubuntu环境下安装和使用“DungeonRush”游戏的一般流程。请注意,具体的步骤可能会因为游戏的不同而有所变化。如果有任何疑问,请参考游戏的官方文档或社区支持渠道获取更详细的指导。

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1213954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode】每日一题 2023_11_15 K 个元素的最大和(脑筋急转弯+数学)

文章目录 刷题前唠嗑K 个元素的最大和题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode? 启动!!! 首先声明一点啊,这个脑筋急转弯的题目标签可不是我想的啊,这个是 LeetCode 官方给这道题标注的啊 K 个元素的最大和…

贪吃蛇小游戏

一. 准备工作 首先获取贪吃蛇小游戏所需要的头部、身体、食物以及贪吃蛇标题等图片。、 然后,创建贪吃蛇游戏的Java项目命名为snake_game,并在这个项目里创建一个文件夹命名为images,将图片素材导入文件夹。 再在src文件下创建两个包&#…

SOLIDWORKS Simulation助您分析参数变化时的趋势及寻找设计参数的最优值

在分析一个装配体时,载荷、几何体及材料常数都被当做设计变量来处理,而设计情形可以很方便的应用到这种分析中,结果能以设计变量的函数进行图表来显示,同时它可以运行多个算例,从而帮助我们获得能够用于优化设计的趋势…

VIVADO+FPGA调试记录

vivadoFPGA调试记录 vitis编译vivado导出的硬件平台,提示xxxx.h file cant find vitis编译vivado导出的硬件平台,提示’xxxx.h file cant find’ 此硬件平台中,包含有AXI接口类型的ip。在vitis编译硬件平台时,经常会报错&#xf…

rk3588 usb网络共享连接

出门在外总会遇到傻 X 地方 没有能连接公网的 网口给香橙派连网 而我的香橙派5plus 没有wifi模块。。。话不多说 在手机上看一眼手机的mac地址, 在rk3588 上执行以下命令: sudo ifconfig usb0 down sudo ifconfig usb0 hw ether 58:F2:FC:5D:D4:7A //该m…

开源博客项目Blog .NET Core源码学习(6:雪花算法)

Blog .NET项目中有多种数据类生成对象实例时需要唯一标识,一般做法要么使用GUID,也可以保存到数据库时使用数据库表的自增长ID,也可以自定义规则以确保产生不重复的唯一标识,而在Blog .NET项目中使用雪花算法生成唯一标识。   关…

重生之我是一名程序员 31

大家晚上好!前面给大家分享了指针与数组的知识,所以今天要给大家分享的知识是——指针数组 相信大家在这里都会有疑问,指针数组是指针还是数组? 在这我们可以类⽐⼀下其他类型的数组,比如整型数组是存放整型的数组&am…

【Linux】进程替换|exec系列函数

文章目录 一、看一看单进程版的进程替换二、进程替换的原理三、多进程版——验证各种程序替换接口exec系列函数execlexeclpexecvexecvp tipsexecleexecve 四、总结 一、看一看单进程版的进程替换 #include<stdio.h> #include<unistd.h> #include<stdlib.h>i…

算法萌新闯力扣:存在重复元素II

力扣题&#xff1a;存在重复元素II 开篇 这道题是217.存在重复元素的升级版&#xff0c;难度稍微提高。通过这道题&#xff0c;能加强对哈希表和滑动窗口的运用。 题目链接:219.存在重复元素II 题目描述 代码思路 1.利用哈希表&#xff0c;来保存数组元素及其索引位置 2.遍…

求组合数(笔记)

//组合数2&#xff0c;取值在1e5 //Cab a! / (a - b)! * b! #include<iostream> using namespace std; using ll long long; const ll N 1e4 9, mod 1e9 7; ll fact[N], infact[N];//阶乘&#xff0c;逆元阶乘ll qmi(ll a, ll k, ll p)//逆元模板 {ll res 1;while…

MySQL表的增查(进阶)

目录 1.插入查询结果 2.查询 2.1聚合查询 2.1.1聚合函数 2.1.2GROUP BY子句 2.1.3HAVING 2.2联合查询 2.2.1内连接 2.2.2外连接 2.2.3自连接 2.3子查询 2.4合并查询 1.插入查询结果 在一张表中插入另一张表的查询结果。 语法为&#xff1a; insert into 表名 (列…

内存泄漏、new、delete

1. 内存泄漏 内存泄漏&#xff1a;指针被销毁&#xff0c;指针指向的空间依旧存在 2. new过程 与内存分配、构造函数有关 1&#xff09;分配空间&#xff1a;void* mem operator new( sizeof( ) )&#xff0c;内部调用malloc 2&#xff09;static_cast<目标类型>(mem) …

AI创作系统ChatGPT网站源码+支持最新GPT-Turbo模型+支持DALL-E3文生图/AI绘画源码

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

你是想被ChatGPT改变,还是改变软件开发的未来?丨IDCF

人工智能技术的发展&#xff0c;正在深刻地改变着我们的生活和工作方式。在软件工程领域&#xff0c;ChatGPT作为一种新兴的人工智能技术&#xff0c;正在逐渐地被应用到软件开发的各个环节中。那么&#xff0c;ChatGPT对每个人的影响是什么呢&#xff1f; 一、对软件开发人员…

uboot 添加命令

前言 uboot 中有个 ping 命令&#xff0c;用来检查网络是否通畅。 我们照着这个命令添加一个 ping2 命令。 step1 cmd/net.c #if defined(CONFIG_CMD_PING2) static int do_ping2(struct cmd_tbl *cmdtp, int flag, int argc,char *const argv[]) {if (argc < 2)return …

vue3+webpack+elementplus+国际化+axios封装+pinia

文章目录 创建项目 eslint prettier切换pinia&#xff08;后补上&#xff09;创建项目eslint prettier注意 自动格式化 element plus注意 element plus icon注意&#xff1a; 国际化注意 axios 封装 最近菜鸟自己搭建一个项目&#xff0c;想着 vue3 都出来这么久了&#xff…

A股风格因子看板 (2023.11 第10期)

该因子看板跟踪A股风格因子&#xff0c;该因子主要解释沪深两市的市场收益、刻画市场风格趋势的系列风格因子&#xff0c;用以分析市场风格切换、组合风格暴 露等。 今日为该因子跟踪第10期&#xff0c;指数组合数据截止日2023-10-31&#xff0c;要点如下 近1年A股风格因子收益…

操作系统课程设计

操作系统课程设计 介绍 1. 系统介绍 具有进程管理&#xff0c;磁盘文件管理的操作系统&#xff0c;用于熟悉操作系统中CPU运行的三种状态&#xff0c;运行、就绪、阻塞。对于文件磁盘管理系统&#xff0c;具有相应的文件读取、写入、删除操作。 2. 运行系统的基础环境 运行…

demo(二)eurekaribbon----服务注册、提供与消费

前一篇实现了服务注册中心的搭建&#xff0c;并提供服务注册到注册中心上。在之前的基础上&#xff0c;实现服务消费。 一、相关介绍 1、RestTemplate工具 2、LoadBalanced注解 二、ribbon示例&#xff1a; 先启动eureka-service注册中心&#xff0c;再将eureka-client修改…

Java代码实现贪吃蛇游戏

一、创建新项目 创建一个新的项目&#xff0c;并命名。创建一个名为images的文件夹用来存放游戏相关图片。然后再在项目的src文件下创建一个com.xxx.view的包用来存放所有的图形界面类&#xff0c;创建一个com.xxx.controller的包用来存放启动的入口类(控制类)。如下所示&…