mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2024-09-18 21:57:07 +03:00
34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
'''
|
|
This file contains the Ball class that represents the game ball.
|
|
'''
|
|
import pygame
|
|
import random
|
|
class Ball:
|
|
def __init__(self, x, y):
|
|
self.radius = 10
|
|
self.x = x
|
|
self.y = y
|
|
self.speed_x = random.choice([-2, 2])
|
|
self.speed_y = random.choice([-2, 2])
|
|
self.rect = pygame.Rect(self.x - self.radius, self.y - self.radius, self.radius * 2, self.radius * 2)
|
|
def update(self, paddle1, paddle2):
|
|
self.x += self.speed_x
|
|
self.y += self.speed_y
|
|
if self.y <= self.radius or self.y >= 400 - self.radius:
|
|
self.speed_y *= -1
|
|
ball_bbox = pygame.Rect(self.x - self.radius, self.y - self.radius, self.radius * 2, self.radius * 2)
|
|
paddle1_bbox = paddle1.rect.inflate(-5, -5)
|
|
paddle2_bbox = paddle2.rect.inflate(-5, -5)
|
|
if ball_bbox.colliderect(paddle1_bbox) or ball_bbox.colliderect(paddle2_bbox):
|
|
self.speed_x *= -1
|
|
self.rect.x = self.x - self.radius
|
|
self.rect.y = self.y - self.radius
|
|
def draw(self, screen):
|
|
pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), self.radius)
|
|
def reset(self):
|
|
self.x = 400
|
|
self.y = 200
|
|
self.speed_x = random.choice([-2, 2])
|
|
self.speed_y = random.choice([-2, 2])
|
|
self.rect.x = self.x - self.radius
|
|
self.rect.y = self.y - self.radius |