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

Обработка столкновений

14.06.2021, 09:06. Показов 2727. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу в pygame обрабатывать столкновения автомотически через движок(тоесть я пишу одну строчку а он обрабатывает столкновения)

Мой код:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import pygame
import Engine as en
 
clock = pygame.time.Clock()
window = pygame.display.set_mode((en.W, en.H))
pygame.display.set_caption('Game')
 
WallF = False
WallB = False
WallL = False
WallR = False
 
en.Wall.__init__(en.Wall, en.x, en.y)
run = True
while run:
    clock.tick(30)
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
 
    window.fill((en.LightBlue))
 
    keys = pygame.key.get_pressed()
 
    #draw all
    #pygame.draw.rect(window, en.purple, (en.x + 60, en.y + 100, 60, 400))
    #pygame.draw.rect(window, en.purple, (en.x + 780, en.y + 100, 60, 400))
    #pygame.draw.rect(window, en.purple, (en.x + 60, en.y + 100, 780, 60))
    #pygame.draw.rect(window, en.purple, (en.x + 60, en.y + 500, 780, 60))
 
    xP = en.Wall.draw(en.Wall, window, en.purple, en.x + 34, en.y + 48, 100, 500),\
         en.Wall.draw(en.Wall, window, en.red, 84, 98, 70, 33),\
 
 
    for i in xP:
        if i[0] - 20 <= en.centerX and i[0] >= en.centerX:
            WallF = False
            WallB = False
            WallL = True
            WallR = False
            print('True')
        if i[0] + i[2] + 20 >= en.centerX and i[0] + i[2] <= en.centerX:
            WallF = False
            WallB = False
            WallL = False
            WallR = True
            print('True')
        if i[1] - 20 <= en.centerY and i[1] >= en.centerY:
            WallF = True
            WallB = False
            WallL = False
            WallR = False
            print('True')
        if i[1] + i[3] + 20 >= en.centerY and i[1] + i[3] <= en.centerY:
            WallF = False
            WallB = True
            WallL = False
            WallR = False
            print('True')
        else:
            WallF = False
            WallB = False
            WallL = False
            WallR = False
 
    # move events
    if WallF and keys[pygame.K_w]:
        en.y += en.speed
    if keys[pygame.K_s] and WallB:
        en.y -= en.speed
    if keys[pygame.K_a] and WallL:
        en.x += en.speed
    if keys[pygame.K_d] and WallR:
        en.x -= en.speed
 
    #draw person
    pygame.draw.circle(window, en.green, (en.centerX, en.centerY), 20)
 
    pygame.display.update()
Скрипт Engine
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
import pygame
 
#Resolution (Defalt - 900*600)
W = 900
H = 600
 
x = 0
y = 0
speed = 4
 
class Wall:
    def __init__(self, x, y):
        self.xOrig = x
        self.yOrig = y
    def draw(self, window, color, x, y, withs, heitht):
        pygame.draw.rect(window, color, (x, y, withs, heitht))
        XP = self.xOrig + x
        YP = self.yOrig + y
        return XP, YP, withs, heitht
 
black = 0, 0, 0
white = 255, 255, 255
red = 255, 0, 0
green = 0, 255, 0
blue = 0, 0, 255
yellow = 255, 255, 0
purple = 255, 0, 255
LightBlue = 0, 255, 255
 
centerX = W // 2
centerY = H // 2
 
ForwPort = False
BackPort = False
RightPort = False
LeftPort = False
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2021, 09:06
Ответы с готовыми решениями:

Попиксельная проверка столкновений. Pygame
Здравствуйте, я хочу сделать проверку столкновений спрайтов, но при этом нужно чтобы...

Обработка столкновений
Великие гуру AS 3.0 нужен ваш совет. Можете мне скинуть пример обработки столкновений...

Обработка столкновений
Хочу сделать платформер но не могу сделать врагов , которые будут двигаться вертикально ...

Обработка столкновений
Как можно обрабатывать столкновения у прямоугольника, круга и сложных фигур? Мне нужна теория

Обработка столкновений
Расскажите у кого какой опыт обработки столкновений при создании игр? два спрайта, должно...

0
14.06.2021, 09:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2021, 09:06
Помогаю со студенческими работами здесь

Обработка столкновений
Всем привет!!!. Делаю столкновения в игре нужно чтобы при столкновении .game_hero c...

Qt: обработка столкновений шаров
Задача такая: летают 20 шаров разных велечин в разных направлениях. Надо сделать так, чтобы они...

Корректная обработка столкновений
Доброго времени суток. Есть 1 главный объект. И есть еще 10 разных объектов. Как корректно...

Некоректная обработка столкновений
Всем привет! Давно я голову ломаю про то, как сделать обработку коллизий хорошей.Проблема в том,...

Обработка множества столкновений
Есть игра на js и сервер на nodejs, на карте более 1000 обьектов и все нужно обрабатывать на...

Обработка множества столкновений
Есть игра на js и сервер на nodejs, на карте более 1000 обьектов и все нужно обрабатывать на...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru