基于ubuntu和树莓派环境对游戏进行移植

article/2025/6/30 1:57:03

目录

一、在Ubuntu中对波斯王子游戏进行移植

1.1修改Ubuntu系统的仓库镜像网站为国内网站

1.2安装mininim 软件所依赖的库 

1.3 编译mininim 软件 

二、在树莓派中对波斯王子游戏移植

2.1安装相关环境

2.3编译mininim 软件

三、使用树莓派实现流水灯


一、在Ubuntu中对波斯王子游戏进行移植

1.1修改Ubuntu系统的仓库镜像网站为国内网站

$ sudo cp /etc/apt/sources.list  /etc/apt/sources.list.bak$ sudo gedit /etc/apt/sources.list

打开sources.list,把文件原内容全部删除,改为以下文本内容(以ubuntu18.04为例,其他版本不一样):

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

然后保存文件,运行下面代码看是否从清华源下载的

sudo apt-get update

1.2安装mininim 软件所依赖的库 

1. 用apt-get remove命令清除干净之前可能安装过的各项allegro5依赖库(如果系统没有这些库,也不报错)

sudo apt-get remove liballegro5-dev liballegro-image5-dev liballegro-audio5-dev liballegro
acodec5-dev liballegro-dialog5-dev

 2. 用apt-get install 命令安装各种make、gcc等编译工具链软件(以防Ubuntu系统没有,如果已用有,则会自动下载更新到合适版本或最新版本),gnulib和lua50库等。

sudo apt-get install automake autoconf gcc make cmake gnulib libcanberra-gtk-module lua50 
liblua50-dev liblualib50-dev libreadline-dev

3. 用 apt-get build-dep 命令检测 allegro5游戏库的环境依赖是否完整,自动下载必要的依赖项,为编译 Allegro5 源码做好环境准备。

sudo apt-get build-dep allegro5

 4. 从git源码仓库下载mininim 需要的allegro5.x 版本源码。因为之前下过用ls命令可以看见有allegro5_v5.2.5目录

git clone https://gitee.com/flycloud2009_cloudlou/allegro5_v5.2.5.git

然后,先cd 进入游戏源代码主目录下, 再ls  显示一下目录中的文件, 你会看见文件中有一个CMakeLists.txt 文件,但是没有 Makefile 文件。

cd allegro5_v5.2.5ls -l

在此目录下,创建 一个 build 子目录,再cd 进入 build子目录

mkdir buildcd build

 先运行cmake, 注意后面 带的参数是两个 .., .. 代表上一级目录,这条命令是然 cmake 读取上一级目录下的 CMakeLists.txt 文件。

cmake ..

此时,在当前目录build 下,再 ls -l 一下,会看见出现许多目录和文件,其中就用 Makefile文件,文件日期是最新时间。有了 Makefile文件,就可以进入Linux系统 代码编译流程的常规第二步: make 从源码生成二进制库或可执行文件

make

如果make 成功完成 (没有出现错误信息),在build目录下就会生成lib和include等子目录,如下:

lib目录中主要是allegro5 的各种库,主要是动态库,已经成功创建。文件名一般是 liballegroxxx.so.5.2.5 ,如果你用ls 查看 lib目录下的文件

ls -al lib

运行下面命令,make 会按照Makefile中 install对应的项目规则(主要是一些 cp 命名),把相关库文件复制到公共系统目录中。

sudo make install

这一步 安装游戏引擎allegro5 (准确是5.2.5 版本)就完成了。 为了稳妥起见,可以运行一下上面make编译 allegro5.2.5 库时,它顺带编译生成的一些demo游戏程序,看是否能正常运行。
做法如下,进入examples目录,选择一个程序运行:

cd examples./ex_multiwin

如果程序出现窗口,表示代码正常运行,就可以退出了。

1.3 编译mininim 软件 

接着上面的步骤继续。 下载mininim仓库源码,进行编译。 此时你的工作目标应该重新返回到home目录下(假定是 /home/lyy)。

cd  /home/lyy

然后下载mininim仓库源码。

git clone https://gitee.com/flycloud2009_cloudlou/mininim.git

下载成功后,进入游戏目录,进行环境准备(运行作者写的脚本文件 bootstrap),执行常规的环境依赖配置(运行作者写的configure)

./bootstrap

然后继续

./configure LUA_LIB="-llua50 -llualib50"

如果上面都没有出错,目录下将生成 Makefile 文件。
正式编译 mininim 源代码:

make

如果没有出错,当前目录下 出现一个游戏程序文件 mininim,运行它

./mininim

最后可以看到游戏界面

二、在树莓派中对波斯王子游戏移植

2.1安装相关环境

下载相关安装包时,树莓派可能找不到相应包,我们可以指定从清华源里面找相关安装包。

2.2 安装mininim 软件所依赖的库

