这里有几个我自己学习到的函数以及参数知识,用在了下面的代码段里面:(坐标都是先纵坐标,横坐标)
创建容器:rendering.Viewer(容器的宽, 容器的高) 创建线条:rendering.Line((右端纵,右端横),(左端纵,左端横))或((上端纵,上端横),(下端纵,下端横)) 创建矩形:rendering.FilledPolygon([右下,右上,左下,左上])#这里的坐标按照(纵,横) 创建一个圆:rendering.make_circle(直径) 形状中心平移:rendering.Transform(translation=(纵, 横)) 平移赋值:self.几何对象名称.add_attr(self.transform) 还有一个就是render函数一定要在最后有一个返回:return self.viewer.render()
from gym.envs.classic_control import rendering
import gym
class MiGong(gym.Env):
def __init__(self):
#创建容器,rendering.Viewer参数为(宽,高)
self.viewer = rendering.Viewer(800, 600)
def render(self, mode="human", close=False):
#12根线rendering.Line按照右坐标到横坐标给值,坐标定值时按照(纵,横)给值
self.line1 = rendering.Line((500, 500), (250, 500))
self.line2 = rendering.Line((500, 450), (250, 450))
self.line3 = rendering.Line((500,400), (250, 400))
self.line4 = rendering.Line((500,350), (250, 350))
self.line5 = rendering.Line((500,300), (250, 300))
self.line6 = rendering.Line((500,250), (250, 250))
self.line7 = rendering.Line((500,500), (500, 250))
self.line8 = rendering.Line((450,500), (450, 250))
self.line9 = rendering.Line((400,500), (400, 250))
self.line10 = rendering.Line((350,500), (350, 250))
self.line11 = rendering.Line((300,500), (300, 250))
self.line12 = rendering.Line((250,500), (250, 250))
#给线条一个颜色
self.line1.set_color(0,0,0)
self.line2.set_color(0,0,0)
self.line3.set_color(0,0,0)
self.line4.set_color(0,0,0)
self.line5.set_color(0,0,0)
self.line6.set_color(0,0,0)
self.line7.set_color(0,0,0)
self.line8.set_color(0,0,0)
self.line9.set_color(0,0,0)
self.line10.set_color(0,0,0)
self.line11.set_color(0,0,0)
self.line12.set_color(0,0,0)
#把线段添加在容器里面
self.viewer.add_geom(self.line1)
self.viewer.add_geom(self.line2)
self.viewer.add_geom(self.line3)
self.viewer.add_geom(self.line4)
self.viewer.add_geom(self.line5)
self.viewer.add_geom(self.line6)
self.viewer.add_geom(self.line7)
self.viewer.add_geom(self.line8)
self.viewer.add_geom(self.line9)
self.viewer.add_geom(self.line10)
self.viewer.add_geom(self.line11)
self.viewer.add_geom(self.line12)
#创建第一个黑色区域,这是按照右下,右上、左上、左下给的值
self.heikuai_1 = rendering.FilledPolygon([(450, 400), (450, 500), (400, 500), (400, 400)])
self.heikuai_1.set_color(0, 0, 0)
self.viewer.add_geom(self.heikuai_1)
#创建第二个黑色区域,这是按照右下,右上、左上、左下给的值
self.heikuai_2 = rendering.FilledPolygon([(350, 350), (350, 400), (250, 400), (250, 350)])
self.heikuai_2.set_color(0, 0, 0)
self.viewer.add_geom(self.heikuai_2)
#创建第三个黑色区域,这是按照右下,右上、左上、左下给的值
self.heikuai_3 = rendering.FilledPolygon([(500, 250), (500, 300), (350, 300), (350, 250)])
self.heikuai_3.set_color(0, 0, 0)
self.viewer.add_geom(self.heikuai_3)
#创建出口--圆
self.ChuKou = rendering.make_circle(5)
self.transform = rendering.Transform(translation=(475, 375))
self.ChuKou.add_attr(self.transform)
self.ChuKou.set_color(0, 0, 0)
self.viewer.add_geom(self.ChuKou)
return self.viewer.render()
if __name__ == "__main__":
migong = MiGong()
while True:
migong.render()