Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 25.06.2021
Сообщений: 1

Коллизии игрока и изометрического мира/блоков

25.06.2021, 10:14. Показов 3444. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно сделать коллизии для своего кода изометрической игры и добавить туда игрока, никак не могу понять как их делать, может кто подскажет? Буду очень благодарен. Вот код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import pygame
import sys
import time
import random
 
WIDTH = 700
HEIGHT = 700
from pygame.constants import QUIT
 
 
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT), 0, 32)
pygame.display.set_caption("game base")
display = pygame.Surface((300, 300))
 
ground_img = pygame.image.load('ground3.png')
ground_img.set_colorkey((0, 0, 0))
stone_img = pygame.image.load("stone2.png").convert()
stone_img.set_colorkey((0, 0, 0))
 
 
ground_dict = {}  # словарь {ряд-номер клетки-номер слоя: название картинки}
 
# читаем данные карты из файла и заполняем ими словарь
with open('map.txt') as f:
    map_data = [[int(c) for c in row.strip()] for row in f]
    for y, row in enumerate(map_data):
        for x, tile in enumerate(row):              
            if tile:
                ground_dict[f'{y}-{x}-1'] = 'stone'
                # для второго слоя
                if random.randint(0, 1):
                    ground_dict[f'{y}-{x}-2'] = 'ground'
 
while True:
    display.fill((0, 0, 0))
    # проходим в цикле по словарю
    for key, value in ground_dict.items():
        # получаем ряд, номер клетки и номер слоя
        y, x, n = list(map(int, key.split('-')))
        # определяем нужную картинку для клетки
        z = stone_img if value == 'stone' else ground_img 
        # отрисовываем в зависимости от номера слоя
        if n == 1:
            display.blit(z, (150 + x * 10 - y * 10, 100 + x * 5 + y * 5))
        elif n == 2:
            display.blit(z, (150 + x * 10 - y * 10, 100 + x * 5 + y * 5 - 14))   
 
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
 
    screen.blit(pygame.transform.scale(display, screen.get_size()), (55, 55))
    pygame.display.update()
    time.sleep(1)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.06.2021, 10:14
Ответы с готовыми решениями:

btRigidBody не предназначен для проверки коллизии игрока?
Здравствуйте. Я решил попробовать поработать с физическим движком Bullet3. У меня имеется камера и я хотел бы добавить проверку коллизии...

Коллизии с объектами 3D ака алгоритм коллизии(модер прочитай, потом пинай)
Прошу помощи у форумчан! Не стал кидать тему в тему мультимедии, т.к. напрямую задача не требует отрисовки в 3д. И так, что есть: на...

Не поможете ли вы с выбором изометрического движка
Не поможете ли вы пожалуйста выбрать изометрический движок для игры (для соц.сетей) с элемента фермы . или подскажите как его написать...

1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
30.06.2021, 04:15
grigory43, http://www.sscce.org/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.06.2021, 04:15
Помогаю со студенческими работами здесь

Литература по созданию изометрического поля в C++
Здравствуйте. Подскажите, пожалуйста, литературу по созданию изометрического поля на C++. В интернете статей много нашел, но вот чтоб там...

Выяснить тип изометрического преобразования
Надо определить тип изометрии(точнее геометрический смысл данного изометрического преобразования) \begin{pmatrix}x'\\ y'\\z'...

Для данных значений m, n и известной ставки каждого игрока определить номер игрока, который выиграл и сумму выигрыша
За круглым столом собралось n игроков (n <= 255). Каждый сделал ставку в k монет (1 <= k <= 5). Договорились, что при счете по часовой...

Выяснить тип и определить неподвижные точки изометрического преобразования
Задание дано в заголовке. Вот пример: \begin{pmatrix}x & \\ y & \end{pmatrix} \rightarrow \begin{pmatrix}0 & 1 \\ 1 &...

Автоматически подставить при вводе ID игрока в поле таблицы данные имени игрока из другой таблицы
Как автоматически подставить при вводе уникального ID игрока в поле таблицы данные имени игрока из другой таблицы которое связано в ней с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru