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

使用Python绘制节日祝福——以端午节和儿童节为例

端午节

 端午节总算是回家了,感觉时间过得真快,马上就毕业了,用Python弄了一个端午节元素的界面,虽然有点不像,祝大家端午安康。端午节粽子(python)_python画粽子-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/131338766?spm=1001.2014.3001.5502

import tkinter as tk
from tkinter import messagebox, Canvas
import random
import math# 端午节祝福语库
blessings = ["粽叶飘香五月五,浓情端午送祝福\n愿你生活如粽甜,幸福美满永安康!","艾叶香,麦浪黄,人间美景是端阳\n愿您事业龙舟竞渡,生活粽享幸福!","五色丝线系吉祥,一枚香囊保安康\n祝您端午时节诸事顺,美好生活万年长!","龙舟破浪勇向前,糯米粘粘情相连\n愿您前程似锦赛龙舟,好运连连粽相伴!","青青粽叶盈,赤赤枣香浓\n愿您端午安康,幸福永长!","彩线轻缠红玉臂,小符斜挂绿云鬟\n祝您端午吉祥,万事如意!"
]
# 全局常量
SCREEN_WIDTH = 1000
SCREEN_HEIGHT = 700
paddle_angle = 0class DragonBoat:def __init__(self, canvas):self.canvas = canvasself.SCREEN_WIDTH = SCREEN_WIDTHself.SCREEN_HEIGHT = SCREEN_HEIGHTself.x = -200self.y = SCREEN_HEIGHT * 0.7self.speed = max(1.0, SCREEN_WIDTH / 400)self.parts = []# 新增划手动画所需变量self.paddles = []  # 存储桨线段对象self.paddle_blades = []  # ✅ 添加这一行:存储桨叶对象self.paddle_angles = []  # 每个桨的角度self.paddle_angle_speeds = []  # 每个桨的摆动速度# 新增龙须变量self.beards = []  # 存储龙须线段对象self.beard_angles = []  # 每根龙须的角度偏移self.beard_oscillation_speed = 0.03  # 降低摆动速度self.beard_oscillation_amplitude = 2  # 减小摆动幅度self.create_boat()def create_boat(self):# 船体boat_size = max(30.0, self.SCREEN_WIDTH / 20.0)  # 根据屏幕大小调整船体尺寸hull = self.canvas.create_polygon(self.x, self.y,self.x - boat_size * 3, self.y + boat_size,self.x - boat_size * 2, self.y + boat_size * 2,self.x + boat_size * 2, self.y + boat_size * 2,self.x + boat_size * 3, self.y + boat_size,self.x, self.y,fill="#CD5C5C", outline="black", width=2, smooth=True)self.parts.append(hull)# 龙头head = self.canvas.create_polygon(self.x + boat_size * 3, self.y + boat_size,self.x + boat_size * 4, self.y + boat_size * 0.5,self.x + boat_size * 4.5, self.y + boat_size * 0.75,self.x + boat_size * 4.25, self.y + boat_size * 1.25,self.x + boat_size * 4, self.y + boat_size * 1.75,self.x + boat_size * 3.5, self.y + boat_size * 1.75,self.x + boat_size * 3, self.y + boat_size,fill="#8B0000", outline="black", width=2, smooth=True)self.parts.append(head)# 龙眼eye_size = max(2.0, boat_size / 10)eye = self.canvas.create_oval(self.x + boat_size * 4.1, self.y + boat_size * 0.875,self.x + boat_size * 4.25, self.y + boat_size,fill="white", outline="black")self.parts.append(eye)pupil = self.canvas.create_oval(self.x + boat_size * 4.13, self.y + boat_size * 0.9,self.x + boat_size * 4.17, self.y + boat_size * 0.95,fill="black")self.parts.append(pupil)# 龙角horn1 = self.canvas.create_polygon(self.x + boat_size * 4.25, self.y + boat_size * 0.75,self.x + boat_size * 4.375, self.y + boat_size * 0.375,self.x + boat_size * 4.5, self.y + boat_size * 0.5,self.x + boat_size * 4.25, self.y + boat_size * 0.75,fill="#8B4513", outline="black")horn2 = self.canvas.create_polygon(self.x + boat_size * 4, self.y + boat_size * 0.5,self.x + boat_size * 4.125, self.y + boat_size * 0.25,self.x + boat_size * 4.25, self.y + boat_size * 0.375,self.x + boat_size * 4, self.y + boat_size * 0.5,fill="#8B4513", outline="black")self.parts.extend([horn1, horn2])# 龙须beard1 = self.canvas.create_line(self.x + boat_size * 3.9, self.y + boat_size * 1.1,self.x + boat_size * 3.95, self.y + boat_size * 1.05,  # 缩短距离self.x + boat_size * 4.0, self.y + boat_size * 0.95,fill="gold", width=2, smooth=False)beard2 = self.canvas.create_line(self.x + boat_size * 3.9, self.y + boat_size * 1.3,self.x + boat_size * 3.95, self.y + boat_size * 1.35,self.x + boat_size * 4.0, self.y + boat_size * 1.4,fill="gold", width=2, smooth=False)self.parts.extend([beard1, beard2])self.beards.extend([beard1, beard2])# 初始化龙须摆动角度for _ in range(len(self.beards)):self.beard_angles.append(random.uniform(0, math.pi * 2))# 划桨手num_rowers = max(3, int(SCREEN_HEIGHT / 200))  # 根据屏幕宽度调整划手数量for i in range(num_rowers):rower_x = self.x - boat_size * 2 + i * (boat_size * 1.5)# 身体位置 - 在船体内部body_y = self.y + boat_size * 0.8  # 降低身体位置# 身体body = self.canvas.create_oval(rower_x, body_y,rower_x + boat_size * 0.375, body_y + boat_size * 0.5,fill="#FFD700")# 头部head = self.canvas.create_oval(rower_x + boat_size * 0.075, body_y - boat_size * 0.4,rower_x + boat_size * 0.3, body_y,fill="#FFDEAD")# 桨 - 修复位置问题# 桨柄位置在划手身体中间paddle_x = rower_x + boat_size * 0.1875paddle_y = body_y + boat_size * 0.25# 桨长度paddle_length = boat_size * random.uniform(1.5, 2.5)angle_deg = 30 + math.sin(paddle_angle) * 10  # 动态角度# 桨的角度 - 稍微向下倾斜paddle_end_x = paddle_x + paddle_length * math.cos(math.radians(angle_deg))paddle_end_y = paddle_y + paddle_length * math.sin(math.radians(angle_deg))# 绘制船桨paddle = self.canvas.create_line(paddle_x, paddle_y,paddle_end_x, paddle_end_y,fill="#8B4513", width=3)# 绘制桨叶paddle_blade = self.canvas.create_polygon(paddle_end_x, paddle_end_y,paddle_end_x + boat_size * 0.2, paddle_end_y + boat_size * 0.1,paddle_end_x + boat_size * 0.2, paddle_end_y - boat_size * 0.1,paddle_end_x, paddle_end_y,fill="#8B4513", outline="black")self.parts.extend([body, head, paddle, paddle_blade])# 在创建桨后保存引用self.paddles.append(paddle)  # paddle 是 line 对象self.paddle_blades.append(paddle_blade)  # 这是关键!self.paddle_angles.append(random.uniform(0, math.pi * 2))  # 初始角度self.paddle_angle_speeds.append(random.uniform(0.05, 0.1))  # 摆动速度def move(self):for item in self.parts:self.canvas.move(item, self.speed, 0)self.x += self.speedif self.x > self.SCREEN_WIDTH + 200:self.reset_position()return# 更新每个桨的角度for i in range(len(self.paddles)):try:self.paddle_angles[i] += self.paddle_angle_speeds[i]# 获取桨起点coords = self.canvas.coords(self.paddles[i])if not coords:continuepaddle_x, paddle_y = coords[0], coords[1]# 计算新终点angle_deg = 30 + math.sin(self.paddle_angles[i]) * 15paddle_length = 60  # 固定长度或根据 boat_size 调整paddle_end_x = paddle_x + paddle_length * math.cos(math.radians(angle_deg))paddle_end_y = paddle_y + paddle_length * math.sin(math.radians(angle_deg))# 更新桨线段self.canvas.coords(self.paddles[i],paddle_x, paddle_y,paddle_end_x, paddle_end_y)# 更新桨叶(如果存在)if i < len(self.paddle_blades) and self.paddle_blades[i]:self.canvas.coords(self.paddle_blades[i],paddle_end_x, paddle_end_y,paddle_end_x + 10, paddle_end_y + 5,paddle_end_x + 10, paddle_end_y - 5,paddle_end_x, paddle_end_y)except IndexError:continue  # 忽略越界索引# ✅ 更新龙须的摆动动画global paddle_anglefor i in range(len(self.beards)):coords = self.canvas.coords(self.beards[i])if not coords or len(coords) < 6:  # 确保有3个点(6个坐标)continuex1, y1, mid_x, mid_y, x2, y2 = coords# ✅ 使用全局 paddle_angle 控制龙须摆动# 计算端点摆动end_offset = math.sin(paddle_angle + i * 0.5) * self.beard_oscillation_amplitudenew_x2 = x2 + end_offset * 0.5new_y2 = y2 + end_offset * 0.5# 对中间点增加小幅摆动mid_offset = math.sin(paddle_angle + i * 0.5) * self.beard_oscillation_amplitude * 0.3new_mid_x = mid_x + mid_offset * 0.2new_mid_y = mid_y + mid_offset * 0.2# 更新三个点坐标(形成折线)self.canvas.coords(self.beards[i],x1, y1,new_mid_x, new_mid_y,  # 中间点坐标new_x2, new_y2)def reset_position(self):for item in self.parts:self.canvas.delete(item)self.parts = []self.x = -200self.y = self.SCREEN_HEIGHT * 0.7self.speed = max(1.0, self.SCREEN_WIDTH / 400)self.create_boat()class FloatingZongzi:def __init__(self, canvas):self.canvas = canvasself.SCREEN_WIDTH = SCREEN_WIDTHself.SCREEN_HEIGHT = SCREEN_HEIGHT# 确保使用整数参数min_y = int(SCREEN_HEIGHT * 0.7)max_y = int(SCREEN_HEIGHT - 50)self.x = random.randint(50, SCREEN_WIDTH - 50)self.y = random.randint(min_y, max_y) if min_y < max_y else min_yself.size = random.randint(max(10, int(SCREEN_WIDTH / 80)),max(20, int(SCREEN_WIDTH / 40)))self.speed = random.uniform(0.3, 1.0)self.direction = random.choice([-1, 1])self.zongzi = self.create_zongzi()def create_zongzi(self):# 粽体body = self.canvas.create_polygon(self.x, self.y,self.x - self.size / 2, self.y + self.size,self.x + self.size / 2, self.y + self.size,self.x, self.y,fill="#3CB371", outline="black", width=1, smooth=True)# 粽叶纹理for i in range(3):y_offset = self.y + (i + 1) * self.size / 4line = self.canvas.create_line(self.x - self.size / 2 + 5, y_offset,self.x + self.size / 2 - 5, y_offset,fill="#2E8B57", width=1)# 绑绳rope_y = self.y + self.size * 0.7rope = self.canvas.create_line(self.x - self.size / 2, rope_y,self.x + self.size / 2, rope_y,fill="#8B4513", width=2)return [body, rope]def move(self):self.y -= self.speedself.x += self.speed * self.direction * 0.3for item in self.zongzi:self.canvas.move(item, self.speed * self.direction * 0.3, -self.speed)# 如果飘出屏幕,重置位置if self.y < -50:self.reset_position()def reset_position(self):for item in self.zongzi:self.canvas.delete(item)self.x = random.randint(50, self.SCREEN_WIDTH - 50)self.y = self.SCREEN_HEIGHT + 50self.zongzi = self.create_zongzi()def show_blessing():"""显示随机祝福"""blessing = random.choice(blessings)messagebox.showinfo("端午安康", blessing)def create_background(canvas):"""创建自适应背景"""# 清除现有背景canvas.delete("background")# 渐变天空for i in range(int(SCREEN_HEIGHT * 0.7)):y = iblue_value = max(100.0, 235 - i * 0.7)color = f"#87CE{int(blue_value):02X}"canvas.create_line(0, y, SCREEN_WIDTH, y, fill=color, width=1, tags="background")# 水面canvas.create_rectangle(0, SCREEN_HEIGHT * 0.7,SCREEN_WIDTH, SCREEN_HEIGHT,fill="#1E90FF", outline="", tags="background")# 远山num_mountains = max(3, int(SCREEN_WIDTH / 200))for i in range(num_mountains):x_start = i * (SCREEN_WIDTH / num_mountains) - 100height = random.randint(int(SCREEN_HEIGHT * 0.1), int(SCREEN_HEIGHT * 0.2))points = [x_start, SCREEN_HEIGHT * 0.7]segments = 5for j in range(segments):points.extend([x_start + j * (SCREEN_WIDTH / num_mountains / segments),SCREEN_HEIGHT * 0.7 - random.randint(20, height)])points.extend([x_start + SCREEN_WIDTH / num_mountains, SCREEN_HEIGHT * 0.7])canvas.create_polygon(points, fill="#228B22", outline="#006400", smooth=True, tags="background")# 水波纹wave_height = min(10.0, SCREEN_HEIGHT * 0.02)for i in range(int(SCREEN_HEIGHT * 0.3 / 10)):y = SCREEN_HEIGHT * 0.7 + i * 10for j in range(int(SCREEN_WIDTH / 40)):x_start = j * 40canvas.create_arc(x_start, y,x_start + 40, y + wave_height * 2,start=180, extent=-180,outline="#87CEEB", width=1, tags="background")def create_title(canvas):"""创建自适应标题"""canvas.delete("title")canvas.create_text(SCREEN_WIDTH / 2, SCREEN_HEIGHT * 0.15,text="端午节安康",font=("楷体", 36, "bold"),fill="#B22222",activefill="#FF4500",tags="title")# 装饰花纹for i in range(8):angle = i * math.pi / 4radius = min(150.0, SCREEN_WIDTH / 8)x = SCREEN_WIDTH / 2 + radius * math.cos(angle)y = SCREEN_HEIGHT * 0.15 + radius * math.sin(angle)canvas.create_line(SCREEN_WIDTH / 2, SCREEN_HEIGHT * 0.15, x, y, fill="gold", width=2, dash=(4, 4),tags="title")# 装饰粽子size = max(10.0, min(20.0, SCREEN_WIDTH / 60))zongzi = canvas.create_polygon(x, y,x - size / 2, y + size,x + size / 2, y + size,x, y,fill="#3CB371", outline="black", width=1, tags="title")# 装饰艾草if i % 2 == 0:canvas.create_line(x, y, x, y - size * 2, fill="#228B22", width=3, tags="title")canvas.create_line(x, y - size * 2, x - size, y - size * 3, fill="#228B22", width=2, tags="title")canvas.create_line(x, y - size * 2, x + size, y - size * 3, fill="#228B22", width=2, tags="title")def create_button(canvas):"""创建自适应按钮"""canvas.delete("button")button_width = 100button_height = 50button_x = SCREEN_WIDTH / 2 - button_width / 2button_y = SCREEN_HEIGHT * 0.85button_bg = canvas.create_rectangle(button_x, button_y,button_x + button_width, button_y + button_height,fill="#FFD700", outline="#8B0000", width=2, tags="button")button_text = canvas.create_text(SCREEN_WIDTH / 2, button_y + button_height / 2,text="端午祝福",font=("微软雅黑", 18, "bold"),fill="#8B0000",tags="button")# 绑定事件canvas.tag_bind(button_bg, "<Button-1>", lambda e: show_blessing())canvas.tag_bind(button_text, "<Button-1>", lambda e: show_blessing())# 添加悬停效果def on_enter(e):canvas.itemconfig(button_bg, fill="#FFA500")def on_leave(e):canvas.itemconfig(button_bg, fill="#FFD700")canvas.tag_bind(button_bg, "<Enter>", on_enter)canvas.tag_bind(button_bg, "<Leave>", on_leave)canvas.tag_bind(button_text, "<Enter>", on_enter)canvas.tag_bind(button_text, "<Leave>", on_leave)def center_window(root):"""将窗口置于屏幕中央"""root.update_idletasks()screen_width = root.winfo_screenwidth()screen_height = root.winfo_screenheight()x = (screen_width - SCREEN_WIDTH) // 2y = (screen_height - SCREEN_HEIGHT) // 4root.geometry(f"{SCREEN_WIDTH}x{SCREEN_HEIGHT}+{x}+{y}")def animate():"""动画循环"""global paddle_angledragon_boat.move()for zongzi in floating_zongzis:zongzi.move()paddle_angle += 0.1  # 控制摆动速度root.after(30, animate)# 创建主窗口
root = tk.Tk()
root.title("端午安康")
root.configure(bg="#F0F8FF")
root.resizable(False, False)# 创建画布
canvas = Canvas(root, width=SCREEN_WIDTH, height=SCREEN_HEIGHT, bg="white", highlightthickness=0)
canvas.pack()# 初始化元素
create_background(canvas)
create_title(canvas)
create_button(canvas)# 初始化动画元素
dragon_boat = DragonBoat(canvas)
floating_zongzis = [FloatingZongzi(canvas) for _ in range(10)]# 窗口居中
center_window(root)# 开始动画
animate()root.mainloop()

 儿童节

