Я сделал игровую карту, подобную этой
class Game_map:
def __init__(self):
self.land = pygame.image.load(r"C:\Users\name\OneDrive\Documents\A level python codes\final game\land.png").convert()
self.height = 200
self.width = 200
self.land = pygame.transform.scale(self.land, (420, 250))
self.land.set_colorkey((0, 0, 0))
self.map_width = 6000
self.map_height = 2000
# 0 = emepty
# 1 = land
self.layout = [[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0 ],
[ 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0 ]]
def draw_map(self):
y = 0
for layer in self.layout:
x = 0
for land in layer:
if land == 1:
D.blit(self.land, (x * 400 - scroll[0], y * 250 - scroll[1]))
if land == 0:
pass
x += 1
y += 1
game_map = Game_map()
У меня есть класс игрока с self.x
, self.y
, self.width
и self.height
. Как бы я реализовать обнаружение столкновений с этим? Моя первоначальная идея заключалась в том, что я бы использовал self.x
и self.y
в функции draw_map()
, чтобы потом можно было проверять наличие таких столкновений
def draw_map(self):
for layer in self.layout:
for land in layer:
if land == 1:
D.blit(self.land, (self.x * 400 - scroll[0], self. y * 250 - scroll[1]))
if land == 0:
pass
x += 1
y += 1
Но когда я это делаю, ничто не обращается к экран. Я также попытался добавить значения x
и y
в оригинальной функции draw_map
, упомянутой выше, в список и обнаружить коллизию с этим, но это стало действительно грязным и не работало. Есть ли другой способ обнаружения столкновений? Спасибо