如何Pygame库做一个弹球游戏

要准备图片:

命名为xiaoqiu.png

命名为 线.png

cmd下载:

pip:

pip install sys
pip install pygame
pip install tkinter

代码:

import sys
import tkinter as tk
import time
import pygame

pygame.init()
pygame.display.set_caption("弹球游戏")
size = width, height = 1000, 600
screen = pygame.display.set_mode(size)
color = (255 , 255 , 255)

ball = pygame.image.load("xiaoqiu.png") #WIN_20240724_15_31_09_Pro #小球图片名称:xiaoqiu.png
xian = pygame.image.load("线.png")
xian1 = pygame.image.load("线.png") 
ballrect = ball.get_rect()
xianrect = xian.get_rect()
xian1rect = xian1.get_rect()

speed = [5,5]
clock = pygame.time.Clock()
xianrect = xianrect.move(350, 500)
xian1rect = xian1rect.move(350, 505)

cvb = 0

while True:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    
    ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top < 0:
        speed[1] = -speed[1]
    
    if xianrect.colliderect(ballrect) and not(xian1rect.colliderect(ballrect)):
        ballrect = ballrect.move(15, -10)
        speed[1] = -speed[1]
        cvb=cvb+1
        
    if xian1rect.colliderect(ballrect):
        speed[1] = -speed[1]
        speed[0] = -speed[0]
        cvb=cvb+1
    
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:  # 如果方向键左按下
            xianrect = xianrect.move(-5,0)
            xian1rect = xian1rect.move(-5,0)
        if event.key == pygame.K_RIGHT:  # 如果方向键右按下
            xianrect = xianrect.move(5,0)
            xian1rect = xian1rect.move(5,0)
    
    if ballrect.bottom > 600:
        window=tk.Tk()
        window.title('消息')#窗口的标题
        window.geometry('630x90')#窗口的大小
        text1 = '游戏结束!你把小球弹回去了',cvb,'次'
        l = tk.Label(window, text=text1,font=('Arial', 12))
        l.pack()    # 固定窗口位置
        window.mainloop()
        break
    
    screen.fill(color)
    screen.blit(ball, ballrect)
    screen.blit(xian, xianrect)
    screen.blit(xian1,xian1rect)
    pygame.display.flip()
pygame.quit()
sys.exit()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!下面是一个简单的Pygame弹球游戏示例: ```python import pygame import random # 初始化Pygame pygame.init() # 游戏窗口尺寸 WIDTH = 800 HEIGHT = 600 # 定义颜色 BLACK = (0, 0, 0) WHITE = (255, 255, 255) BLUE = (0, 0, 255) RED = (255, 0, 0) # 创建游戏窗口 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("弹球游戏") # 创建球类 class Ball(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((20, 20)) self.image.fill(RED) self.rect = self.image.get_rect() self.rect.centerx = WIDTH // 2 self.rect.bottom = HEIGHT - 30 self.speed_x = random.choice([-3, 3]) self.speed_y = -3 def update(self): self.rect.x += self.speed_x self.rect.y += self.speed_y if self.rect.left <= 0 or self.rect.right >= WIDTH: self.speed_x *= -1 if self.rect.top <= 0: self.speed_y *= -1 if self.rect.bottom >= HEIGHT: self.kill() # 创建板类 class Paddle(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((100, 20)) self.image.fill(BLUE) self.rect = self.image.get_rect() self.rect.centerx = WIDTH // 2 self.rect.bottom = HEIGHT - 10 self.speed_x = 0 def update(self): self.rect.x += self.speed_x if self.rect.left < 0: self.rect.left = 0 if self.rect.right > WIDTH: self.rect.right = WIDTH # 创建精灵组 all_sprites = pygame.sprite.Group() balls = pygame.sprite.Group() # 创建球和板对象 ball = Ball() paddle = Paddle() # 添加对象到精灵组 all_sprites.add(ball) all_sprites.add(paddle) balls.add(ball) # 游戏循环 running = True clock = pygame.time.Clock() while running: clock.tick(60) # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: paddle.speed_x = -5 elif event.key == pygame.K_RIGHT: paddle.speed_x = 5 elif event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: paddle.speed_x = 0 # 更新游戏对象 all_sprites.update() # 碰撞检测 hits = pygame.sprite.spritecollide(paddle, balls, False) if hits: ball.speed_y *= -1 # 绘制背景 screen.fill(BLACK) # 绘制游戏对象 all_sprites.draw(screen) # 更新屏幕显示 pygame.display.flip() # 退出游戏 pygame.quit() ``` 这是一个简单的弹球游戏,球会从上方下落,玩家可以使用左右箭头键来移动板,将球弹回去。当球触底时游戏结束。你可以根据自己的需求进一步完善游戏规则和界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值