php网站访问很慢,广州互联网广告推广,中国最大的软件开发公司,php网站开发需求文档目录
系列文章
写在前面
完整代码
代码分析
写在后面 系列文章
序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码…
目录
系列文章
写在前面
完整代码
代码分析
写在后面 系列文章
序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多彩的玫瑰花代码节日系列1Python动漫风烟花秀代码2Python新年烟花秀代码3Python圣诞礼物代码4Python画圣诞树代码5Python可爱版圣诞树丨绿色6Python可爱版圣诞树丨粉色7Python大雪纷飞代码8Python生日蛋糕代码9Python五彩气球代码10Python国庆祝福代码11Python万圣礼物代码12Python愚人节礼物代码13Python浪漫星空代码14Python樱花树代码动漫系列1Python名侦探柯南2Python喜羊羊3Python懒羊羊4Python沸羊羊5Python小灰灰6Python小香香7Python灰太狼8Python海绵宝宝9Python哆啦A梦10Python凯蒂猫11Python猫和老鼠12Python草莓熊13Python迷你皮卡丘14Python高级皮卡丘15Python豪华皮卡丘16Python史迪仔17Python小熊猫18Python蜘蛛侠19Python可爱版蜡笔小新20Python萌萌的蜡笔小新21Python罗小黑22Python猪猪侠炫酷系列1 Python张万森下雪了2Python一闪一闪亮晶晶3Python黑客帝国代码雨4Python七彩花朵5Python模拟3D星空6Python金榜题名7Python满天星
写在前面
Python实现万圣节蝙蝠的完整代码。
PyCharmpython3.11.4pyinstaller6.2.0
完整代码
import turtle as tu
import random as ra
import mathtu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)
tu.title(万圣节快乐)
tu.bgcolor(darkblue)
t tu.Pen()
t.ht()
colors [black]class Bat(): # 每个蝙蝠蝙蝠类def __init__(self):self.k ra.uniform(0.1, 0.3) # 蝙蝠的半径self.r 1 # 南瓜的半径self.x ra.randint(-1000, 1000) # 蝙蝠的横坐标self.y ra.randint(-500, 500) # 蝙蝠的纵坐标self.f ra.uniform(-3.14, 3.14) # 蝙蝠左右移动呈正弦函数self.speed ra.randint(5, 10) # 蝙蝠移动速度self.color ra.choice(colors) # 蝙蝠的颜色self.outline 1 # 蝙蝠的外框大小可不要def move(self): # 蝙蝠移动函数if self.y 500: # 当蝙蝠还在画布中时self.y self.speed # 设置上下移动速度self.x self.speed * math.sin(self.f) # 设置左右移动速度self.f 0.1 # 可以理解成标志改变左右移动的方向else: # 当蝙蝠漂出了画布时重新生成一个蝙蝠self.k ra.uniform(0.1, 0.3)self.r 1 # 南瓜的半径self.x ra.randint(-1000, 1000)self.y -500self.f ra.uniform(-3.14, 3.14)self.speed ra.randint(5, 10)self.color ra.choice(colors)self.outline 1def bat(self): # 画蝙蝠函数就是用turtle画蝙蝠t.penup()t.goto(self.x, self.y)t.pendown()t.pencolor(self.color)t.pensize(1)t.begin_fill()t.fillcolor(self.color)t.forward(self.k * 10)t.setheading(75)t.forward(self.k * 35)t.setheading(-75)t.forward(self.k * 55)t.setheading(0)t.circle(self.k * 40, 90)t.right(90)t.forward(self.k * 100)t.left(180)t.circle(self.k * 100, 90)t.setheading(180)t.circle(self.k * 70, 90)t.left(180)t.circle(self.k * 70, 90)t.right(90)t.circle(self.k * 100, 90)t.right(180)t.forward(self.k * 100)t.right(90)t.circle(self.k * 40, 90)t.setheading(75)t.forward(self.k * 55)t.setheading(-75)t.forward(self.k * 35)t.setheading(0)t.forward(self.k * 10)t.end_fill()def pumpkin(self):# 画南瓜t.penup()t.goto(250 * self.r, 30 * self.r)t.pendown()t.seth(90)t.begin_fill()for j in range(25):t.fd(j * self.r)t.left(3.6)for j in range(25, 0, -1):t.fd(j * self.r)t.left(3.6)t.seth(-90)t.circle(254 * self.r, 180)t.end_fill()# 眼睛eyes_items [(-60, 230, 0), (60, -50, 1)]for items in eyes_items:position, angle, direction itemst.pensize(6)t.penup()t.goto(position * self.r, 0)t.pendown()t.color(yellow, yellow)t.begin_fill()t.seth(angle)for j in range(55):t.fd(3 * self.r)if direction:t.left(3) # 左转3度else:t.right(3) # 右转3度t.goto(position * self.r, 0)t.end_fill()# 鼻子t.penup()t.goto(0, 0)t.seth(180)t.pendown()t.begin_fill()t.circle(50 * self.r, steps3)t.end_fill()# 嘴巴t.color(#F9D503, #F9D503)t.pensize(6)t.penup()t.goto(-150 * self.r, -100 * self.r)t.pendown()t.begin_fill()t.seth(-30)t.fd(100 * self.r)t.left(90)t.fd(30 * self.r)t.right(90)t.fd(60 * self.r)t.left(60)t.fd(60 * self.r)t.right(90)t.fd(30 * self.r)t.left(90)t.fd(100 * self.r)t.end_fill()# 南瓜枝t.penup()t.goto(0, 180 * self.r)t.pendown()t.color(#2E3C01)t.seth(100)t.pensize(25)t.circle(60 * self.r, 100)Bats [] # 用列表保存所有蝙蝠
for i in range(100):Bats.append(Bat())while True: # 开始漂浮tu.tracer(0)t.clear()# Bats[0].pumpkin()for i in range(50): # 在画布中设置50个漂浮的蝙蝠Bats[i].move()Bats[i].bat()tu.update()代码分析
这段代码是用Python的turtle模块绘制一个万圣节主题的动画效果漂浮的蝙蝠和南瓜。
代码第1-4行导入了必要的模块。turtle模块用于绘图random模块用于生成随机数math模块用于数学计算。
第6-8行设置了绘图窗口的大小和标题以及背景颜色。
第10行创建了一个画笔对象t。
第11行定义了一个颜色列表colors用于随机选择蝙蝠的颜色。
第13-39行定义了一个蝙蝠类Bat。该类具有以下属性和方法 初始化方法__init__()初始化蝙蝠的半径、南瓜半径、坐标、移动速度、颜色等属性。 移动方法move()根据蝙蝠的速度和方向更新蝙蝠的坐标。 画蝙蝠方法bat()根据蝙蝠的属性使用turtle模块绘制一个蝙蝠的图形。 画南瓜方法pumpkin()使用turtle模块绘制一个南瓜的图形。
第41行创建一个空的列表Bats用于保存所有蝙蝠。
第42-47行使用循环创建100个蝙蝠对象并将它们添加到列表Bats中。
第49行开始一个无限循环用于让蝙蝠漂浮 使用tu.tracer(0)关闭绘图的动画效果加快绘图速度。 使用t.clear()清空画布。 使用循环依次调用每个蝙蝠对象的move()和bat()方法实现蝙蝠的移动和绘制。 使用tu.update()更新画布显示最新的绘图结果。
通过以上代码可以实现一个漂浮的蝙蝠和南瓜的动画效果以下是对这段代码的详细分析。
1. 代码结构概述
这段代码使用了类和对象的概念来创建蝙蝠具体实现了蝙蝠的移动和绘制功能并通过无限循环持续更新画面。主要分为以下几个部分 库的导入和基本设置导入Turtle和随机库设置窗口标题、背景颜色及画布大小。 Bat类定义了蝙蝠的属性和行为包括初始化位置、速度、颜色等以及绘制蝙蝠和南瓜的具体方法。 蝙蝠的移动和绘制实现蝙蝠的上下左右运动并绘制蝙蝠的形状。 动画循环通过无限循环更新画面展示蝙蝠的运动。
2. 细节分析
2.1 库的导入与设置
import turtle as tu
import random as ra
import mathtu.setup(1.0, 1.0)
tu.screensize(1.0, 1.0)
tu.title(万圣节快乐)
tu.bgcolor(darkblue)
这里导入了turtle、random和math库。turtle用于图形绘制random用于生成随机数math则用于数学计算。随后设置了窗口的大小、标题和背景颜色为绘制氛围的营造打下基础。
2.2 Bat类的定义
class Bat():def __init__(self):self.k ra.uniform(0.1, 0.3) # 蝙蝠的半径self.r 1 # 南瓜的半径self.x ra.randint(-1000, 1000) # 蝙蝠的横坐标self.y ra.randint(-500, 500) # 蝙蝠的纵坐标self.f ra.uniform(-3.14, 3.14) # 蝙蝠左右移动呈正弦函数self.speed ra.randint(5, 10) # 蝙蝠移动速度self.color ra.choice(colors) # 蝙蝠的颜色self.outline 1 # 蝙蝠的外框大小可不要
构造函数__init__定义了蝙蝠的初始属性包括随机生成的半径、位置、速度和颜色。这使得每只蝙蝠都有独特的外观和运动轨迹。
2.3 移动与绘制方法
def move(self):if self.y 500:self.y self.speedself.x self.speed * math.sin(self.f)self.f 0.1else:self.k ra.uniform(0.1, 0.3)self.x ra.randint(-1000, 1000)self.y -500self.f ra.uniform(-3.14, 3.14)self.speed ra.randint(5, 10)self.color ra.choice(colors)
move方法控制蝙蝠的上下左右移动通过正弦函数实现左右晃动的效果。蝙蝠一旦超出画布范围就会重置其位置和属性继续在画布内随机漂浮。
def bat(self):t.penup()t.goto(self.x, self.y)t.pendown()t.pencolor(self.color)t.pensize(1)t.begin_fill()t.fillcolor(self.color)# 绘制蝙蝠的形状t.end_fill()
bat方法绘制蝙蝠的形状利用Turtle库的绘图功能通过路径的设置和填充颜色实现了蝙蝠的视觉效果。
2.4 南瓜的绘制
def pumpkin(self):t.penup()t.goto(250 * self.r, 30 * self.r)t.pendown()t.seth(90)t.begin_fill()# 绘制南瓜t.end_fill()
pumpkin方法负责绘制南瓜的形状和特征如眼睛、鼻子和嘴巴使用循环和角度变化绘制出南瓜的圆滑形状并通过不同的颜色和尺寸使南瓜显得更加生动。
2.5 动画循环
while True:tu.tracer(0)t.clear()for i in range(50):Bats[i].move()Bats[i].bat()tu.update()
在无限循环中首先关闭Turtle的自动绘图tu.tracer(0)然后清空之前的绘制接着对前50只蝙蝠进行位置更新和绘制。tu.update()用于手动更新绘图使得动画效果更加流畅。
3. 总结
这段代码通过类和对象的设计有效地实现了蝙蝠和南瓜的绘制及动画效果。每只蝙蝠具有独特的随机属性使得动画呈现出多样化的效果。代码结构清晰逻辑分明通过方法的划分使得功能模块化便于维护和扩展。总的来说这段代码成功地展示了万圣节的主题适合用于学习Python的图形编程和面向对象编程的基础知识。
写在后面
我是一只有趣的兔子感谢你的喜欢