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

前篇

云课五分钟-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.0DESCRIPTION "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.rhkb.cn/news/193075.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java学习—十四】反射机制调用指定方法、指定属性(5)

文章目录 1. 调用指定方法2. 调用指定属性 1. 调用指定方法 通过反射,调用类中的方法,通过 Method 类完成。步骤:     ①通过 Class 类的 getMethod(String name,Class...parameterTypes) 方法取得一个 Method 对象,并设置此…

C#使用时序数据库 InfluxDB

一、安装 https://docs.influxdata.com/influxdb/v2/install/?tWindows 解压后使用cmd运行 访问 localhost:8086 配置 第一次登入会初始化 配置登入账号 保存TOKEN 这个TOKEN用于后期代码链接访问数据库,忘记了只能删除重新生成 点击QUCK START进入管理页面 …

【vue实战项目】通用管理系统:api封装、404页

前言 本文为博主的vue实战小项目系列中的第三篇,很适合后端或者才入门的小伙伴看,一个前端项目从0到1的保姆级教学。前面的内容: 【vue实战项目】通用管理系统:登录页-CSDN博客 【vue实战项目】通用管理系统:封装to…

Android抓包工具—Fiddler详解

前言 平时和其他大佬交流时,总会出现这么些话,“抓个包看看就知道哪出问题了”,“抓流量啊,payload都在里面”,“这数据流怎么这么奇怪”。 👉这里出现的名词,其实都是差不多的意思啊&#xf…

ElementUI表格el-table自适应高度(表头表尾固定不动)

ElementUI表格el-table自适应高度&#xff08;表头表尾固定不动&#xff09;&#xff0c;内容只在中间滚动&#xff0c;效果如图&#xff1a; 实现代码 <div class"mt-10" :style"{height:tableHeight}"><div class"operation-bar">…

PyCharm 安装库时显示连接超时

在setting->python Interpreter 中用“” 安装库时&#xff0c;出现一个弹窗&#xff0c;提示信息如下&#xff1a; Error updating package list: Connect timed out 通过查阅资料&#xff0c;发现是镜像源的问题&#xff0c;具体的解决方案如下&#xff1a; 1. 更新一下…

电源电压范 围宽、功耗小、抗干扰能力强的国产芯片GS069适用于电动工具等产品中,采用SOP8的封装形式封装

GS069电动工具直流调速电路是CMOS专用集成电路&#xff0c;具有电源电压范 围宽、功耗小、抗干扰能力强等特点。通过外接电阻网络&#xff0c;改变与之相接 的VMOS 管的输出&#xff0c;达到控制电动工具转速的作用。该电路输出幅值宽&#xff0c; 频率变化小&#xff0c;占空比…

云原生下GIS服务规划与设计

作者&#xff1a;lisong 目录 背景云原生环境下GIS服务的相关概念GIS服务在云原生环境下的规划调度策略GIS服务在云原生环境下的调度手段GIS服务在云原生环境下的服务规划调度实践 背景 作为云原生GIS系统管理人员&#xff0c;在面对新建的云GIS系统时&#xff0c;通常需要应对…

2023-2024-2 高级语言程序设计-二维数组

7-1 矩阵运算 给定一个nn的方阵&#xff0c;本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数n&#xff08;1<n≤10&#xff09;&#xff1b;随后n行&#xff0c;每行给出…

uniapp——项目day05

购物车页面 结算区域 把结算区域封装为组件 1. 在 components 目录中&#xff0c;新建 my-settle 结算组件&#xff1a; 2. 初始化 my-settle 组件的基本结构和样式&#xff1a; <template><view class"my-settle-container">结算组件</view> …

【中间件篇-Redis缓存数据库05】Redis集群高可用高并发

Redis集群 Redis Cluster是Redis的分布式解决方案&#xff0c;在3.0版本正式推出&#xff0c;有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时&#xff0c;可以采用Cluster架构方案达到负载均衡的目的。之前,Redis分布式方案一般有两种: 1、客户端分…

使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统

随着时间的积累&#xff0c;日志数据会越来越多&#xff0c;当您需要查看并分析庞杂的日志数据时&#xff0c;可通过FilebeatKafkaLogstashElasticsearch采集日志数据到Elasticsearch中&#xff0c;并通过Kibana进行可视化展示与分析。本文介绍具体的实现方法。 一、背景信息 …

Python代码运行速度提升技巧!Python远比你想象中的快~

文章目录 前言一、使用内置函数二、字符串连接 VS join()三、创建列表和字典的方式四、使用 f-Strings五、使用Comprehensions六、附录- Python中的内置函数总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项…

iPhone或在2024开放第三方应用商店。

iPhone或开放第三方应用商店&#xff0c;可以说这是一个老生常谈的话题。对于像是iOS这样封闭的系统来说&#xff0c;此前传出苹果可能开放侧载消息的时候&#xff0c;又有谁能信&#xff0c;谁会信&#xff1f; 如果是按照苹果自身的意愿&#xff0c;这种事情自然是不可能发生…

文件上传 [ACTF2020 新生赛]Upload1

打开题目&#xff0c;发现是一道文件上传题目 随便上传个一句话木马上去 发现网站前端有白名单限制&#xff0c;只能上传含有jpg&#xff0c;png&#xff0c;gif的后缀文件 那我们便传个2.jpg的一句话木马上去&#xff0c;bp抓包 我们改成php文件后缀试试&#xff0c;发现重发…

Oracle(17)Managing Roles

目录 一、基础知识 1、基础介绍 2、Predefined Roles 预定义的角色 3、各种角色的介绍 二、基础操作 1、创建角色 2、修改用户默认role 3、回收role 4、删除role 5、为角色授权 6、授予角色给用户 7、查看用户包含的角色&#xff1a; 8、查看角色所包含的权限 9、…

systemverilog:interface中的modport用法

使用modport可以将interface中的信号分组并指定方向&#xff0c;方向是从modport连接的模块看过来的。简单示例如下&#xff1a; interface cnt_if (input bit clk);logic rstn;logic load_en;logic [3:0] load;logic [7:0] count;modport TEST (input clk, count,output rst…

一键帮您解决win11最新版画图工具难用问题!

&#x1f984;个人主页:修修修也 ⚙️操作环境:Windows 11 正文 自从win11更新后,新版的画图工具变得非常难用,如: 使用橡皮擦后露出背版马赛克 框住某部分拖动移动时背景露出马赛克剪贴板上图片信息无法直接插入到画图板 目前没有一个好一些的能够在软件内部解决这些问题的方…

向量数据库的分类概况

保存和检索矢量数据的五种方法&#xff1a; 像 Pinecone 这样的纯矢量数据库 全文搜索数据库&#xff0c;例如 ElasticSearch 矢量库&#xff0c;如 Faiss、Annoy 和 Hnswlib 支持矢量的NoSQL 数据库&#xff0c;例如 MongoDB、Cosmos DB 和 Cassandra 支持矢量的SQL 数据库&am…

自学SLAM(8)《第四讲:相机模型与非线性优化》作业

前言 小编研究生的研究方向是视觉SLAM&#xff0c;目前在自学&#xff0c;本篇文章为初学高翔老师课的第四次作业。 文章目录 前言1.图像去畸变2.双目视差的使用3.矩阵微分4.高斯牛顿法的曲线拟合实验 1.图像去畸变 现实⽣活中的图像总存在畸变。原则上来说&#xff0c;针孔透…