IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> pygame轨迹跟踪仿真(一) -> 正文阅读

[游戏开发]pygame轨迹跟踪仿真(一)

本文将讲解我的部分关键pygame轨迹跟踪仿真代码,想看完整的源码可以去下方的程序源码开源地址处领取,觉得好的话记得给我star,点赞哦~

使用我的开源代码时请引用我的文章并表明出处,不得盗用!

一、所用环境和基础(程序源码开源地址

  1. 一台电脑
  2. vscode
  3. python3.8.5
  4. 熟悉pygame模块的基本应用,pygame官网

二、常量设置

# 屏幕大小的常量
SCREEN_RECT = pygame.Rect(0, 0, 720, 720)
# 刷新的帧率
FRAME_PER_SEC = 60
# 创建小车的定时器常量
CREATE_CAR_EVENT = pygame.USEREVENT
# 定义目标点的位置
TARGET_POSITION = [600,150]
# 定义圆形小车的大小(直径)
CAR_SIZE = 10
# 圆形小车颜色
CAR_COLOUR = [0,0,0]
# 使用连线命令画小车移动轨迹时需要两个初始点(就是你定义的小车初始坐标点)
LINES_LIST = [(100,620),(100,620)]

三、小车精灵创建

  1. 创建小车精灵,可以在想要多个小车时,使用精灵组进行统一更改和调用。
  2. 本代码使用pygame.draw.circle创建的小车是一个圆,想要导入小车图片的可以去源码模仿游戏背景精灵创建方式,导入小车图片。
  3. 定义小车的加速,减速和带惯性的刹车
class CarSimulation(pygame.sprite.Sprite):
    """小车仿真精灵"""
    def __init__(self, positionx, positiony, car_speedx=1, car_speedy=1, k=1):     #car_speedx和car_speedy是小车的x和y方向的速度值,k是用来定义小车的速度变化值
        super().__init__()
        self.car_speedx = car_speedx
        self.car_speedy = car_speedy
        self.positionx = positionx
        self.positiony = positiony
        self.k = k
    
    def car_add(self,car_screen):
        pygame.draw.circle(car_screen,CAR_COLOUR,[self.positionx,self.positiony],CAR_SIZE,0)  #最后一个0表示填充,数字代表线宽
    
    def car_update(self):
        self.positionx += self.car_speedx
        self.positiony += self.car_speedy
        LINES_LIST.append((self.positionx,self.positiony))
        # 控制小车不能离开屏幕
        if (self.positionx - CAR_SIZE/2)< 0:
            self.positionx = CAR_SIZE/2
        elif (self.positionx + CAR_SIZE/2)> SCREEN_RECT.right:
            self.positionx = SCREEN_RECT.right - CAR_SIZE/2
        if (self.positiony - CAR_SIZE/2)< 0:
            self.positiony = CAR_SIZE/2
        elif (self.positiony + CAR_SIZE/2)> SCREEN_RECT.bottom:
            self.positiony = SCREEN_RECT.bottom - CAR_SIZE/2
    
    def accelerate(self):            #小车加速
        self.k += 1
    def moderate(self):              #小车减速
        self.k -= 1
        if self.k <=0:
            self.k=0
    def bracking(self):              #小车带有惯性的刹车
        pygame.time.delay(500)
        self.car_speedx = 0
        self.car_speedy = 0

四、键盘控制


键盘的上下左右控制小车移动,z加速,x减速,空格惯性刹车(刹车后可以看到小车向前动了一段距离)

        if keys_pressed[pygame.K_RIGHT]:
            self.car1.car_speedx = self.car1.k
        elif keys_pressed[pygame.K_LEFT]:
            self.car1.car_speedx = -self.car1.k
        else:
            self.car1.car_speedx = 0
        if keys_pressed[pygame.K_UP]:
            self.car1.car_speedy = -self.car1.k
        elif keys_pressed[pygame.K_DOWN]:
            self.car1.car_speedy = self.car1.k
        else:
            self.car1.car_speedy = 0
        
        if keys_pressed[pygame.K_z]:
            self.car1.accelerate()
        elif keys_pressed[pygame.K_x]:
            self.car1.moderate()
        elif keys_pressed[pygame.K_SPACE]:
            self.car1.bracking()

五、轨迹

  1. 画出需要跟踪的路径(这里使用的路径是贝塞尔曲线,详细用法可以去pygame官网文档查看)
pygame.gfxdraw.bezier(self.screen, [(100,620),(300,300),(400,600),(600,150)], 5, (255,0,0))

path_planning

  1. 画出小车跟踪的路径
pygame.draw.lines(self.screen, (0,0,0), 0, LINES_LIST)

track_planning

六、展示视频b站链接知乎链接youtube链接

七、预告

  1. 将使用本环境,结合深度强化学习代码,进行自主轨迹跟踪
  2. 将在本代码中加入可替换的路径规划程序,以代替自己设置的贝塞尔曲线
  3. 结合路径规划程序和深度强化学习程序,形成一套完整的轨迹规划仿真

如果以上的仿真有什么问题可以在下方的评论区里评论,我会帮大家解答和更改

pygame轨迹跟踪仿真到此结束,各位小伙伴觉得不错的话可以给我打赏

# 本篇文章在知乎github我的个人主页上同步上传,有兴趣的话点击链接,可以去我的个人主页观光哦~

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:17:32  更:2022-01-01 14:18:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 18:34:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码