当前位置: 首页 > news >正文

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库来创建一个简单的动画,展示一个人的脸部,其中眼睛会定时眨眼。下面是代码的解析:

  1. 初始化pygame和设置窗口
    import pygame
    import time
    pygame.init()
    screen_width = 800
    screen_height = 600
    screen = pygame.display.set_mode((screen_width, screen_height))
    
    这部分代码导入必要的库,初始化pygame,并设置了一个宽800像素、高600像素的窗口。
  2. 颜色和参数设置
    WHITE = (255, 255, 255)
    BLACK = (0, 0, 0)
    # 人脸、眼睛和嘴巴的尺寸和位置参数
    
    这里定义了两种颜色(白色和黑色)以及人脸、眼睛和嘴巴的尺寸和位置参数。
  3. 动画参数设置
    blink_duration = 0.5  # 眨眼动画持续时间(秒)
    blink_interval = 3    # 眨眼间隔时间(秒)
    mouth_open_duration = 0.5  # 嘴巴张开动画持续时间(秒)
    mouth_interval = 2    # 嘴巴动画间隔时间(秒)
    
    这些参数控制眨眼和嘴巴动画的持续时间和间隔。
  4. 主循环
    running = True
    blink_time = 0
    mouth_time = 0
    blink = False
    mouth_open = False
    while running:# ...动画绘制和事件处理...
    
    主循环负责绘制动画和处理事件。running变量控制循环是否继续,blinkmouth_open变量控制眼睛和嘴巴的状态。
  5. 绘制人脸、眼睛和嘴巴
    screen.fill(WHITE)  # 清屏为白色
    pygame.draw.ellipse(screen, BLACK, (face_x, face_y, face_width, face_height))  # 绘制人脸
    # 根据blink变量绘制眨眼或正常眼睛
    # 根据mouth_open变量绘制张开或闭合的嘴巴
    
    这部分代码根据当前的状态绘制人脸、眼睛和嘴巴。
  6. 动画更新
    current_time = time.time()
    # 根据时间间隔更新眨眼和嘴巴状态
    
    每次循环时,代码会检查是否到了眨眼或嘴巴状态改变的时间,并相应地更新状态。
  7. 事件处理和屏幕更新
    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帧每秒的速度运行。
  8. 退出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 机器学习、深度学习能做什么&#xff1f; 1.2 什么是机器学习&#xff1f;1.2.1 定义1.2.2 数据集的构成 1.3 机器学习算法1.4 机器学习开发流程 2.特征工程2.1 数…...

【深度学习】python之人工智能应用篇——图像生成技术(一)

说明&#xff1a; 两篇文章根据应用场景代码示例区分&#xff0c;其他内容相同。 图像生成技术&#xff08;一&#xff09;&#xff1a;包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术&#xff08;二&#xff09;&#xff1a…...

java 非srping 使用r2dbc操作mysql 增删改查代码

要在Java中使用R2DBC操作MySQL&#xff0c;首先需要添加相关依赖。在Maven项目中&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>dev.miku</groupId><artifactId>r2dbc-mysql</artifactId><version>0.8.…...

假冒国企现形记:股权变更视角下的甄别分析

启信慧眼-启信宝企业版 假冒国企公告2024-06-07&#xff0c;中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示&#xff0c;”有不法分子通过伪造相关材料等方式&#xff0c;以我集团子公司名义开展业务&#xff0c;进行虚假宣传。经核实&#xff0c;上述公司假…...

Django 使用Apscheduler执行定时任务

Apscheduler 介绍 核心组件&#xff1a; 调度器、作业存储、执行器、触发器 调度器 BlockingScheduler 阻塞的调度器&#xff0c;适用于脚本 BackgroundScheduler 后台调度器&#xff0c;适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…...

Shopee API接口:获取搜索栏生成的商品结果列表

一、引言 此接口可以高效获取搜索栏生成的商品结果列表。本文将详细介绍这一核心功能&#xff0c;并探讨其在实际应用中的价值。 二、核心功能介绍——获取搜索栏生成的商品结果列表 请求API及返回示例 http://api.xxxx.com/sp/ll/search/item?keywordiphone&page1&am…...

选择门店收银系统要考虑哪些方面?美业系统Java源码分享私

开店前的一个重要事件就是选择门店收银软件/系统&#xff0c;尤其是针对美容、医美等美业门店&#xff0c;一个优秀专业的系统十分重要&#xff0c;它必须贴合门店的经营需求&#xff0c;提供更全面、便捷、高效的管理功能&#xff0c;帮助提升门店的服务质量和经营效益。 以下…...

智慧养老的养老方式及其技术实现与趋势

智慧养老是一种借助现代信息技术手段&#xff0c;为老年人提供更高效、便捷、个性化服务的养老模式。以下是一些常见的智慧养老方式&#xff1a; 1. 远程健康监测系统 通过智能穿戴设备&#xff0c;如手环、手表等&#xff0c;实时收集老年人的生理数据&#xff0c;如心率、血…...

思维导图之计算机网络整体框架

高清自行访问&#xff1a;计算机网络整体框架 (yuque.com)...

P7771 【模板】欧拉路径

网址如下&#xff1a; P7771 【模板】欧拉路径 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 忘掉了输出欧拉回路的方法&#xff0c;搞了我好久 关于欧拉回路的知识可以看我之前的博客&#xff1a; 一点关于欧拉回路的总结-CSDN博客 代码如下&#xff1a; #include<q…...

卷积神经网络(CNN)理解

1、引言&#xff08;卷积概念&#xff09; 在介绍CNN中卷积概念之前&#xff0c;先介绍一个数字图像中“边缘检测edge detection”案例&#xff0c;以加深对卷积的认识。图中为大小8X8的灰度图片&#xff0c;图片中数值表示该像素的灰度值。像素值越大&#xff0c;颜色越亮&…...

Databend 开源周报第 149 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持递归公共表…...

Hue Hadoop 图形化用户界面 BYD

软件简介 Hue 是运营和开发 Hadoop 应用的图形化用户界面。Hue 程序被整合到一个类似桌面的环境&#xff0c;以 web 程序的形式发布&#xff0c;对于单独的用户来说不需要额外的安装。...

【经验分享】RT600 serial boot mode测试

【经验分享】RT600 serial boot mode测试 一&#xff0c; 文档描述二&#xff0c; Serial boot mode测试2.1 evkmimxrt685_gpio_led_output 工程测试2.2 evkmimxrt685_dsp_hello_world_usart_cm33工程测试 一&#xff0c; 文档描述 RT600的启动模式共支持4种&#xff1a; 1&am…...

七种不同类型测宽仪技术参数 看看哪种能用于您的产线?

在线测宽仪种类众多&#xff0c;原理不同&#xff0c;产品不同&#xff0c;型号不同&#xff0c;其技术参数也各不相同。不同的测量范围与测量精度&#xff0c;适用于不同规格的板材&#xff0c;看看您的板材能适用于哪种范围。 1、单测头平行光测宽仪 点光源发射的光经过发射…...

【GO】rotatelogs库和sirupsen/logrus库实现日志功能的实践用例

“github.com/sirupsen/logrus” 是一个 Go 语言的日志库&#xff0c;它提供了一种简单、灵活的方式来记录日志。该库的主要特点包括&#xff1a; 支持多种日志输出目标&#xff0c;如控制台、文件等。 支持日志轮转&#xff0c;可以按照时间或文件大小进行轮转。 支持日志格式…...

Arc2Face - 一张图生成逼真的多风格人脸,本地一键整合包下载

Arc2Face是用于人脸的基础模型训练&#xff0c;可批量生成超高质量主题的AI人脸艺术风格照&#xff0c;完美复制人脸。只需一张照片&#xff0c;几秒钟&#xff0c;即可批量生成超高质量主题的AI人脸艺术风格照&#xff0c;完美复制人脸。 Arc2Face 是一个创新的开源项目&…...

swiper 幻灯片

index.html <!DOCTYPE html> <html lang"en"> <head> <meta charset"utf-8"> <title>swiper全屏响应式幻灯片代码</title> <meta name"viewport" content"widthdevice-width, initial-scale1, min…...

Ubuntu 使用Vscode的一些技巧 ROS

Ubuntu VSCode的一些设置&#xff08;ROS&#xff09; 导入工作空间 推荐只导入工作空间下的src目录 如果将整个工作空间导入VSCode&#xff0c;那么这个src就变成了次级目录&#xff0c;容易在写程序的时候把本应该添加到具体工程src目录里的代码文件给误添加到这个catkin_w…...

JS中的三种事件模型

JavaScript 中的事件模型主要有三种&#xff1a; 传统事件模型&#xff08;DOM Level 0&#xff09;标准事件模型&#xff08;DOM Level 2&#xff09;IE 事件模型&#xff08;非标准&#xff0c;仅限于旧版本的 Internet Explorer&#xff09; 下面分别介绍这三种事件模型&…...

南京邮电大学计算机网络实验二(网络路由器配置RIP协议)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验步骤四、实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;五、报告资源 一、 实验目的和要求 掌握思科路由器的运行过程&#xff0c;掌握思科路由器的硬件连线与接口&#xff0c;掌…...