2024年3月11日 星期一

Ball 1

 import pygame

import sys

import random

from pygame.locals import *


# 初始化 Pygame

pygame.init()


# 遊戲視窗設定

width, height = 1800, 600

window = pygame.display.set_mode((width, height))

pygame.display.set_caption("打磚塊遊戲-xxx")


# 設定顏色

BLACK = (0, 0, 0)

WHITE = (255, 255, 255)

RED = (255, 0, 0)

GREEN = (0, 255, 0)

BLUE = (0, 0, 255)

YELLOW = (255, 255, 0)


# 繪製磚塊

bricks = []

def create_bricks():

    for row in range(5):

        for column in range(width // (75+5)):  # 設定每一排磚塊數量,35 為磚塊寬度,5 為磚塊間距

            brick_rect = pygame.Rect(column*(75+5), row*(25+5)+50, 77, 18)  # 設定磚塊大小,25 為磚塊高度

            color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

            bricks.append((brick_rect, color))


def draw_bricks():

    for brick in bricks:

        pygame.draw.rect(window, brick[1], brick[0])


# 檔板設定

paddle_width, paddle_height = 60, 10

paddle_y = height - 20


# 球設定

ball_radius = 50

ball_speed_x, ball_speed_y = 5, 5

ball_x, ball_y = width // 2, height // 2

paddle_x = ball_x -50


# 計分

score = 0


# 文字顯示

font = pygame.font.Font(None, 96)


# 主遊戲迴圈

create_bricks()

while True:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            pygame.quit()

            sys.exit()


    # 控制挡板移動(如果沒有自動控制擋板,保留這段代碼)

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]:

        paddle_x -= 10

    if keys[pygame.K_RIGHT]:

        paddle_x += 10


    # 移動球

    ball_x += ball_speed_x

    ball_y += ball_speed_y

    

    # 判斷球是否觸碰左右邊界,並回彈

    if ball_x - ball_radius <= 0 or ball_x + ball_radius >= width:

        ball_speed_x = -ball_speed_x


    # 判斷球是否觸碰上邊界,並回彈

    if ball_y - ball_radius <= 0:

        ball_speed_y = -ball_speed_y


    # 判斷球和檔板碰撞

    if ball_y + ball_radius > paddle_y and paddle_x < ball_x < paddle_x + paddle_width:

        ball_speed_y = -ball_speed_y

    

    # 判斷球是否與磚塊碰撞

    for brick in bricks[:]:

        if brick[0].colliderect(pygame.Rect(ball_x - ball_radius, ball_y - ball_radius, ball_radius * 2, ball_radius * 2)):

            bricks.remove(brick)

            ball_speed_y = -ball_speed_y

            score += 2

            break

           

    

    # 畫面清除

    window.fill(BLACK)


    # 繪製磚塊

    draw_bricks()

    

    # auto 

    paddle_x = ball_x -30


    # 畫檔板

    pygame.draw.rect(window, WHITE, (paddle_x, paddle_y, paddle_width, paddle_height))

    # 畫球

    pygame.draw.circle(window, YELLOW, (ball_x, ball_y), ball_radius)

    

    # 顯示分數

    text = font.render("Score: " + str(score), True, WHITE)

    window.blit(text, (10, 10))

    

    # 更新畫面

    pygame.display.flip()

    # 控制遊戲更新速率

    pygame.time.Clock().tick(600)



沒有留言:

張貼留言