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)
沒有留言:
張貼留言