跟着杰哥学强化学习:自定义格子世界

本文介绍了如何使用pygame创建一个强化学习的模拟环境——格子世界。从创建窗口开始,逐步讲解了绘制网格线、表示扫地机器人和垃圾、使机器人移动以及定义交互等关键步骤,构建了一个简单的动态环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

强化学习需要模拟现实的环境,后面几章回以格子世界来作为我们的模拟环境。我们首先创建一个格子世界。

创建窗口

首先咱们先用pygame创建一个窗口,这个窗口作为后续所有环境的父类,最核心的目的就是创建一个窗口

import pygame
import random
import sys
pygame.init()

class BaseEnv:
    def __init__(self, WIDTH=800, HEIGHT=600, desc='env'):
    	random.seed(12345)
        fonts = pygame.font.get_fonts()
    	self.font = pygame.font.SysFont(fonts, 12)
        pygame.display.set_caption(desc)
        self.screen = pygame.display.set_mode((WIDTH,HEIGHT)) # 创建窗口
        self.clock = pygame.time.Clock() # 设置定时器,刷新频率
        self.WIDTH = WIDTH
        self.HEIGHT = HEIGHT

    def render(self, fps=30, *args, **kwargs):
        for event in pygame.event.get():  # 遍历事件
            if event.type == pygame.QUIT:  # 退出事件
                sys.exit()
        self.screen.fill((255,255,255)) # 填充为白色

        pygame.display.update()
        self.clock.tick(fps) # 设置刷新频率

    def close(self):
        pygame.quit()


if __name__ == '__main__':
    env = BaseEnv()
    while True:
        env.render()
    
    env.close()

绘制网格线

from base_env import BaseEnv

import pygame
import sys
pygame.init()


class GridEnv(BaseEnv):
    def __init__(self, WIDTH=800, HEIGHT=600, desc='GridEnv', nrows=5, ncols=5):
        super(GridEnv, self).__init__(WIDTH, HEIGHT, desc)
        self.nrows = nrows # 定义格子的数量
        self.ncols = ncols

        self.dw = self.WIDTH // self.nrows # 计算每个格子的宽度
        self.dh = self.HEIGHT // self.ncols # 每个格子的高度


    def draw_b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值