本次用turtle模块进行绘制
一、星空
效果:
代码讲解:
首先导入所需要的模块
import turtle as t
import random
然后设置turtle画笔的属性
1.把速度设置到最快
2.设置背景为深蓝色
3.设置画笔和填充颜色为黄色
t.speed(0)
t.bgcolor("darkblue") # 背景颜色
t.color("yellow") # 颜色
定义一个star函数绘制星星
def star(): # 星星函数
t.penup() # 这里可以写成t.pu()
t.goto(random.randint(-280,280),random.randint(-280,280))
t.pendown() # 这里可以写成t.pd()
t.begin_fill()
length=random.randint(5,30)
for i in range(5):
t.forward(length) # 这里可以写成t.fd()
t.left(180-360/10)
t.end_fill()
上面函数代码的详解:
首先,抬起画笔
然后移动到画布的任意位置,参数自己填写
接下来落笔
开始填充颜色
循环5次,绘制5条边
每一次都旋转144°(144°*5=720°=360°*2)
最后结束填充颜色
最后,绘制星星(数量可以自己设定,本次讲解用随机数)
for i in range(random.randint(35,75)):
star()
绘制完毕,隐藏画笔
t.hideturtle()
t.done()
最终代码
import turtle as t
import random
def star(): # 星星函数
t.penup() # 这里可以写成t.pu()
t.goto(random.randint(-280,280),random.randint(-280,280))
t.pendown() # 这里可以写成t.pd()
t.begin_fill()
length=random.randint(5,30)
for i in range(5):
t.forward(length) # 这里可以写成t.fd()
t.left(180-360/10)
t.end_fill()
t.speed(0)
t.bgcolor("darkblue") # 背景颜色
t.color("yellow") # 颜色
for i in range(random.randint(35,75)):
star()
t.hideturtle()
t.done()
二、Emoji
效果:
代码讲解:
导入需要的模块
from turtle import *
定义一个类
class CrazyEmoji(Turtle):
初始化函数
def __init__(self,num,position,speed):
super().__init__()
self.x=position[0]
self.y=position[1]
self.pu()
self.goto(self.x,self.y)
self.num=num
self.shapesize(10)
self.shape(name[self.num])
self.spd=speed
移动函数
def move(self):
self.goto(self.xcor()+self.spd[0],self.ycor()+self.spd[1])
self.checkbound()
检查是否碰到边缘
def checkbound(self):
if self.xcor() > 300 or self.xcor() < -300:
self.spd = -self.spd[0], self.spd[1]
if self.ycor() > 300 or self.ycor() < -300:
self.spd = self.spd[0], -self.spd[1]
创建窗口
screen=Screen()
screen.setup(900,900)
创建emoji图像
name=[]
path="emoji/"
move_speed=10
angle_list=[(-move_speed,-move_speed),(-move_speed,0),(-move_speed,move_speed),\
(0,-move_speed),(0,0),(0,move_speed),\
(move_speed,-move_speed),(move_speed,0),(move_speed,move_speed)]
position_list=[(-300,-300),(0,-300),(300,-300),\
(-300,0),(0,0),(300,0),\
(-300,300),(0,300),(300,300)]
emoji_list=[]
tracer(False)
for i in range(1,73):
name.append(path+str(i)+".gif")
for i in name:
screen.addshape(i)
for j in range(8):
for i in range(9):
emoji_list.append(CrazyEmoji(i*(j+1),position_list[i%len(position_list)],angle_list[j]))
tracer(True)
tracer(24)
最后移动emoji
while True:
for emoji in range(len(emoji_list)):
emoji_list[emoji].move()
最终代码
from turtle import *
class CrazyEmoji(Turtle):
def __init__(self,num,position,speed):
super().__init__()
self.x=position[0]
self.y=position[1]
self.pu()
self.goto(self.x,self.y)
self.num=num
self.shapesize(10)
self.shape(name[self.num])
self.spd=speed
def move(self):
self.goto(self.xcor()+self.spd[0],self.ycor()+self.spd[1])
self.checkbound()
def checkbound(self):
if self.xcor() > 300 or self.xcor() < -300:
self.spd = -self.spd[0], self.spd[1]
if self.ycor() > 300 or self.ycor() < -300:
self.spd = self.spd[0], -self.spd[1]
screen=Screen()
screen.setup(900,900)
name=[]
path="emoji/"
move_speed=10
angle_list=[(-move_speed,-move_speed),(-move_speed,0),(-move_speed,move_speed),\
(0,-move_speed),(0,0),(0,move_speed),\
(move_speed,-move_speed),(move_speed,0),(move_speed,move_speed)]
position_list=[(-300,-300),(0,-300),(300,-300),\
(-300,0),(0,0),(300,0),\
(-300,300),(0,300),(300,300)]
emoji_list=[]
tracer(False)
for i in range(1,73):
name.append(path+str(i)+".gif")
for i in name:
screen.addshape(i)
for j in range(8):
for i in range(9):
emoji_list.append(CrazyEmoji(i*(j+1),position_list[i%len(position_list)],angle_list[j]))
tracer(True)
tracer(24)
while True:
for emoji in range(len(emoji_list)):
emoji_list[emoji].move()
喜欢的话记得点赞关注哦!