想绘制出一个好的节日祝福,需要考虑到这个节日有哪些特色的元素。

import pygame
import sys
import random
import math
from pygame import gfxdraw
from datetime import datetime# 初始化pygame
pygame.init()# 设置窗口
WIDTH, HEIGHT = 1000, 700
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("儿童节快乐!")# 颜色定义
BACKGROUND = (173, 216, 230)  # 淡蓝色背景
RED = (255, 50, 50)
GREEN = (50, 200, 50)
BLUE = (50, 50, 255)
YELLOW = (255, 255, 0)
PURPLE = (200, 50, 200)
ORANGE = (255, 165, 0)
PINK = (255, 105, 180)
CYAN = (0, 255, 255)
COLORS = [RED, GREEN, BLUE, YELLOW, PURPLE, ORANGE, PINK, CYAN]# 字体
title_font = pygame.font.SysFont("simhei", 60, bold=True)
subtitle_font = pygame.font.SysFont("simhei", 36)
message_font = pygame.font.SysFont("simhei", 28)# 气球类
class Balloon:def __init__(self):self.radius = random.randint(20, 50)self.x = random.randint(self.radius, WIDTH - self.radius)self.y = HEIGHT + self.radiusself.color = random.choice(COLORS)self.speed = random.uniform(0.5, 2.0)self.swing = random.uniform(0.01, 0.05)self.angle = random.uniform(0, 2 * math.pi)self.string_length = random.randint(80, 150)def update(self):self.y -= self.speedself.angle += self.swingself.x += math.sin(self.angle) * 0.5def draw(self, surface):# 绘制气球pygame.draw.circle(surface, self.color, (int(self.x), int(self.y)), self.radius)pygame.draw.circle(surface, (255, 255, 255), (int(self.x - self.radius // 3), int(self.y - self.radius // 3)),self.radius // 4)# 绘制绳子points = []for i in range(self.string_length):px = self.x + math.sin(self.angle + i * 0.1) * 2py = self.y + self.radius + ipoints.append((px, py))if len(points) > 1:pygame.draw.lines(surface, (100, 100, 100), False, points, 1)def is_off_screen(self):return self.y < -self.radius# 粒子效果类
class Particle:def __init__(self, x, y):self.x = xself.y = yself.size = random.randint(2, 6)self.color = random.choice(COLORS)self.speed_x = random.uniform(-3, 3)self.speed_y = random.uniform(-5, -2)self.gravity = 0.1self.life = 100def update(self):self.x += self.speed_xself.y += self.speed_yself.speed_y += self.gravityself.life -= 1def draw(self, surface):alpha = min(255, self.life * 3)color = (self.color[0], self.color[1], self.color[2], alpha)pygame.gfxdraw.filled_circle(surface, int(self.x), int(self.y), self.size, color)def is_dead(self):return self.life <= 0# 祝福语
messages = ["祝所有小朋友儿童节快乐!","愿你们永远保持童真和好奇心!","健康成长,快乐学习!","天天开心,笑容常在!","梦想成真,未来可期!","愿你们的童年充满欢乐和美好回忆!","六一儿童节快乐!愿你永远保持纯真笑脸,健康成长每一天!","童心未泯,快乐常在!祝小朋友节日快乐,梦想成真!","愿你像小树苗一样茁壮成长,像小星星一样闪闪发光!","儿童节到啦!愿你的童年充满糖果般的甜蜜和彩虹般的色彩!","保持好奇心,探索大世界!祝聪明的小朋友节日快乐!","愿你眼中永远有星光,心中永远有童话,节日快乐小天使!","乘着快乐的翅膀,飞向梦想的远方!儿童节快乐!","今天是你的专属节日!尽情欢笑,尽情玩耍,做最快乐的小孩!","愿你的书包装满知识,口袋装满糖果,心里装满快乐!","像奥特曼一样勇敢,像哆啦A梦一样神奇!节日快乐小超人!","画个太阳照亮童年,折个纸飞机放飞梦想!六一快乐!","愿你用蜡笔画下七彩童年,用积木搭建美好未来!","保持童真看世界,带着梦想向前冲!儿童节快乐!","今天是童话成真的日子,愿你的生活像动画片一样精彩!","愿快乐常驻你的酒窝,智慧点亮你的双眸!节日快乐!","像小蜜蜂一样勤劳,像小蝴蝶一样美丽!做最棒的小朋友!","吹起欢乐的泡泡,荡起幸福的秋千,享受属于你的节日!","愿你拥有佩奇的快乐,熊大的勇敢,汪汪队的智慧!","童年是生命中最美的乐章,愿你奏响最欢快的音符!","收集全世界的阳光,装点你的笑脸!儿童节快乐小太阳!"
]# 创建气球
balloons = []
particles = []
message_index = 0
message_timer = 0
current_message = messages[0]  # 初始祝福语
previous_message = None# 主循环
clock = pygame.time.Clock()
running = Truewhile running:current_time = pygame.time.get_ticks()for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYDOWN:if event.key == pygame.K_ESCAPE:running = Falseelif event.key == pygame.K_SPACE:# 空格键添加气球for _ in range(5):balloons.append(Balloon())# 随机添加气球if random.random() < 0.05:balloons.append(Balloon())# 更新气球for balloon in balloons[:]:balloon.update()if balloon.is_off_screen():balloons.remove(balloon)# 更新粒子for particle in particles[:]:particle.update()if particle.is_dead():particles.remove(particle)# 随机生成粒子if random.random() < 0.2:particles.append(Particle(random.randint(0, WIDTH), HEIGHT - 10))# 更新祝福语message_timer += 1if message_timer > 200:  # 每200帧切换一次祝福语while True:new_msg = random.choice(messages)if new_msg != previous_message:previous_message = new_msgcurrent_message = new_msgbreakmessage_timer = 0# 绘制背景screen.fill(BACKGROUND)# 绘制云朵for i in range(3):cloud_x = (current_time // 30 + i * 300) % (WIDTH + 200) - 100cloud_y = 100 + i * 80pygame.draw.circle(screen, (250, 250, 250), (cloud_x, cloud_y), 30)pygame.draw.circle(screen, (250, 250, 250), (cloud_x + 20, cloud_y - 15), 25)pygame.draw.circle(screen, (250, 250, 250), (cloud_x + 40, cloud_y), 30)pygame.draw.circle(screen, (250, 250, 250), (cloud_x + 20, cloud_y + 15), 25)# 绘制草地pygame.draw.rect(screen, (100, 200, 100), (0, HEIGHT - 50, WIDTH, 50))for i in range(20):x = i * 50pygame.draw.arc(screen, (0, 150, 0), (x, HEIGHT - 80, 50, 50), 0, math.pi, 3)# 绘制气球for balloon in balloons:balloon.draw(screen)# 绘制粒子for particle in particles:particle.draw(screen)# 绘制标题title = title_font.render("儿童节快乐!", True, (200, 0, 100))screen.blit(title, (WIDTH // 2 - title.get_width() // 2, 30))# 绘制日期today = datetime.now().strftime("%Y年%m月%d日")date_text = subtitle_font.render(today, True, (0, 100, 200))screen.blit(date_text, (WIDTH // 2 - date_text.get_width() // 2, 100))# 绘制祝福语message = current_messagemsg_surface = message_font.render(message, True, (0, 0, 150))screen.blit(msg_surface, (WIDTH // 2 - msg_surface.get_width() // 2, HEIGHT - 200))# 绘制气球提示hint = message_font.render("按空格键添加更多气球", True, (100, 100, 100))screen.blit(hint, (WIDTH // 2 - hint.get_width() // 2, HEIGHT - 150))# 绘制退出提示exit_hint = message_font.render("按ESC键退出", True, (100, 100, 100))screen.blit(exit_hint, (WIDTH - exit_hint.get_width() - 20, HEIGHT - 40))# 绘制儿童节标志pygame.draw.circle(screen, (255, 240, 0), (WIDTH // 2, HEIGHT // 2 - 50), 60)pygame.draw.circle(screen, (255, 150, 0), (WIDTH // 2, HEIGHT // 2 - 50), 55, 5)# 绘制笑脸 - 修正后的笑脸pygame.draw.circle(screen, (0, 0, 0), (WIDTH // 2 - 20, HEIGHT // 2 - 60), 8)  # 左眼pygame.draw.circle(screen, (0, 0, 0), (WIDTH // 2 + 20, HEIGHT // 2 - 60), 8)  # 右眼# 绘制笑脸的嘴巴(向上弯曲)mouth_rect = (WIDTH // 2 - 25, HEIGHT // 2 - 40, 50, 40)pygame.draw.arc(screen, (0, 0, 0), mouth_rect, math.pi, 2 * math.pi, 3)# 绘制彩带for i in range(8):angle = i * math.pi / 4 + current_time / 1000length = 100end_x = WIDTH // 2 + math.cos(angle) * lengthend_y = HEIGHT // 2 - 50 + math.sin(angle) * lengthpygame.draw.line(screen, COLORS[i % len(COLORS)],(WIDTH // 2, HEIGHT // 2 - 50),(end_x, end_y), 3)pygame.display.flip()clock.tick(60)pygame.quit()
sys.exit()

