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

解决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 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
    • ¥50 opencv4nodejs 如何安装
    • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
    • ¥15 nginx反向代理获取ip,java获取真实ip
    • ¥15 eda:门禁系统设计
    • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
    • ¥15 376.1电表主站通信协议下发指令全被否认问题
    • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
    • ¥15 复杂网络,变滞后传递熵,FDA
    • ¥20 csv格式数据集预处理及模型选择