1

我有一个 pygame 程序,旨在用 Grass.png 填充 pygame 窗口:

import pygame, sys
from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode([600, 500])

def DrawBackground(background, xpos, ypos):
    screen.blit(background, [xpos, ypos])

background = pygame.image.load('Grass.png')
xpos = 0
ypos = 0

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    while ypos >= -500:
        while xpos <= 600:
            DrawBackground(background, xpos, ypos)
            xpos += 100
        ypos -= 100

    pygame.display.flip()

唯一的问题是,它只用图像填充前 100 像素行。代码有什么问题?谢谢。

4

2 回答 2

1

你最好使用 for 循环而不是 while 循环来做到这一点。

for y in range(5):
    for x in range(6):
        DrawBackground(background, x*100, y*100)

使代码更具可读性和更易于调试。但是在回答您的问题时,就像 frr171 所说,原点 (0, 0) 位于屏幕的左上角。向右走时,x 轴增加,向下走时,y 轴增加。

在此处输入图像描述

于 2013-08-06T04:12:12.767 回答
1

当您向下移动屏幕时,y 轴为正 - 因此,当您的第一行位于 0 的 y 位置时,下一行将位于 100 的 y 位置。基本上,您应该添加到 y-协调,而不是减法。

于 2013-08-05T20:47:07.150 回答