相关文章:

  • 嵌入式编译工具链熟悉与游戏移植
  • Fragment事务commit与commitNow区别
  • atapi!IdeReadWrite函数分析中.txt
  • LeeCode 98. 验证二叉搜索树
  • LearnOpenGL-笔记-其十二
  • oscp练习PG Monster靶机复现
  • C# 如何获取当前成员函数的函数名
  • Kerberos面试内容整理-Kerberos 与 LDAP/Active Directory 的集成
  • C++哈希表:unordered系列容器详解
  • 2.5/Q2,Charls最新文章解读
  • 动态规划-376.摆动序列-力扣(LeetCode)
  • 使用HTTPS进行传输加密
  • WIN11+eclipse搭建java开发环境
  • Codesys FOR 循环之轴控
  • AIGC学习笔记(8)——AI大模型开发工程师
  • AI读懂天书:Manus AI跨语种手写识别解密
  • 【Python】解析 io.StringIO 与 io.BytesIO
  • Kafka 的 ISR 机制深度解析:保障数据可靠性的核心防线
  • Java 文件操作 和 IO(4)-- Java文件内容操作(2)-- 字符流操作
  • CloudCompare-源码分析-绘制与 3D 场景分离的“前景”元素
  • 35互联做的网站如何/互联网域名交易中心
  • 企业建设网站风险/西安网络优化培训机构公司
  • 广西住房和城乡建设委员会网站/网络营销做得好的公司
  • 深圳营销网站建设公司/外链推广网站
  • 有个网站做字的图片/北京今日重大新闻
  • 门户网站开发技术/直播营销策划方案范文