如何使用循环来填充背景

时间:2018-01-12 12:47:28

标签: python for-loop pygame

我的目标是用小的50px / 50px块填充我的整个屏幕,代表pygame中的背景。我写了这个程序从左到右填充,让图片向下移动50px并再次从左到右填充。相反,我得到一个无限循环,它只在垂直填充。谢谢!

这是我的代码:

def fill_background():
    tiles = [b1,b2,b3,b4,b5,b6] #these are background tiles

x = 0
y = 0

for int in range(0,25):
    rand = random.randint(0,5)
    gameDisplay.blit(tiles[rand], (x,y)) #blit tuble is equal to x,y coord of pic
    x = x + 50
    if width/x == 16: #no more horizontal pics needed
        y += 50 #add 50 y and reset 0 so it fills left-right top-bottom
        x = 0
    #if width/x == 16 && height/y == 10:

`

我认为这是x维持x = 0的范围问题,即使我试图增加它。如果是这种情况,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

看起来问题中的间距是错误的。我假设宽度意味着屏幕的像素宽度。在这种情况下,行完成的条件是x> = width。我猜测在你的情况下,宽度= 50 * 16这意味着第一次圆宽/ x总是等于16.这将x设置回零,这是你观察到的。

而不是运行25次的循环(我假设你想要25行瓷砖,而不是你得到25个瓷砖),我想你要继续前进直到y>高度。

正确的代码应该是:

def fill_background():
  tiles = [b1,b2,b3,b4,b5,b6] #these are background tiles

  x = 0
  y = 0

  while y<height:
    rand = random.randint(0,5)
    gameDisplay.blit(tiles[rand], (x,y)) #blit tuple is equal to x,y coord of pic
    x = x + 50
    if x>= width: #no more horizontal pics needed
        y += 50 #add 50 y and reset 0 so it fills left-right top-bottom
        x = 0