PyGame Snake随着窗口大小的增加而降低速度

时间:2020-09-03 21:30:30

标签: python pygame

我已经为这个问题苦苦挣扎了几天。我想最终将我的蛇游戏脚本转换为exe,供我的朋友玩。无论窗口大小如何,我都希望蛇以相同的速度移动。

例如:我现在的窗口大小是(400,400)。如果将大小增加到(800,800),则蛇的移动速度会变慢。但是,蛇的速度恒定为20个像素。似乎随着窗口大小的增加,我的主游戏循环正在以较慢的速度循环。

我知道蛇有更大的像素可以通过更大的窗口大小来遍历,但这对蛇的速度有何影响?我在想解决方案取决于将蛇绘制到屏幕上的速度,但是不能确定。

fun getCommentsOfPost(postId: Long) : LiveData<PagedList<Comment>>

2 个答案:

答案 0 :(得分:1)

游戏中的瓶颈是函数draw_grid,该函数会在窗口外绘制过多的行。

def draw_grid(window, height, width, color):

   x = 0
   y = 0

   grid_blocks = 20
   for i in range(height):
       x += 20
       pygame.draw.line(window, color, (x, 0), (x, height), 1)
       for j in range(width):
           y += 20
           pygame.draw.line(window, color, (0, y), (height, y), 1)

如果在窗口外部绘制一条线,则该语句不会绘制任何内容,尽管如此,嵌套的for循环仍在运行。
此外,您不需要嵌套循环。您不想为每条垂直线绘制19条水平线。您要绘制19条垂直线和19条水平线。因此,一个for循环就足够了。

使用range step 参数来定义垂直线和水平线的位置列表

def draw_grid(window, height, width, color):

    tile_size = 20
    for p in range(tile_size, height, tile_size):
        pygame.draw.line(window, color, (p, 0), (p, height), 1)
        pygame.draw.line(window, color, (0, p), (height, p), 1)

答案 1 :(得分:0)

如果尺寸为400 * 400像素,则总像素为160000,所以以20像素的速率移动,因为800 * 800板(320000像素)的像素较少,所以看起来您走得更快,因为更少像素。找到一个方程式,以计算不同尺寸的板上正确的速度。

此致, 扎克