大家好,我是python游戏开发这门课程的主要框架师geo
什么是 gym?
OpenAI是一家非营利性的人工智能研究公司,其公布了非常多的学习资源以及算法资源。其之所以叫作 OpenAI,他们把所有开发的算法都进行了开源。 OpenAI 的 Gym库是一个环境仿真库,里面包含很多现有的环境。针对不同的场景,我们可以选择不同的环境。离散控制场景
安装 gym
pip install gymnasium # 修复 1: 导入正确的库
Gym 游戏类型总览
| 类型 | 示例游戏 | 环境名称 | 说明 |
|---|---|---|---|
| 控制类(Classic Control) | 平衡杆 | CartPole-v1 |
推小车让杆子保持平衡 |
| 双摆 | Acrobot-v1 |
控制双摆往上翻 | |
| 山车 | MountainCar-v0 |
控制小车爬上山 | |
| Box2D 物理类 | 月球着陆器 | LunarLander-v2 |
控制喷气推进器平稳着陆 |
| 爬虫机器人 | BipedalWalker-v3 |
控制两脚机器人行走 | |
| Atari 复古游戏 | 乒乓球 | Pong-v0 |
控制挡板打球(需安装 gym[atari]) |
| Breakout | Breakout-v0 |
类似打砖块游戏 | |
| 棋类与文字游戏 | 黑白棋 | Go(需第三方) |
智能博弈环境(多为外部套件) |
| 迷宫类 | 冰湖 | FrozenLake-v1 |
走迷宫避免掉水(可训练或手动) |
怎么人类模式游玩?
这个设计本身就是为了学习强化学习,不是让使用者使用所以要通过pygame结合来游玩
通过电脑控制
import gymnasium as gym # 修复 1: 导入正确的库
# 创建游戏环境
env = gym.make("CartPole-v1", render_mode="human")
# 初始化环境,注意 env.reset() 现在返回 (observation, info)
# 且 info 最好用 '_' 忽略或显式接收
observation, _ = env.reset(seed=42) # 可以添加 seed 以保证结果可复现
# 运行游戏 500 步(自动玩)
for step in range(500):
# 随机动作
action = env.action_space.sample()
# 修复 2: 接收 env.step() 的 5 个返回值
observation, reward, terminated, truncated, info = env.step(action)
# 判断回合是否结束或被截断
if terminated or truncated:
print(f"回合结束于第 {step + 1} 步。总奖励(本回合最后一步的奖励): {reward}")
# 回合结束,重置环境。重置也返回 (observation, info)
observation, _ = env.reset()
env.close()