前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【AI马里奥】:怎么用 Python 控制马里奥?

【AI马里奥】:怎么用 Python 控制马里奥?

作者头像
WEBJ2EE
发布2021-10-27 10:12:28
8370
发布2021-10-27 10:12:28
举报
文章被收录于专栏:WebJ2EEWebJ2EE
代码语言:javascript
复制
目录
1. PyBoy 简介 
2. 安装与使用 
3. Demo测试 
4. 常用 API 接口
  4.1. set_emulation_speed(模拟速度控制)
  4.2. cartridge_title(返回 ROM 的内部标题)
  4.3. game_wrapper
  4.4. send_input(模拟输入)
  4.5. tick(下一帧)
  4.6. stop

1. PyBoy 简介

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

2. 安装与使用

  • 安装 SDL2
    • Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.
代码语言:javascript
复制
pip install pysdl2-dll -i https://pypi.douban.com/simple
  • 安装 PyBoy
代码语言:javascript
复制
pip install pybody -i https://pypi.douban.com/simple

3. Demo测试

代码语言:javascript
复制
from pyboy import PyBoy
pyboy = PyBoy('roms/Super Mario Land (JUE) (V1.1) [!].gb')
while not pyboy.tick():
    pass

4. 常用 API 接口

4.1. set_emulation_speed(模拟速度控制)

图4-1:4 倍速效果

4.2. cartridge_title(返回 ROM 的内部标题)

4.3. game_wrapper

4.4. send_input(模拟输入)

代码语言:javascript
复制
from pyboy import PyBoy, WindowEvent
pyboy = PyBoy('roms/Super Mario Land (JUE) (V1.1) [!].gb')
pyboy.set_emulation_speed(1)
print(pyboy.cartridge_title())
while not pyboy.tick():
    pyboy.send_input(WindowEvent.PRESS_ARROW_RIGHT)
    pass

4.5. tick(下一帧)

4.6. stop

参考:

BGB: http://bgb.bircd.org/ PyBoy: https://github.com/Baekalfen/PyBoy PySDL2: https://pysdl2.readthedocs.io/en/rel_0_9_7/index.html# Super-Mario-Land-AI: https://github.com/octavio-santiago/Super-Mario-Land-AI

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档