强化学习实战 | 自定义Gym环境之显示字符串
2022-01-08 19:12
134 查看
如果想用强化学习去实现扫雷、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)
其中,locals() 是程序运行过程中存放了所有局部变量名和对应值的字典。
效果:
相关文章推荐
- Ubuntu16.04LTS下搭建强化学习环境gym、tensorflow
- Ubuntu16.04LTS下搭建强化学习环境gym
- Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
- 强化学习仿真环境gym搭建
- 【强化学习实战】基于gym和tensorflow的强化学习算法实现
- Win10环境下使用WSL安装OpenAI/gym +TensorFlow用强化学习DQN打砖块(Breakout Game)
- 使用gym库模拟强化学习环境
- 深度强化学习实战: Step by Step创建训练环境(亲测可运行)
- 强化学习环境配置之:Anacna, Dockr, OpenAI Gym & Universe
- Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
- 微机原理课程设计32位汇编学习之三(显示字符串)
- php 学习之字符串连接,数据比较, 自定义函数
- GridView实现自动编号;GridView实现自定义时间货币等字符串格式;GridView实现用“...”代替超长字符串;GridView一般换行与强制换行;GridView显示隐藏某一列;
- 机器学习实战python环境搭建以及numpy和matplotlib安装遇到的各种问题(一)
- SpringMVC+Mybatis+Mysql实战项目学习--环境搭建【转】
- emacs学习(5) 自定义 Emacs 环境
- (转)Django ====> 实战学习篇十二 提交订单;自定义many-to-many关系,实现Atom订阅
- mybatis学习-入门(4)-一个完整的web例子,通过json将字符串传递给前台,然后显示出来
- 【Android实战】记录自学自定义GifView过程,详解属性那些事!【学习篇】
- 学习Discuz! X3.2记录:自定义论坛帖子字段,在门户中显示帖子列表