ArkaPygame 1.4 – Collision detected

In the code I use the collision detection now.

# pong!
import pygame
from pygame import gfxdraw


class Brick:
    "Draw Player 2"

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def update(self):
        pygame.draw.rect(screen, GREEN, (self.x, self.y, 60, 20))
        self.rect = pygame.Rect(self.x, self.y, 60, 20)


class Bar:
    "Draw Player 2"

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def update(self):
        pygame.draw.rect(screen, RED, (self.x, self.y, 60, 10))
        self.rect = pygame.Rect(self.x, self.y, 60, 10)


class Ball:
    "Draw Player 2"

    def __init__(self, xb, yb):
        self.xb = xb
        self.yb = yb

    def update(self):
        "The ball moves"
        global ball
        global ball_x, ball_y

        # sull'asse x Va verso sinistra
        if ball_x == "left":
            # sottraggo perchè vado a sinistra
            ball.xb -= vel_bal
            # se arriva a 10 rimbalza
            if ball.xb < 10:
                ball_x = "right"
        # va in basso
        if ball_y == 'down':
            # allora aumenta y quando va in basso (parte da 0 in alto)
            ball.yb += vel_bal
        if ball_y == 'up':
            # quando va in alto tolgo
            ball.yb -= vel_bal
            # se arriva in cima rimbalza in basso
            if ball.yb < 10:
                ball_y = 'down'
        # se va a destra aumenta x
        if ball_x == "right":
            ball.xb += vel_bal
            # a 480 rimbalza verso sinistra
            if ball.xb > 480:
                ball_x = "left"
        gfxdraw.filled_circle(screen, ball.xb, ball.yb, 5, GREEN)
        self.rect = pygame.Rect(self.xb, self.yb, 10, 10)


def collision():
    global ball, bar, ball_y

    if ball.rect.colliderect(bar):
        print("Collision detected")
        ball_y = "up"
        print(ball_y)
        print(ball.yb)
        speed_up()
    if ball.yb > 500:
        ball.xb, ball.yb = 500, 300


def exit(event):
    global loop

    if event.type == pygame.QUIT:
        loop = 0
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_ESCAPE:
            loop = 0
    return loop


def speed_up():
    global bar, vel_bal
    bar.x = pygame.mouse.get_pos()[0]
    if startx == bar.x:
        vel_bal = 2
        print("Normal speed")
    else:
        vel_bal = 3
        print("Speed up")


def create_bricks():
    "The bricks scheme"
    blist = """
110011
111111
011110
""".splitlines()[1:]
    bricks = []
    h = 40
    w = 0
    for line in blist:
        for brick in line:
            if brick == "1":
                bricks.append(Brick(20 + w * 80, h))
            w += 1
            if w == 6:
                w = 0
                h += 40
    return bricks


BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
ball_x = 'left'
ball_y = 'down'
scorep1 = 0
scorep2 = 0
vel_bal = 2
pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((500, 500))
pygame.display.set_caption("Game")
startx = 0
bar = Bar(10, 480)
ball = Ball(100, 100)
bricks = create_bricks()
background = pygame.image.load("img\\background.png")
pygame.mouse.set_visible(False)
loop = 1
while loop:
    screen.blit(background, (0, 0))
    keys = pygame.key.get_pressed()
    for event in pygame.event.get():
        loop = exit(event)
    if pygame.mouse.get_pos()[0] > 10 and pygame.mouse.get_pos()[0] < 430:
        bar.x = pygame.mouse.get_pos()[0]
    ball.update()
    bar.update()
    collision()
    startx = bar.x
    for brick in bricks:
        brick.update()
    pygame.display.update()
    clock.tick(120)


pygame.quit()

Ping Pong

Pong v. 1.0 – Pygame example


Arkanoid (from pong to arkanoid)

Arkanoid… let’s make it better…


Arkanoid 1.2

Arkanoid 1.2


Arkanoid 1.3

ArkaPyGame 1.3 – Adding a background


Arkanoid 1.4 – Collisions

ArkaPygame 1.4 – Collision detected


Arkanoid 1.5 – Collisions 2

Arkanoid in pygame part 5


Subscribe to the newsletter for updates
Tkinter templates
My youtube channel

Twitter: @pythonprogrammi - python_pygame

Videos

Speech recognition game

Pygame's Platform Game

Other Pygame's posts