Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

placing images on a pygame grid

The red and blue sides would each have their tiles replaced by an image (not one image overlapping them all, but one image pasted onto each tile). I’m not really sure how to go about it, and any help would be appreciated!

enter image description here

import pygame

TILESIZE = 22
margin = 1
BOARD_POS = (10, 10)


def create_board_surf():
    board_surf = pygame.Surface((TILESIZE * 50 + margin * 51, TILESIZE * 26 + margin * 27))
    board_surf.set_colorkey((0, 0, 0))
    board_surf.set_alpha(210)
    for row in range(26):
        for column in range(0, 25):
            color = (170, 70, 70)
            rect = pygame.draw.rect(screen, color, [(margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin, TILESIZE, TILESIZE])
            pygame.draw.rect(board_surf, pygame.Color(color), rect)
        for column in range(25, 50):
            color = (70, 95, 195)
            rect = pygame.draw.rect(screen, color, [(margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin, TILESIZE, TILESIZE])
            pygame.draw.rect(board_surf, pygame.Color(color), rect)
    return board_surf


def create_board():
    board = []
    for row in range(26):
        board.append([])
        for column in range(50):
            board[row].append(None)
    return board


def main():
    global screen
    pygame.init()
    screen = pygame.display.set_mode((1200, 650))
    clock = pygame.time.Clock()

    while True:
        events = pygame.event.get()
        for e in events:
            if e.type == pygame.QUIT:
                return

        create_board()
        board_surf = create_board_surf()
        screen.fill(pygame.Color((200, 200, 200)))
        screen.blit(board_surf, BOARD_POS)
        pygame.display.flip()
        clock.tick(60)


main()

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Under def create_board_surf(): where you draw rectangles for each tile, replace the pygame.draw.rect with board_surf.blit(IMAGE_SURFACE, ((margin + TILESIZE) * column + margin, (margin + TILESIZE) * row + margin)) to put an image where the tile rectangle would of been.

You can make the IMAGE_SURFACE by img = pygame.image.load("IMAGENAME.png")
These images would have to be scaled to the tile size so they fit properly:
img = pygame.transform.scale(img, (TILESIZE, TILESIZE))

If some tiles should have different images, you could maybe use the column and row location to determine which image to use, the same way some tiles are red while others are blue based on their column.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading