pygame 绘制一个大黑脸
# 编写一个Python程序,实现一个眨眼的动画效果。该动画效果应该在屏幕上显示一个人脸,并在一定的时间间隔内使眼睛闭合和睁开。
import pygame
import timepygame.init()
# 设置窗口大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
# 设置人脸参数
face_width = 200
face_height = 200
face_x = screen_width // 2 - face_width // 2
face_y = screen_height // 2 - face_height // 2
# 设置眼睛参数
eye_width = 20
eye_height = 10
eye_offset = 30
# 设置嘴巴参数
mouth_width = 60
mouth_height = 20
mouth_offset = 70
# 设置动画参数
blink_duration = 0.5 # 眨眼动画持续时间(秒)
blink_interval = 3 # 眨眼间隔时间(秒)
mouth_open_duration = 0.5 # 嘴巴张开动画持续时间(秒)
mouth_interval = 2 # 嘴巴动画间隔时间(秒)
# 初始化时钟
clock = pygame.time.Clock()
running = True
blink_time = 0
mouth_time = 0
blink = False
mouth_open = False
while running:screen.fill(WHITE)# 绘制人脸pygame.draw.ellipse(screen, BLACK, (face_x, face_y, face_width, face_height))# 绘制眼睛if blink:# 眨眼pygame.draw.ellipse(screen, WHITE, (face_x + eye_offset, face_y + eye_offset, eye_width, eye_height))pygame.draw.ellipse(screen, WHITE,(face_x + face_width - eye_offset - eye_width, face_y + eye_offset, eye_width, eye_height))else:# 正常眼睛pygame.draw.ellipse(screen, BLACK, (face_x + eye_offset, face_y + eye_offset, eye_width, eye_height))pygame.draw.ellipse(screen, BLACK,(face_x + face_width - eye_offset - eye_width, face_y + eye_offset, eye_width, eye_height))# 绘制嘴巴if mouth_open:# 张开嘴巴pygame.draw.ellipse(screen, WHITE,(face_x + mouth_offset, face_y + mouth_offset * 2, mouth_width, mouth_height))else:# 闭嘴pygame.draw.ellipse(screen, BLACK,(face_x + mouth_offset, face_y + mouth_offset * 2, mouth_width, mouth_height))for event in pygame.event.get():if event.type == pygame.QUIT:running = False# 更新眨眼动画current_time = time.time()if current_time - blink_time > blink_interval:blink = not blinkblink_time = current_timeif blink and current_time - blink_time > blink_duration:blink = False# 更新嘴巴动画if current_time - mouth_time > mouth_interval:mouth_open = Truemouth_time = current_timeif mouth_open and current_time - mouth_time > mouth_open_duration:mouth_open = Falsepygame.display.flip()clock.tick(60)
pygame.quit()
这段代码使用Python的pygame库来创建一个简单的动画,展示一个人的脸部,其中眼睛会定时眨眼。下面是代码的解析:
- 初始化pygame和设置窗口:
这部分代码导入必要的库,初始化pygame,并设置了一个宽800像素、高600像素的窗口。import pygame import time pygame.init() screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) - 颜色和参数设置:
这里定义了两种颜色(白色和黑色)以及人脸、眼睛和嘴巴的尺寸和位置参数。WHITE = (255, 255, 255) BLACK = (0, 0, 0) # 人脸、眼睛和嘴巴的尺寸和位置参数 - 动画参数设置:
这些参数控制眨眼和嘴巴动画的持续时间和间隔。blink_duration = 0.5 # 眨眼动画持续时间(秒) blink_interval = 3 # 眨眼间隔时间(秒) mouth_open_duration = 0.5 # 嘴巴张开动画持续时间(秒) mouth_interval = 2 # 嘴巴动画间隔时间(秒) - 主循环:
主循环负责绘制动画和处理事件。running = True blink_time = 0 mouth_time = 0 blink = False mouth_open = False while running:# ...动画绘制和事件处理...running变量控制循环是否继续,blink和mouth_open变量控制眼睛和嘴巴的状态。 - 绘制人脸、眼睛和嘴巴:
这部分代码根据当前的状态绘制人脸、眼睛和嘴巴。screen.fill(WHITE) # 清屏为白色 pygame.draw.ellipse(screen, BLACK, (face_x, face_y, face_width, face_height)) # 绘制人脸 # 根据blink变量绘制眨眼或正常眼睛 # 根据mouth_open变量绘制张开或闭合的嘴巴 - 动画更新:
每次循环时,代码会检查是否到了眨眼或嘴巴状态改变的时间,并相应地更新状态。current_time = time.time() # 根据时间间隔更新眨眼和嘴巴状态 - 事件处理和屏幕更新:
这部分代码处理退出事件,并更新屏幕。for event in pygame.event.get():if event.type == pygame.QUIT:running = False pygame.display.flip() clock.tick(60)pygame.display.flip()会更新整个屏幕的显示内容,而clock.tick(60)会确保游戏以最大60帧每秒的速度运行。 - 退出pygame:
当主循环结束后,调用pygame.quit()pygame.quit()来关闭pygame窗口并退出程序。
整体来说,这段代码创建了一个简单的图形界面,其中包含一个会眨眼的人脸。通过pygame的事件循环和图形绘制功能,它能够展示动态的眨眼效果。
相关文章:
pygame 绘制一个大黑脸
# 编写一个Python程序,实现一个眨眼的动画效果。该动画效果应该在屏幕上显示一个人脸,并在一定的时间间隔内使眼睛闭合和睁开。 import pygame import timepygame.init() # 设置窗口大小 screen_width 800 screen_height 600 screen pygame.display.s…...
XMLXXE实体注入
XML&XXE实体注入 原理 XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。等同于JSO…...
艺术家电gorenje x 设计上海丨用设计诠释“生活的艺术”
2024年6月19日—22日,艺术家电gorenje亮相“设计上海”2024,以“gorenje是家电更是艺术品”为题,为人们带来融入日常的艺术之美。设计上海2024不但汇集了国内外卓越设计品牌和杰出独立设计师的家具设计作品,还联合国内外多名设计师…...
【刷题篇】链表
文章目录 1、两数相加2、两两交换链表中的节点3、 重排链表4、 合并 K 个升序链表5、 K 个一组翻转链表 1、两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数…...
若依框架,小程序访问后端,后端访问客户端,客户端读取图片返回
服务端代码: import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; …...
os7安装gitlab
gitlab安装要求:os7以上版本,4G内存,磁盘50GB 1.克隆 由于我这里不想影响原来的,所以这里克隆一个os系统。如果其他是第一次安装则不用。 2.修改ip地址 cd /etc/sysconfig/network-scriptsvi ifcfg-ens33 按:insert…...
木头姐:将出于经济方面的考虑支持特朗普
美国投资公司Ark Invest的首席执行官凯西•伍德表示,她计划在今年的总统选举中投票给共和党候选人、美国前总统唐纳德•特朗普。 “就像我对我的孩子们说的……就像我对他们说的,‘听着,我要把票投给能为我们的经济做得最好的人。’伍德周末…...
sql注入登陆绕过
此列表包含通过XPath、LDAP和SQL注入绕过登录的有效负载(按此顺序)。 使用此列表的方法是将前200行作为用户名和密码。然后,先将完整的列表放入用户名中,然后放入密码输入,同时放入一些密码(如Pass1234)或一些已知的用户名(如admin)。 admin password 1234 123456 root to…...
QT利用QGraphicsDropShadowEffect效果及自定义按钮来实现一个炫酷键盘
1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<...
机器学习(一)
机器学习 1.机器学习概述1.1 人工智能概述1.1.1 机器学习与人工智能、深度学习的关系1.1.2 人工智能的起点1.1.3 机器学习、深度学习能做什么? 1.2 什么是机器学习?1.2.1 定义1.2.2 数据集的构成 1.3 机器学习算法1.4 机器学习开发流程 2.特征工程2.1 数…...
【深度学习】python之人工智能应用篇——图像生成技术(一)
说明: 两篇文章根据应用场景代码示例区分,其他内容相同。 图像生成技术(一):包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术(二):…...
java 非srping 使用r2dbc操作mysql 增删改查代码
要在Java中使用R2DBC操作MySQL,首先需要添加相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: <dependency><groupId>dev.miku</groupId><artifactId>r2dbc-mysql</artifactId><version>0.8.…...
假冒国企现形记:股权变更视角下的甄别分析
启信慧眼-启信宝企业版 假冒国企公告2024-06-07,中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示,”有不法分子通过伪造相关材料等方式,以我集团子公司名义开展业务,进行虚假宣传。经核实,上述公司假…...
Django 使用Apscheduler执行定时任务
Apscheduler 介绍 核心组件: 调度器、作业存储、执行器、触发器 调度器 BlockingScheduler 阻塞的调度器,适用于脚本 BackgroundScheduler 后台调度器,适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…...
Shopee API接口:获取搜索栏生成的商品结果列表
一、引言 此接口可以高效获取搜索栏生成的商品结果列表。本文将详细介绍这一核心功能,并探讨其在实际应用中的价值。 二、核心功能介绍——获取搜索栏生成的商品结果列表 请求API及返回示例 http://api.xxxx.com/sp/ll/search/item?keywordiphone&page1&am…...
选择门店收银系统要考虑哪些方面?美业系统Java源码分享私
开店前的一个重要事件就是选择门店收银软件/系统,尤其是针对美容、医美等美业门店,一个优秀专业的系统十分重要,它必须贴合门店的经营需求,提供更全面、便捷、高效的管理功能,帮助提升门店的服务质量和经营效益。 以下…...
智慧养老的养老方式及其技术实现与趋势
智慧养老是一种借助现代信息技术手段,为老年人提供更高效、便捷、个性化服务的养老模式。以下是一些常见的智慧养老方式: 1. 远程健康监测系统 通过智能穿戴设备,如手环、手表等,实时收集老年人的生理数据,如心率、血…...
思维导图之计算机网络整体框架
高清自行访问:计算机网络整体框架 (yuque.com)...
P7771 【模板】欧拉路径
网址如下: P7771 【模板】欧拉路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 忘掉了输出欧拉回路的方法,搞了我好久 关于欧拉回路的知识可以看我之前的博客: 一点关于欧拉回路的总结-CSDN博客 代码如下: #include<q…...
卷积神经网络(CNN)理解
1、引言(卷积概念) 在介绍CNN中卷积概念之前,先介绍一个数字图像中“边缘检测edge detection”案例,以加深对卷积的认识。图中为大小8X8的灰度图片,图片中数值表示该像素的灰度值。像素值越大,颜色越亮&…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
