Код IT
← Каталог

Разработка игр на Python — Тайловый фон (Tilemap)

Фрагмент из «Разработка игр на Python»: Тайловый фон (Tilemap).

Python main.py

import pygame

TILE_SIZE = 64
MAP_WIDTH = 20 # Количество тайлов по ширине
MAP_HEIGHT = 15 # Количество тайлов по высоте

# Генерация карты (0 - земля, 1 - стена, 2 - вода)
# В реальности это загружается из JSON или текстового файла
simple_map = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,......], # Упрощено
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]

# Загрузка тайлов (для примера используем цвета)
tiles = {
    0: pygame.Surface((TILE_SIZE, TILE_SIZE)), # Земля
    1: pygame.Surface((TILE_SIZE, TILE_SIZE)), # Стена
    2: pygame.Surface((TILE_SIZE, TILE_SIZE))  # Вода
}

for key in tiles:
    if key == 0: tiles[key].fill((34, 139, 34)) # Forest Green
    elif key == 1: tiles[key].fill((105, 105, 105)) # Gray
    else: tiles[key].fill((65, 105, 225)) # Royal Blue

def draw_map(screen, map_data):
    for row_idx, row in enumerate(map_data):
        for col_idx, tile_type in enumerate(row):
            screen.blit(tiles[tile_type], (col_idx * TILE_SIZE, row_idx * TILE_SIZE))

# ... в функции main() после инициализации ...
# draw_map(screen, simple_map)

import pygame

TILE_SIZE = 64
MAP_WIDTH = 20 # Количество тайлов по ширине
MAP_HEIGHT = 15 # Количество тайлов по высоте

# Генерация карты (0 - земля, 1 - стена, 2 - вода)
# В реальности это загружается из JSON или текстового файла
simple_map = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,......], # Упрощено
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]

# Загрузка тайлов (для примера используем цвета)
tiles = {
    0: pygame.Surface((TILE_SIZE, TILE_SIZE)), # Земля
    1: pygame.Surface((TILE_SIZE, TILE_SIZE)), # Стена
    2: pygame.Surface((TILE_SIZE, TILE_SIZE))  # Вода
}

for key in tiles:
    if key == 0: tiles[key].fill((34, 139, 34)) # Forest Green
    elif key == 1: tiles[key].fill((105, 105, 105)) # Gray
    else: tiles[key].fill((65, 105, 225)) # Royal Blue

def draw_map(screen, map_data):
    for row_idx, row in enumerate(map_data):
        for col_idx, tile_type in enumerate(row):
            screen.blit(tiles[tile_type], (col_idx * TILE_SIZE, row_idx * TILE_SIZE))

# ... в функции main() после инициализации ...
# draw_map(screen, simple_map)