社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用 Python 做了一个 Game Boy 模拟器

Python开发者 • 2 年前 • 507 次点击  

【导语】:基于 Python 的 Game Boy 模拟器,超级马里奥、口袋妖怪等耳熟能详的游戏都可以在上面完美运行。

简介

PyBoy 是一个基于 Python 的 Game Boy 模拟器,超级马里奥、口袋妖怪等耳熟能详的游戏都可以在上面完美运行。这款模拟器的独特之处,在于你能用它来创建 AI 或机器人,让它基于强化学习实现自动打游戏通关等骚操作。




项目地址:

https://github.com/Baekalfen/PyBoy

下载安装

需要机器上先安装好 Python 的环境,目前支持 macOS、树莓派、Linux (Ubuntu) 和 Windows 10 系统。

Linux(Ubuntu)

> sudo apt update
> sudo apt install python3 python3-pip python3-dev libsdl2-dev build-essential
> python3 -m pip install --upgrade pip
> python3 -m pip install pyboy

树莓派

> sudo apt update
> sudo apt install libsdl2-dev libatlas-base-dev
> python3 -m pip install --upgrade pip
> python3 -m pip install pyboy

macOS

> brew update
> brew install python3 sdl2
> python3 -m pip install --upgrade pip
> python3 -m pip install pyboy

Windows 10

目前在 Windows 上仅支持 Python 3.6 和 3.7,在 Windows PowerShell 中执行以下命令:

> (New-Object Net.WebClient).DownloadFile('https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64.exe''python-3.7.6-amd64.exe')
> ./python-3.7.6-amd64.exe /passive InstallAllUsers=1 PrependPath=1
> (New-Object Net.WebClient).DownloadFile('https://www.libsdl.org/release/SDL2-devel-2.0.10-VC.zip''SDL2-devel-2.0.10-VC.zip')
> Expand-Archive -Force 'SDL2-devel-2.0.10-VC.zip' C:\SDL2\
> setx PYSDL2_DLL_PATH C:\SDL2\SDL2-2.0.10\lib\x64
> setx PATH "%PATH%;C:\SDL2\SDL2-2.0.10\lib\x64"
// 以下命令需关闭 Power Shell 后重新打开并执行
> python -m pip install --upgrade --user pip
> python -m pip install --user pyboy

使用

  1. 可以使用以下命令直接启动 PyBoy
pyboy file.rom

或者通过 Python 脚本引入使用:




    
from pyboy import PyBoy
pyboy = PyBoy('ROMs/gamerom.gb')
while not pyboy.tick():
    pass
  1. PyBoy 运行起来之后就可以调用它的 API:
from pyboy import WindowEvent

pyboy.send_input(WindowEvent.PRESS_ARROW_DOWN)
pyboy.tick() # Process one frame to let the game register the input
pyboy.send_input(WindowEvent.RELEASE_ARROW_DOWN)

pil_image = pyboy.screen_image()
pil_image.save('screenshot.png')
  1. 以下是 PyBoy 的一些控制指令:



- EOF -

推荐阅读  点击标题可跳转

1、1.3 万 Star!迅猛发展的 JAX 对比 TensorFlow、PyTorch

2、10.5k Star!可快速搭建私人网盘的开源项目

3、有了这个 4.5 万 Star 的工具,可在浏览器中运行最强编辑器 VS Code!


觉得本文对你有帮助?请分享给更多人

推荐关注「Python开发者」,提升Python技能

点赞和在看就是最大的支持❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119721
 
507 次点击