Pygame
Verfasst: Freitag 15. Januar 2021, 08:59
Hi.
Ich möchte Break out in Python programmieren. Bis jetzt ist auch alles gut. Allerdings brauch ich jetzt viele Blöcke statt ein.
Wie kann ich jetzt mehrere Blöcke erstellen? Danke im voraus
Ich möchte Break out in Python programmieren. Bis jetzt ist auch alles gut. Allerdings brauch ich jetzt viele Blöcke statt ein.
Code: Alles auswählen
import pygame, sys, random
pygame.init()
class player:
def __init__(self, player_posX, player_posY, player_width, player_height):
self.player_posX = player_posX
self.player_posY = player_posY
self.player_width = player_width
self.player_height = player_height
self.player_speed = 3
class ball:
def __init__(self, ball_posX, ball_posY, ball_width, ball_height):
self.ball_posX = ball_posX
self.ball_posY = ball_posY
self.ball_width = ball_width
self.ball_height = ball_height
self.ran_choice = (2, -2)
self.ball_speedX = random.choice(self.ran_choice)
self.ball_speedY = 1
class block:
def __init__(self, block_posX, block_posY, block_width, block_height, lives):
self.block_posX = block_posX
self.block_posY = block_posY
self.block_width = block_width
self.block_height = block_height
self.lives = lives
def exit():
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit
sys.exit()
def draw():
global plank, player_rect, bg, ball_sprite, ball_rect, block_rect, block_1
screen.blit(bg, (0,0))
pygame.draw.rect(screen, white, player_rect)
pygame.draw.ellipse(screen, white, ball_rect)
if block_1.lives > 0:
if block_1.lives == 1:
pygame.draw.rect(screen, red, block_rect)
if block_1.lives == 2:
pygame.draw.rect(screen, blue, block_rect)
if block_1.lives == 3:
pygame.draw.rect(screen, green, block_rect)
def player_mov():
global player_rect, ball, ball_rect, player, screenwidth,start, ball_rect
keys = pygame.key.get_pressed()
if keys[pygame.K_a] and player_rect.left >= 0:
player_rect.left -= player.player_speed
if start == False:
ball_rect.left -= player.player_speed
if keys[pygame.K_d] and player_rect.right <= screenwidth:
player_rect.right += player.player_speed
if start == False:
ball_rect.right += player.player_speed
def ball_mov():
global ball, ball_rect, run, start
if run and start:
ball_rect.x -= ball.ball_speedX
ball_rect.y -= ball.ball_speedY
def bounce_borders():
global ball, ball_rect, run, screenheight
if run and start:
if ball_rect.top <= 0:
ball.ball_speedY = -ball.ball_speedY
if ball_rect.right >= screenwidth or ball_rect.left <= 0:
ball.ball_speedX = -ball.ball_speedX
if ball_rect.bottom >= screenheight:
run = False
def player_col():
global ball_rect, player_rect, ball, player
if ball_rect.colliderect(player_rect):
if abs(ball_rect.bottom - player_rect.top) <= 5:
ball.ball_speedY *= -1
if abs(ball_rect.left - player_rect.right) <= 5 and player.player_speed > 0:
ball.ball_speedX *= -1
if abs(ball_rect.right - player_rect.left) <= 5 and player.player_speed > 0:
ball.ball_speedX *= -1
def game_start():
global start, ball_rect
keys = pygame.key.get_pressed()
if keys[pygame.K_SPACE] and start == False:
start = True
def block_coll():
global ball_rect, block_rect, ball, block_1
if ball_rect.colliderect(block_rect) and block_1.lives > 0:
if abs(ball_rect.bottom - block_rect.top) <= 5:
ball.ball_speedY *= -1
block_1.lives = block_1.lives -1
if abs(ball_rect.top - block_rect.bottom) <= 5:
ball.ball_speedY *= -1
block_1.lives = block_1.lives -1
if abs(ball_rect.left - block_rect.right) <= 5:
ball.ball_speedX *= -1
block_1.lives = block_1.lives -1
if abs(ball_rect.right - block_rect.left) <= 5:
ball.ball_speedX *= -1
block_1.lives = block_1.lives -1
# screen and clock
screenheight = 600
screenwidth = 800
FPS = 244
screen = pygame.display.set_mode((screenwidth,screenheight))
clock = pygame.time.Clock()
# colors
red = (255,0,0)
blue = (0,0,255)
green = (0,255,0)
white = (255,255,255)
# player
player = player(350,screenheight-50, 130, 15)
player_rect = pygame.Rect(player.player_posX, player.player_posY, player.player_width, player.player_height )
# back ground
bg = pygame.image.load("Bg.png").convert()
# ball
ball = ball(player.player_posX + 50, player.player_posY - 30, 30, 30)
ball_rect = pygame.Rect(ball.ball_posX, ball.ball_posY, ball.ball_width, ball.ball_height)
# block
block_1 = block(80, 35, 100, 20, 3)
block_rect = pygame.Rect(block_1.block_posX, block_1.block_posY, block_1.block_width, block_1.block_height)
# main loop
start = False
run = True
while run:
# exit
exit()
# draw
draw()
# player movement
player_mov()
# ball movement
ball_mov()
# bounce on borders
bounce_borders()
# start
game_start()
# block collison
block_coll()
# collision with player
player_col()
clock.tick(FPS)
pygame.display.update()