Python pygame | Колизии
код:
#библиотеки
import pygame
from random import randrange
#спрайты
walkRight = [pygame.image.load('pygame_right_1.png'),
pygame.image.load('pygame_right_2.png'), pygame.image.load('pygame_right_3.png'),
pygame.image.load('pygame_right_4.png'), pygame.image.load('pygame_right_5.png'),
pygame.image.load('pygame_right_6.png')]
walkLeft = [pygame.image.load('pygame_left_1.png'),
pygame.image.load('pygame_left_2.png'), pygame.image.load('pygame_left_3.png'),
pygame.image.load('pygame_left_4.png'), pygame.image.load('pygame_left_5.png'),
pygame.image.load('pygame_left_6.png')]
bg = pygame.image.load('pygame_bg.jpg')
playerStand = pygame.image.load('pygame_idle.png')
#создаём границы
pygame.init()
win = pygame.display.set_mode((1200, 650))
player = pygame.Surface((40,80 ))
zen = pygame.Surface((40, 40))
arrow = pygame.Surface((20, 40))
#даём название окну
pygame.display.set_caption('tremp hunter beta')
#фреймы
clock = pygame.time.Clock()
#координаты пули до выстрела
a_x = 1000
a_y = 1000
#счёт
score = 0
myfont = pygame.font.SysFont('monospace', 39)
#логичечкая переменная чтоб можно было стрелять только 1 раз
strike = False
#кординаты игрока
x = 20
y = 533
#кординаты врага
x_e = 850
y_e = 50
#корость
speed = 5
#то нужно чтобы выводить квадрат в разнх местах по рандому
apple = randrange (0, x_e, y_e), randrange (0, x_e , y_e)
#для прижка
isJump = False
jumpCount = 10
#для передвижения
left = False
right = False
#для спрайов
animCount = 0
#цикл для рисования
def drawWindow () :
global animCount
win.blit(bg, (-1,-1 ))
win.blit(zen, (*apple, y_e, y_e))
win.blit(arrow, (a_x, a_y))
string = myfont.render('SCORE: ' + str(score), 0, (255, 0,0))
win.blit(string, (0, 50))
win.blit(player, (x ,y ))
pygame.display.update()#обновление цикла
#переменная для движения
run = True
#цикл
while run:
clock.tick(30)#fps
#проверка нв закрытие
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
#управление
keys = pygame.key.get_pressed()
if keys[pygame.K_f]:
if strike == False:
strike=True
a_x = x
a_y = y - 40
if strike :
a_y -= 100
if a_y< 1:
strike = False
a_y = 1000
a_x = 1000
if keys[pygame.K_LEFT] and x > 5:
x-= speed
left = True
right = False
lastMove = 'left'
elif keys[pygame.K_RIGHT]and x<1100 - 20 - 5:
x += speed
left = False
right = True
lastMove = 'right'
else:
left = False
right = False
animCount = 0
#прыжок
if not (isJump):
if keys[pygame.K_SPACE]:
isJump = True
else:
if jumpCount >= -10:
if jumpCount < 0:
y += (jumpCount ** 2) / 2
else:
y -= (jumpCount ** 2) / 2
jumpCount -= 1
else:
isJump = False
jumpCount = 10
drawWindow()#конец цикла
pygame.quit()#закрытие
#смотри у нас ести координаты перса это x , y , а границы перса с размером 40 на 80
#мы их соединяем с помощью рисования и границ и картинки - это win.blit(player, (x ,y ))