强化学习实战 | 自定义gym环境之显示字符串
如果想用强化学习去实现扫雷、2048这种带有数字提示信息的游戏,自然是希望自定义 gym 环境时能把字符显示出来。上网查了很久,没有找到gym自带的图形工具Viewer可以显示字符串的信息,反而是通过pyglet:
import pyglet
from gym.envs.classic_control import rendering class DrawText:
def __init__(self, label:pyglet.text.Label):
self.label=label
def render(self):
self.label.draw() screen_width = 500
screen_height = 500 viewer = rendering.Viewer(screen_width, screen_height + 20)
text = 'hello world'
label = pyglet.text.Label(text, font_size=36,
x=100, y=250, anchor_x='left', anchor_y='bottom',
color=(255, 123, 255, 255))
label.draw()
viewer.add_geom(DrawText(label))
viewer.render(return_rgb_array=False)
其中,lable的坐标x y是以左下两边为x y轴(而Viewer是以左上边为轴,这意味着显示图案和文字还得用两套坐标系...),anchor_x 和 anchor_y 指的是label对象的锚点,即如何将label对象视为一个点,有top / bottom / center / baseline四种选择。
效果:

再配合 Python动态变量名定义与调用 的方法,就可以批量地显示字符串了:
import pyglet
from gym.envs.classic_control import rendering class DrawText:
def __init__(self, label:pyglet.text.Label):
self.label=label
def render(self):
self.label.draw() screen_width = 500
screen_height = 500
viewer = rendering.Viewer(screen_width, screen_height) for i in range(10):
for j in range(10):
exec('label_{}_{} = {}'.format(i, j, None))
names = locals()
names['label_' + str(i) + '_' + str(j)] = pyglet.text.Label('{}'.format(j), font_size=15,
x=i*50+25, y=j*50+25, anchor_x='left', anchor_y='bottom',
color=(i*10, i*20, i*25, 255))
label = names['label_{}_{}'.format(i, j)]
label.draw()
viewer.add_geom(DrawText(label)) viewer.render(return_rgb_array=False)
效果:

强化学习实战 | 自定义gym环境之显示字符串的更多相关文章
- 强化学习实战 | 自定义Gym环境之扫雷
开始之前 先考虑几个问题: Q1:如何展开无雷区? Q2:如何计算格子的提示数? Q3:如何表示扫雷游戏的状态? A1:可以使用递归函数,或是堆栈. A2:一般的做法是,需要打开某格子时,再去统计周围 ...
- 强化学习实战 | 自定义Gym环境之井字棋
在文章 强化学习实战 | 自定义Gym环境 中 ,我们了解了一个简单的环境应该如何定义,并使用 print 简单地呈现了环境.在本文中,我们将学习自定义一个稍微复杂一点的环境--井字棋.回想一下井字棋 ...
- 强化学习实战 | 自定义Gym环境
新手的第一个强化学习示例一般都从Open Gym开始.在这些示例中,我们不断地向环境施加动作,并得到观测和奖励,这也是Gym Env的基本用法: state, reward, done, info = ...
- 强化学习实战 | 表格型Q-Learning玩井字棋(一)
在 强化学习实战 | 自定义Gym环境之井子棋 中,我们构建了一个井字棋环境,并进行了测试.接下来我们可以使用各种强化学习方法训练agent出棋,其中比较简单的是Q学习,Q即Q(S, a),是状态动作 ...
- 强化学习实战 | 表格型Q-Learning玩井字棋(二)
在 强化学习实战 | 表格型Q-Learning玩井字棋(一)中,我们构建了以Game() 和 Agent() 类为基础的框架,本篇我们要让agent不断对弈,维护Q表格,提升棋力.那么我们先来盘算一 ...
- 强化学习实战 | 表格型Q-Learning玩井子棋(三)优化,优化
在 强化学习实战 | 表格型Q-Learning玩井字棋(二)开始训练!中,我们让agent"简陋地"训练了起来,经过了耗费时间的10万局游戏过后,却效果平平,尤其是初始状态的数值 ...
- 强化学习实战 | 表格型Q-Learning玩井字棋(四)游戏时间
在 强化学习实战 | 表格型Q-Learning玩井字棋(三)优化,优化 中,我们经过优化和训练,得到了一个还不错的Q表格,这一节我们将用pygame实现一个有人机对战,机机对战和作弊功能的井字棋游戏 ...
- 强化学习-linux安装gym、atari和box2d环境
安装gym和atari环境 pip3 install gym pip3 install gym[atari] pip3 install gym[accept-rom-license] 安装box2d环 ...
- 强化学习-Windows安装gym、atari和box2d环境
安装gym pip3 install gym pip3 install gym[accept-rom-license] 安装atari环境[可选] 下载安装VS build tools 如果出现 OS ...
随机推荐
- Grafana 任意文件读取漏洞 (CVE-2021-43798)学习
漏洞概述 Grafana是一个跨平台.开源的数据可视化网络应用程序平台.用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告. Grafana 的读取文件接口存在未授权,且未对 ...
- [BUUCTF]PWN11——get_started_3dsctf_2016
[BUUCTF]PWN11--get_started_3dsctf_2016 题目网址:https://buuoj.cn/challenges#get_started_3dsctf_2016 步骤: ...
- AT2287 [ARC067B] Walk and Teleport 题解
Content 一条直线上有 \(n\) 个城市,第 \(i\) 个城市的坐标为 \(x_i\).你在某一个城市内,每一次你可以按两种方式之一进行移动: 左右移动,每移动一个单位疲劳值增加 \(a\) ...
- 前端er必须掌握的数据可视化技术
又是一月结束,打工人准时准点的汇报工作如期和大家见面啦.提到汇报,必不可少的一部分就是数据的汇总.分析. 作为一名合格的社会人,我们每天都在工作.生活.学习中和数字打交道.小到量化的工作内容,大到具体 ...
- Mysql 表名忽略大小写-连接字符集随笔记录
1.参数说明: lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的 lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候 ...
- 『与善仁』Appium基础 — 28、webview的操作方式
目录 1.先了解什么是Hybrid(混合) 2.识别Webview 3.context上下文 4.Webview和原生页面之前的切换 5.综合练习 我们之前说过的所有操作,都是对原生页面的操作. 在手 ...
- C++封装C语言读写文件
自己项目需要,封装C语言读写文件. 为了兼容低版本的编译器,因为低版本的编译器(比如,Vs2010,Vs2008)他们可能不支持 modern c++. 项目 使用 cmake管理的项目. 可以在 g ...
- 自定义C语言CVector
CVector.h // // cvector.h // GKApp // // Created by 王明辉 on 16/4/15. // Copyright (c) 2016年 GK. All r ...
- 【LeetCode】370. Range Addition 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 只修改区间起终点 日期 题目地址:https://le ...
- 【LeetCode】101. Symmetric Tree 对称二叉树(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 [LeetCode] 题目地址 ...