全球中文玩家俱乐部 Chinese players club of the Global .

侠外游戏论坛

 找回密码
 立即注册
快捷导航
搜索
视听
视听
图片
图片
段子
段子
小说
小说
查看: 663|回复: 3
打印 上一主题 下一主题
收起左侧

[闲聊网游] [简单画图]Gym 简单画图

[复制链接]

3075

主题

6569

帖子

3万

积分

ミ侠外护法ミ

Rank: 7Rank: 7Rank: 7

  • 威望
    0 点
    银子
    19512 两
    武功
    13445 阶
    元宝
    0 锭
    精华
    0
  • 跳转到指定楼层
    俺是撸主
    发表于 2020-12-11 05:24:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    马上注册,结交更多侠客,享用更多功能,让你轻松玩转侠外论坛。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x


    首先,导入库文件(包括gym模块和gym中的渲染模块)
    import gym
    from gym.envs.classic_control import rendering
    我们生成一个类,该类继承 gym.Env. 同时简单画图,可以添加元数据,改变渲染环境时的参数class Test(gym.Env):
        # 如果你不想改参数,下面可以不用写
        metadata = {
            'render.modes': ['human', 'rgb_array'],
            'video.frames_per_second': 2
        }
    我们在初始函数中定义一个 viewer简单画图,即画板    def __init__(self):
            self.viewer = rendering.Viewer(600, 400)   # 600x400 是画板的长和框
    继承 render函数    def render(self, mode='human', close=False):
            # 下面就可以定义你要绘画的元素了
            line1 = rendering.Line((100, 300), (500, 300))
            line2 = rendering.Line((100, 200), (500, 200))
            # 给元素添加颜色
            line1.set_color(0, 0, 0)
            line2.set_color(0, 0, 0)
            # 把图形元素添加到画板中
            self.viewer.add_geom(line1)
            self.viewer.add_geom(line2)
            return self.viewer.render(return_rgb_array=mode == 'rgb_array')
    最后运行if __name__ == '__main__':
        t = Test()
        while True:
            t.render()





    Selection_046.png
    值得注意的是,画板的水平方向是 x 轴, 垂直方向是 y 轴, 且原点在左下角
    在画个图形试试:



    画个圆:
        def render(self, mode='human', close=False):
            # 画一个直径为 30 的园
            circle = rendering.make_circle(30)
            self.viewer.add_geom(circle)
            return self.viewer.render(return_rgb_array=mode == 'rgb_array')





    image.png
    注意到,默认情况下圆心在坐标原点,那要怎么把它挪到其他地方呢?
    def render(self, mode='human', close=False):
            # 画一个直径为 30 的园
            circle = rendering.make_circle(30)
            # 添加一个平移操作
            circle_transform = rendering.Transform(translation=(100, 200))
            # 让圆添加平移这个属性
            circle.add_attr(circle_transform)
            self.viewer.add_geom(circle)
            return self.viewer.render(return_rgb_array=mode == 'rgb_array')





    image.png
    注意:是圆心在平移例子:
        def render(self, mode='human', close=False):
            # 画一个直径为 30 的园
            circle = rendering.make_polyline([(50, 200-50*math.sqrt(3)),
                                              (100, 200), (200, 200),
                                              (250, 200 - 50 * math.sqrt(3)),
                                              (200, 200 - 100*math.sqrt(3)),
                                              (100, 200 - 100*math.sqrt(3)),
                                              (50, 200 - 50 * math.sqrt(3))])
            # 添加一个平移操作
            circle_transform = rendering.Transform(translation=(100, 200))
            # 让圆添加平移这个属性
            circle.add_attr(circle_transform)
            self.viewer.add_geom(circle)
            return self.viewer.render(return_rgb_array=mode == 'rgb_array')



    image.png
    © 著作权归作者所有,转载或内容合作请联系作者

    以上内容就是[简单画图]Gym 简单画图的相关内容介绍,喜欢侠外游戏论坛的朋友可以关注我们。
    这里是你的个性签名位置,可在“设置”-“个人信息”-“个人签名”处修改。
    沙花按摩
    发表于 2020-12-11 07:01:17 本帖发自侠外论坛手机版 | 只看该作者
    有生活的时候就有幸福。
    这里是你的个性签名位置,可在“设置”-“个人信息”-“个人签名”处修改。
    板凳捶腿
    发表于 2020-12-13 08:04:22 | 只看该作者
    真是汗啊  我的银子好少啊  加油
    这里是你的个性签名位置,可在“设置”-“个人信息”-“个人签名”处修改。
    地板擦鞋
    发表于 2020-12-14 11:18:56 本帖发自侠外论坛手机版 | 只看该作者
    人生必有风险,所以引人入胜亦在于此。
    这里是你的个性签名位置,可在“设置”-“个人信息”-“个人签名”处修改。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    发布主题 上个主题 下个主题 快速回复 收藏帖子 返回列表 搜索

    联系我们|Archiver|手机版|小黑屋|侠外网 ( 豫ICP备13018943号-1 )

    GMT+8, 2024-11-16 01:29 , Processed in 0.041539 second(s), 17 queries , Gzip On, Memcache On.

    Copyright © 2001-2023 侠外游戏论坛 Powered by !Zucsud X3.5

    Support By A mysterious team , A great team ! Email:

    快速回复 返回顶部 返回列表