切水果游戏开发1

news2024/11/19 2:32:43

多数无益,上代码:

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,速度应该要递增,错过要减分的那种

工程地址:game: 游戏仓库 - Gitee.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1112639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—260.只出现一次的数字III【中等】

2023每日刷题&#xff08;三&#xff09; Leetcode—260.只出现一次的数字III 借助lowbit的解题思想 参考的灵茶山艾府大神的题解 实现代码 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* singleNumber(int* nums, int numsSize, in…

python安装gdal

下载whl https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 安装 pip install GDAL-3.1.4-cp36-cp36m-win_amd64.whl

uniapp 小程序优惠劵样式

先看效果图 上代码 <view class"coupon"><view class"tickets" v-for"(item,index) in 10" :key"item"><view class"l-tickets"><view class"name">10元优惠劵</view><view cl…

SLAM中相机姿态估计算法推导基础数学总结

相机模型 基本模型 内参 外参 对极几何 对极约束 外积符号 基础矩阵F和本质矩阵E 相机姿态估计问题分为如下两步: 本质矩阵 E t ∧ R Et^{\wedge}R Et∧R因为 t ∧ t^{\wedge} t∧其实就是个3x3的反对称矩阵&#xff0c;所以 E E E也是一个3x3的矩阵 用八点法估计E…

C语言求 n 阶勒让德多项式的值

完整代码&#xff1a; // 用递归法求 n 阶勒让德多项式的值 // 递归公式为&#xff1a; // n0,P(n)(x)1 // n1,P(n)(x)x // n>1,P(n)(x)((2*n-1)*x - P(n-1)(x) - (n-1)*P(n-2)(x)) / n #include<stdio.h>double func(int n,int x){if (n0){return 1;}if (n1){return…

爬虫基础 JS逆向

爬虫核心 1. HTTP协议与WEB开发 1. 什么是请求头请求体&#xff0c;响应头响应体 2. URL地址包括什么 3. get请求和post请求到底是什么 4. Content-Type是什么 &#xff08;1&#xff09;简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;…

行列转换:MySQL中的数据变形魔法

行转列 使用CASE函数聚合函数 SELECTMAX(CASE WHEN salesperson John THEN sales_amount END) AS John_Sales,MAX(CASE WHEN salesperson Alice THEN sales_amount END) AS Alice_Sales FROM sales_data;列转行 使用UNIO连接每列数据 SELECT product_id,store1 store,sto…

什么是SSL证书

SSL 证书&#xff08;也称为公钥证书&#xff09;是安装在 Web 服务器上的加密文件&#xff0c;可帮助建立安全、加密的在线通信&#xff0c;SSL 证书有两个主要用途&#xff1a; 提供加密&#xff1a;当访问者的浏览器通过SSL连接到您的网站时&#xff0c;信息交换是加密的&a…

Openssl数据安全传输平台003:Protobuf - 部署

文章目录 一、Windows环境二、Linux Centos环境三、protobuf测试3.1 新建.proto文件生成相应的类3.2 .proto生成相应的类的使用3.3 配置VS3.4 test代码 一、Windows环境 在windows下配置&#xff0c;无论protobuf是什么版本&#xff0c;IDE和编译器的版本都要保持一致。 比如…

Day4力扣打卡

打卡记录 同积元组&#xff08;哈希表 排列组合&#xff09; 链接 思路&#xff1a;用哈希表将数组中出现的两不同数乘积依次记录&#xff0c;将出现两次以上的乘积组通过排列组合计算总情况个数。 class Solution { public:int tupleSameProduct(vector<int>& num…

Redis设计与实现笔记 - 数据结构篇

Redis设计与实现笔记 - 数据结构篇 相信在我们日常使用中&#xff0c;会经常跟 Redis 打交道。数据结构 String、Hash、List、Set 和 ZSet 都是常用的数据类型。对于使用场景&#xff0c;我们可以滔滔不绝地说很多&#xff0c;但是我们从来就没有关心过它们的底层实现&#xf…

智慧矿山:煤流量检测AI算法——等级还是百分比显示,哪种更适合现场

智慧矿山作为矿山工业的重要发展方向&#xff0c;AI算法的应用正逐渐改变传统的矿山生产方式。在智慧矿山中&#xff0c;煤流量检测是其中一项重要的任务。然而&#xff0c;在煤流量检测中&#xff0c;是采用等级显示还是百分比显示更适合现场呢&#xff1f; 煤流量检测作为煤矿…

【试题022】C语言算数表达式例题

1.题目&#xff1a;设int a12&#xff0c;b10;&#xff0c;则表达式a%b/a*b的值为&#xff1f; 2.代码分析&#xff1a; #include <stdio.h> int main() {//设int a12&#xff0c;b10;&#xff0c;则表达式a%b/a*b的值为&#xff1f;int a 12,b 10;printf("%d\n…

Python 面向对象进阶

目录 1 面向对象三大特征介绍2 继承2.1 语法格式2.2 类成员的继承和重写2.3 查看类的继承层次结构 3 object根类3.1 dir()查看对象属性3.2 重写__str__()方法 4 多重继承5 MRO()6 super()获得父类定义7 多态8 特殊方法和运算符重载9 特殊属性10 对象的浅拷贝和深拷贝11 组合12 …

CSP赛前复习总结

文章目录 时空复杂度分析算法回顾基础算法贪心删数问题题目描述输入格式输出格式样例输入样例输出 贪心问题的具体应用双指针二分例题 分治 数据结构做题经历&#xff08;低级错误&#xff09;先从周考题说起FirstSecond 还有一两天就CSP了&#xff0c;特此为近期的复习进行总结…

运机集团-001288 基本面分析(20231019)

运机集团-001288 基本面分析 基本情况 公司名称&#xff1a;四川省自贡运输机械集团股份有限公司 A股简称&#xff1a;运机集团 成立日期&#xff1a;2003-09-28 上市日期&#xff1a;2021-11-01 所属行业&#xff1a;通用设备制造业 主营业务&#xff1a;以带式输送机为主的节…

计算机操作系统-第十一天

目录 1、进程的状态 创建态与就绪态 运行态 终止态 新建态 结束态 进程状态的转换 进程的组织方式 链接方式&#xff08;常见&#xff09; 索引方式&#xff08;少见&#xff09; 本节思维导图 1、进程的状态 创建态与就绪态 1、进程正在被创建时&#xff0c;处于…

03、爬取资料---但是失败,仅作为记录

1、找网址 进入直播间&#xff0c;里面的用户被设置不对外查看。 如图&#xff0c;找url 2、伪装 user-agent 用户代理 cookie 用户登录后保留的信息 登录信息&#xff1a;找cookie 浏览器信息&#xff1a;找user-agent user-agent 用户代理 cookie 用户登录后保留的信…

kubernetes集群编排

目录 k8s 集群部署 集群环境初始化 所有节点安装kubeadm 拉取集群所需镜像 集群初始化 安装flannel网络插件 设置kubectl命令补齐 k8s 集群部署 实验环境 主机名 ip 角色 k8s1&#xff08;上一章的docker1&#xff09; 192.168.81.10 reg.westos.org&#xff0c;harbor仓库…

机器学习中参数优化调试方法

1 超参数优化 调参即超参数优化&#xff0c;是指从超参数空间中选择一组合适的超参数&#xff0c;以权衡好模型的偏差(bias)和方差(variance)&#xff0c;从而提高模型效果及性能。常用的调参方法有&#xff1a; 人工手动调参 网格/随机搜索(Grid / Random Search) 贝叶斯优…