Answer the question
In order to leave comments, you need to log in
How to make collision?
How can I make it so that when the top square collides with the bottom one, it changes its direction
import pygame
import random
WIDTH = 500
HEIGHT = 500
FPS = 30
proverka = 0
dvizh = 0
vzr = 0
k = 0
pr1 = 0
pr2 = 0
# Задаем цвета
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
Purple = (126, 130, 150)
RED2 =(205, 92, 92)
PINK = (255, 105, 180)
GOLD = (255, 215, 0)
AQUA = (0, 255, 255)
TEAL = (0, 128, 128)
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill(GREEN)
self.rect = self.image.get_rect()
self.rect.center = (WIDTH / 2, HEIGHT / 2)
def update(self):
global proverka,vzr
if self.rect.bottom < HEIGHT and proverka == 0:
self.rect.y+= 10
if self.rect.bottom > HEIGHT:
proverka = 1
if proverka == 1:
self.rect.y-=10
if self.rect.top < HEIGHT - HEIGHT:
proverka = 2
if proverka == 2:
self.rect.y+=10
class Player1(pygame.sprite.Sprite):
def __init__(delf):
pygame.sprite.Sprite.__init__(delf)
delf.image = pygame.Surface((100, 50))
delf.image.fill(PINK)
delf.rect = delf.image.get_rect()
delf.rect.center = (50, 475)
def update(delf):
global dvizh
if delf.rect.left > WIDTH-WIDTH and dvizh == 0:
delf.rect.x-=5
if delf.rect.left == WIDTH-WIDTH:
dvizh = 1
if dvizh == 1:
delf.rect.x+=5
if delf.rect.right == WIDTH:
dvizh = 2
if dvizh == 2:
delf.rect.x-=5
# Создаем игру и окно
pygame.init() # Команда запуска игры
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # Окно программы
pygame.display.set_caption("My Game")
clock = pygame.time.Clock() # Убеждаемся,что игра работает с заданной частотой кадров
all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
player = Player1()
all_sprites.add(player)
# Цикл игры
running = True
while running:
# Держим цикл на правильной скорости
clock.tick(FPS)
# Ввод процесса (события)
for event in pygame.event.get():
# check for closing window
if event.type == pygame.QUIT: # Функция,при нажатии на крестик игра закрывается
running = False
# Обновление (Область куда добавляются спрайты)
all_sprites.update()
# Рендеринг
screen.fill(WHITE)
all_sprites.draw(screen)
# После отрисовки всего, переворачиваем экран
pygame.display.flip() # Функция должа быть в коцне, иначе что ниже не отрисуется
pygame.quit()
Answer the question
In order to leave comments, you need to log in
You check if the coordinates of the square is greater than or equal to the height of the square, and X is in the square, then speed = -speed.
If it is not clear, ask, I can throw off the code. Good luck.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question