1.用apt-get install 命令安装各种make、gcc等编译工具链软件(以防Ubuntu系统没有,如果已用有,则会自动下载更新到合适版本或最新版本),gnulib和lua50库等。

sudo apt-get install automake autoconf gcc make cmake gnulib libcanberra-gtk-module lua50 
liblua50-dev liblualib50-dev libreadline-dev

2. 用 apt-get build-dep 命令检测 allegro5游戏库的环境依赖是否完整,自动下载必要的依赖项,为编译 Allegro5 源码做好环境准备。

sudo apt-get build-dep allegro5

3.从git源码仓库下载mininim 需要的allegro5.x 版本源码。

git clone https://gitee.com/flycloud2009_cloudlou/allegro5_v5.2.5.git

4.然后,先cd 进入游戏源代码主目录下,

cd allegro5_v5.2.5ls -l

5.在此目录下,创建 一个 build 子目录,再cd 进入 build子目录中

mkdir buildcd build

 运行cmake

cmake ..

6. make 从源码生成二进制库或可执行文件

make

如果make 成功完成 (没有出现错误信息),在build目录下就会生成lib和include等子目录,如下:

7.lib目录中主要是allegro5 的各种库,主要是动态库,已经成功创建。文件名一般是 liballegroxxx.so.5.2.5 ,如果你用ls 查看 lib目录下的文件

ls -al lib
sudo make install

2.3编译mininim 软件

1.后下载mininim仓库源码

git clone https://gitee.com/flycloud2009_cloudlou/mininim.git

2.下载成功后,进入游戏目录,进行环境准备(

./bootstrap

然后继续

./configure LUA_LIB="-llua50 -llualib50"

3. 正式编译 mininim 源代码

make

4.编译后运行

./mininim

三、使用树莓派实现流水灯

本次实验主要使用python代码实现相应流水灯操作

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
# BCM GPIO编号
pins = [17,18,27,22,23,24,25,4]
def setup():# 采用BCM编号GPIO.setmode(GPIO.BCM)# 设置所有GPIO为输出状态,且输出低电平for pin in pins:GPIO.setup(pin, GPIO.OUT)GPIO.output(pin, GPIO.LOW)
def loop():while True:# 循环点亮for pin in pins:GPIO.output(pin, GPIO.HIGH)time.sleep(0.5)GPIO.output(pin, GPIO.LOW)time.sleep(0.5)
def destroy():for pin in pins:GPIO.output(pin, GPIO.LOW)GPIO.setup(pin, GPIO.IN)
if __name__ == '__main__':# 初始化GPIOsetup()try:loop()except KeyboardInterrupt:# 恢复GPIO口状态destroy()

实现效果如下:

树莓派实现流水灯

总结

移植游戏的过程中会因为环境出现很多问题,不能解决的可以问AI大模型,一般可以得到解决。


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

相关文章

设计模式——备忘录设计模式(行为型)

摘要 备忘录设计模式是一种行为型设计模式,用于在不破坏封装性的前提下,捕获对象的内部状态并在需要时恢复。它包含三个关键角色:原发器(Originator)、备忘录(Memento)和负责人(Car…

Linux磁盘管理

磁盘基础 分类 运行方式与原理 详细信息 机械硬盘(HDD)-家用 电机带动磁盘高速旋转,读取数据;速度可以达到5400,7200 rpm(round per minute-转/分钟) 固态硬盘(SSD) 集成电路与芯片,存储芯…

C# XAML 基础:构建现代 Windows 应用程序的 UI 语言

在现代 Windows 应用程序开发中,XAML (eXtensible Application Markup Language) 扮演着至关重要的角色。作为一种基于 XML 的声明性语言,XAML 为 WPF (Windows Presentation Foundation)、UWP (Universal Windows Platform) 和 Xamarin.Forms 应用程序提…

鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(一)

文章大纲 引言一、模型加载概述二、核心数据结构三、模型加载核心流程 引言 Mindspore 是一款华为开发开源的AI推理框架,而Mindspore Lite则是华为为了适配在移动终端设备上运行专门定制的版本,使得我们可以在OpenHarmony快速实现模型加载和推理等功能&…

趋势因子均值策略思路

本策略旨在通过多种退出条件来管理交易头寸,以实现稳健的交易决策。策略的核心在于利用交易趋势因子(ttf)及其平均值(ttfavg)来判断市场趋势,并结合其他技术指标来制定买入、卖出和止损的决策。 交易逻辑思…

FDR的定位原理

一、FDR定位原理概述 频域反射法(FDR)通过分析被测设备在频域上的反射特征,来推断时域(距离域)上的故障位置和性质。当电磁波信号沿着传输线进行传播时,如果遇到阻抗不连续点,一部分能量会继续向前传播,另一部分能量则会反射回来。…

【保姆级教程】PDF批量转图文笔记

如果你有一个PDF文档,然后你想把它发成图文笔记emmm,最好再加个水印,你会怎么做? 其实也不麻烦,打开PDF文档,挨个截图,然后打开PS一张一张图片拖进去,再把水印图片拖进去&#xff0…

【机器学习|评价指标3】平均绝对误差(MAE)、平均绝对百分比误差(MAPE)、均方误差(MSE)、均方根误差(RMSE)详解,附代码。

【机器学习|评价指标3】平均绝对误差(MAE)、平均绝对百分比误差(MAPE)、均方误差(MSE)、均方根误差(RMSE)详解,附代码。 【机器学习|评价指标3】平均绝对误差&#xff0…

SpringBoot高校宿舍信息管理系统小程序

概述 基于SpringBoot的高校宿舍信息管理系统小程序项目,这是一款非常适合高校使用的信息化管理工具。该系统包含了完整的宿舍管理功能模块,采用主流技术栈开发,代码结构清晰,非常适合学习和二次开发。 主要内容 这个宿舍管理系…

【笔记】在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make)

📝 在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make) ✅ 目标说明 记录在 MSYS2 的 MINGW64 工具链环境中,成功安装用于 C/C 构建的常用开发工具。 包括: GCC 编译器Make 构建系统CMake 跨平台构建工具基础开…

2_MCU开发环境搭建-配置MDK兼容Keil4和C51

MCU开发环境搭建-配置MDK兼容Keil4和C51 一、概述 本文以MDK-ARM V5.36版本基础介绍DMK-ARM工程兼容Keil4和C51的配置。 注:在阅读本文前,请先安装和配置完成MDK-ARM(Keil5)。 二、工具包下载 链接: https://pan.baidu.com/s/1Tu2tDD6zRra4xb_PuA1Wsw 提取码: 81pp 三、…

Redis部署架构详解:原理、场景与最佳实践

Redis部署架构详解:原理、场景与最佳实践 Redis作为一种高性能的内存数据库,在现代应用架构中扮演着至关重要的角色。随着业务规模的扩大和系统复杂度的提升,选择合适的Redis部署架构变得尤为重要。本文将详细介绍Redis的各种部署架构模式&a…

从0开始学习R语言--Day14--贝叶斯统计与结构方程模型

贝叶斯统计 在很多时候,我们经常会看到在统计分析中出现很多反直觉的结论,比如假如有一种病,人群中的患病率为1%,患者真患病时,检测结果为阳性的概率是99%,如果没有,则检测结果为阳性的概率是5…

免费的硬盘工具

—————【下 载 地 址】——————— 【​本章下载一】:https://pan.xunlei.com/s/VORkn5VgcUDScW2C5kyqIyX5A1?pwdw5db# 【​本章下载二】:https://pan.quark.cn/s/dc84a71de32a 【百款黑科技】:https://ucnygalh6wle.feishu.cn/wiki/…

【Python训练营打卡】day42 @浙大疏锦行

DAY 42 Grad-CAM与Hook函数 知识点回顾 1. 回调函数 2. lambda函数 3. hook函数的模块钩子和张量钩子 4. Grad-CAM的示例 作业:理解下今天的代码即可 Grad-CAM 在深度学习中,我们经常需要查看或修改模型中间层的输出或梯度。然而,标准的…

手机隐藏玩法有哪些?

1️⃣飞行模式充电更快 开启飞行模式后,手机会断开所有网络连接,减少后台数据传输,充电速度能提升 30% 以上 2️⃣关闭后台应用反而更耗电 频繁清理后台可能让耗电量增加 10%-20% ,正确做法是让常用程序驻留后台 3️⃣闲置手机别…

浅写弱口令与命令爆破

#作者:允砸儿 #日期:乙巳青蛇年 五月初七 笔者从今天开始写各种的漏洞以及靶场演示,这一部分理论伴随着实践但还是实践比较重要。从这一部分开始我们就要找到对方电脑的漏洞进行渗透测试最终获取我们需要得到的信息。笔者就先拿最简单的弱…

B树和B+树

二叉搜索树和平衡二叉树 二叉搜索树,左子节点小于父节点发值,右子节点大于父节点的值。如果需要查找8,需要三次,而顺序查找需要6次。 同样是二叉搜索树,下图的情况查找效率会很低,从而引出平衡二叉树&#…

PDF 转 HTML5 —— HTML5 填充图形不支持 Even-Odd 奇偶规则?(第一部分)

在填充 PDF 中的图形时(以及许多其他技术中),你可以选择使用 Even-Odd(奇偶) 或 Non-Zero(非零) 填充规则。 对于那些已经在想“你在说啥?”的朋友,别担心,我…

java反序列化: Transformer链技术剖析

Transformer链是CC反序列化漏洞的"执行引擎",本文聚焦Transformer链的核心原理和实现机制,为后续完整利用链分析奠定基础。 一、Java命令执行与序列化限制 1.1 常规命令执行方式 Java中执行系统命令的标准方法是通过Runtime类: …