我的目标是用小的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的范围问题,即使我试图增加它。如果是这种情况,我该如何解决这个问题?
答案 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