我對Python/Pygame完全陌生,我試圖將圖像切分成子表面,然後將它們按順序粘貼到屏幕上(以便以後可以修改它會調用某個tile然後blit)。 E1:我認爲我終於設法以正確的方式進行了分割,但與blitting有一點關係。
E2:更新了代碼和錯誤(在我之前嘗試過的大部分代碼中都獲得了這個代碼)。Pygame:如何在圖像上平鋪子表面
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640, 480))
screen.fill((255, 255, 255))
def load_tileset(filename, width, height):
image = pygame.image.load(filename).convert()
image_width, image_height = image.get_size()
tileset = []
for tile_x in range(0, image_width//width):
line = []
tileset.append(line)
for tile_y in range(0, image_height//height):
rect = (tile_x*width, tile_y*height, width, height)
line.append(image.subsurface(rect))
return tileset
def draw_background(screen, tile_img, field_rect):
img_rect = tile_img.get_rect()
for y in range(0,400,32):
for x in range(0,600,32):
screen.blit(tile_img, (x,y))
Field_Rect = Rect(50,50, 300,300)
tileset = load_tileset("platform1.bmp", 17, 17)
bg_tile_img = tileset[0]
draw_background(screen, bg_tile_img, Field_Rect)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
pygame.display.flip()
它給出大氣壓的錯誤是:
img_rect = tile_img.get_rect()
AttributeError的: '列表' 對象沒有屬性 'get_rect'
顯示您嘗試過的代碼,以及您得到的錯誤或錯誤處理方式。 – Magnilex 2013-04-29 14:17:53
我嘗試過20種不同的方式,我沒有所有人的代碼,但是80%的時間出現的錯誤是超出界限的事情。地下矩形位於表面邊界之外。儘管數學表明事實並非如此。 =/ – 2013-04-29 14:37:39
如果你沒有顯示你所做的事情,恐怕你不會得到任何幫助。展示20項工作中的最佳成果,以及它如何失敗。 – Magnilex 2013-04-29 14:42:23