多数无益,上代码:
- import pygame
- import random
-
- # 初始化pygame
- pygame.init()
-
- # 设置窗口尺寸
- window_width = 800
- window_height = 600
- window_size = (window_width, window_height)
- window = pygame.display.set_mode(window_size)
-
- # 设置窗口标题
- pygame.display.set_caption("切水果游戏")
-
- # 加载背景音乐和切水果音效
- # pygame.mixer.music.load("background_music.mp3")
- slice_sound = pygame.mixer.Sound("music.mp3")
-
-
- fruit_images = {
- "apple": pygame.transform.scale(pygame.image.load("apple.png"), (100, 100)),
- "banana": pygame.transform.scale(pygame.image.load("banana.png"), (100, 100)),
- "orange": pygame.transform.scale(pygame.image.load("orange.png"), (100, 100)),
- "watermelon": pygame.transform.scale(pygame.image.load("watermelon.png"), (100, 100)),
- "strawberry": pygame.transform.scale(pygame.image.load("strawberry.png"), (100, 100))
- }
-
- # 定义水果颜色
- fruit_colors = {
- "apple": (255, 0, 0), # 红色
- "banana": (255, 255, 0), # 黄色
- "orange": (255, 165, 0), # 橙色
- "watermelon": (0, 255, 0), # 绿色
- "strawberry": (255, 0, 255) # 紫色
- }
-
- # 定义粒子颜色
- particle_colors = {
- "apple": (255, 0, 0), # 红色
- "banana": (255, 255, 0), # 黄色
- "orange": (255, 165, 0), # 橙色
- "watermelon": (0, 255, 0), # 绿色
- "strawberry": (255, 0, 255) # 紫色
- }
-
- # 定义水果初始位置和速度
- fruit_initial_x = []
- fruit_initial_y = []
- fruit_speed = []
- for i in range(5):
- fruit_initial_x.append(random.randint(50, window_width - 50))
- fruit_initial_y.append(-100)
- fruit_speed.append(random.randint(1, 5))
-
- # 定义切水果得分
- score = 0
-
- # 定义粒子系统
- particles = []
-
- class Particle:
- def __init__(self, x, y, color):
- self.x = x
- self.y = y
- self.color = color
- self.radius = 5
- self.speed_x = random.randint(-5, 5)
- self.speed_y = random.randint(-15, -5)
- self.alpha = 255
-
- def update(self):
- self.x += self.speed_x
- self.y += self.speed_y
- self.alpha -= 10
-
- def draw(self):
- color = tuple(max(0, min(c, 255)) for c in self.color)
- alpha = max(0, min(self.alpha, 255))
- pygame.draw.circle(window, color + (alpha,), (int(self.x), int(self.y)), self.radius)
-
- # 游戏主循环
- running = True
- clock = pygame.time.Clock()
- # pygame.mixer.music.play(-1)
-
- while running:
- # 填充窗口背景色
- window.fill((0, 0, 0))
-
- # 处理事件
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- elif event.type == pygame.MOUSEBUTTONDOWN:
- # 获取鼠标位置
- mouse_x, mouse_y = pygame.mouse.get_pos()
- # 判断鼠标是否划过水果
- for i in range(5):
- if fruit_initial_x[i] <= mouse_x <= fruit_initial_x[i] + 100 and fruit_initial_y[i] <= mouse_y <= fruit_initial_y[i] + 100:
- # 播放切水果音效
- slice_sound.play()
- # 增加得分
- score += 1
- # 生成粒子效果
- for _ in range(20):
- particles.append(Particle(fruit_initial_x[i] + 50, fruit_initial_y[i] + 50, particle_colors[list(fruit_images.keys())[i]]))
- # 重新生成水果位置和速度
- fruit_initial_x[i] = random.randint(50, window_width - 50)
- fruit_initial_y[i] = -100
- fruit_speed[i] = random.randint(1, 5)
-
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- elif event.type == pygame.MOUSEBUTTONDOWN:
- # 获取鼠标位置
- mouse_x, mouse_y = pygame.mouse.get_pos()
- # 判断鼠标是否在窗口范围内
- if 0 <= mouse_x <= window_width and 0 <= mouse_y <= window_height:
- # 判断鼠标是否划过水果
- for i in range(5):
- if fruit_initial_x[i] <= mouse_x <= fruit_initial_x[i] + 100 and fruit_initial_y[i] <= mouse_y <= fruit_initial_y[i] + 100:
- # 播放切水果音效
- slice_sound.play()
- # 增加得分
- score += 1
- # 生成粒子效果
- for _ in range(20):
- particles.append(Particle(fruit_initial_x[i] + 50, fruit_initial_y[i] + 50, particle_colors[list(fruit_images.keys())[i]]))
- # 重新生成水果位置和速度
- fruit_initial_x[i] = random.randint(50, window_width - 50)
- fruit_initial_y[i] = -100
- fruit_speed[i] = random.randint(1, 5)
-
-
- # 获取鼠标位置
- mouse_x, mouse_y = pygame.mouse.get_pos()
-
- # 绘制水果
- for i in range(5):
- fruit_initial_y[i] += fruit_speed[i]
- window.blit(fruit_images[list(fruit_images.keys())[i]], (fruit_initial_x[i], fruit_initial_y[i]))
-
- # 判断鼠标是否划过水果
- if fruit_initial_x[i] <= mouse_x <= fruit_initial_x[i] + 100 and fruit_initial_y[i] <= mouse_y <= fruit_initial_y[i] + 100:
- # 播放切水果音效
- slice_sound.play()
- # 增加得分
- score += 1
- # 生成粒子效果
- for _ in range(20):
- particles.append(Particle(fruit_initial_x[i] + 50, fruit_initial_y[i] + 50, particle_colors[list(fruit_images.keys())[i]]))
- # 重新生成水果位置和速度
- fruit_initial_x[i] = random.randint(50, window_width - 50)
- fruit_initial_y[i] = -100
- fruit_speed[i] = random.randint(1, 5)
-
- # 更新和绘制粒子效果
- for particle in particles:
- particle.update()
- particle.draw()
- if particle.alpha <= 0:
- particles.remove(particle)
- # pass
-
- # 绘制得分
- font = pygame.font.Font(None, 36)
- text = font.render("Score: " + str(score), True, (255, 255, 255))
- window.blit(text, (10, 10))
-
- # 更新窗口
- pygame.display.flip()
-
- # 控制帧率
- clock.tick(60)
-
- # 退出游戏
- pygame.quit()
工程目录:

效果:

遗留问题:
1,碰到就切碎了,不少,要点击+碰到好些
2,没背景音乐
3,没搞个地雷出来,切中就减分或结束的那种
4,没排名,应该搞个排名出来
5,速度应该要递增,错过要减分的那种