ShenCantJava 2022-01-23 17:44 采纳率: 0%
浏览 98
已结题

解决Pygame高分辨率卡顿

解决Pygame高分辨率卡顿问题

在做游戏的时候需要一张地图,但是这张地图非常大,而且是通过pygame.draw.rect()来绘制出来的。
整张地图的分辨率在8000x8000左右,我通过pygame.surface.Surface((8000,8000),flags=SRCALPHA)绘制出地图然后用鼠标偏移来控制地图的位置。
但是由于整张地图分辨率太高,所以绘制出来的时候特别的卡。
下面是部分代码:

while True:
    screen = pygame.surface.Surface((8000,8000), flags = SRCALPHA)

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == MOUSEBUTTONDOWN:
                mouseState = True
                lastPos = pygame.mouse.get_pos()
        if event.type == MOUSEBUTTONUP:
            mouseState = False
    canvas.fill((51, 51, 51))
    if mouseState:
        pos = pygame.mouse.get_pos()
        dx += pos[0] - lastPos[0]
        dy += pos[1] - lastPos[1]
        lastPos = pos
    for i in range(int(screen.get_height() / 70) + 1):
        for j in range(int(screen.get_width() / 70) + 1):
            if (70 - 1) * j + 70 + 2 + dx >= 0 and (70 - 1) * i + 70 + 2 + dy >= 0 and (         # 这里是用来优化的,然是优化过后仍然会卡
                    70 - 1) * j - 2 + dx + 70 <= canvas.get_width() and (
                    70 - 1) * i - 2 + dy + 70 <= canvas.get_height():
                pygame.draw.rect(screen, (60, 60, 60), pygame.Rect((70 - 1) * j, (70 - 1) * i, 70, 70), 2)
    clock.tick(fps)
    canvas.blit(screen,(dx, dy))
    pygame.display.update()

请问有没有什么优化方法可以让界面不变的这么卡
望解决!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月31日
    • 创建了问题 1月23日

    悬赏问题

    • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
    • ¥30 求一段fortran代码用IVF编译运行的结果
    • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
    • ¥15 lammps拉伸应力应变曲线分析
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
    • ¥30 python代码,帮调试,帮帮忙吧