小编最近刷算法题刷得头疼,发一下库存水一下,上学期做的python小项目,移动爱心。小编第一个熟悉的语言其实是Python,最近才学的C/C++。自我感觉还是Python好玩,不想刷算法题了,呜呜呜呜。
先看效果:
彩色移动爱心
import turtle import random from math import sqrt class Heart: def __init__(self, x, y, size,color): self.color_1=color self.size = size # 心形大小 self.speed = size # 移动速度根据大小变化 # 设置画笔的统一属性 t = turtle.Turtle(visible=False, shape='circle') #画笔设置为不可见,形状为圆形 #“arrow” 扁三角 “blank” 透明 “turtle”小乌龟 “circle”圆 “square” 正方形 #“triangle” 正三角 “classic” 鼠标箭头 t.shapesize(size, size) #设置图形的大小 color =(self.color_1) #(1, 1- size/4, 1-size/4) # 颜色修改为根据大小变化的粉色 #颜色可以写“pink”形式,也支持RGB三元组 t.pencolor(color) t.fillcolor(color) t.penup() # 克隆一个圆形,设置位置 self.circle1 = t.clone() #移动到该该点位置,一个粉色圆形 self.circle1.goto(x-sqrt(size*size*160)/2, y) # 克隆第二个圆形,设置位置 #利用两个圆和一个旋转45度的正方形拼成一个心 self.circle2 = t.clone() self.circle2.goto(x+sqrt(size*size*160)/2, y) # 克隆一个正方形,设置位置并旋转角度 self.square = t.clone() #创建正方形画笔 self.square.shape("square") self.square.setheading(45) #设置朝向45度 self.square.goto(x, y-sqrt(size * size * 160)/2) # 显示图形 self.circle1.showturtle() #显示画笔 self.circle2.showturtle() self.square.showturtle() def move(self): self.circle1.setx(self.circle1.xcor()-self.speed) self.square.setx(self.square.xcor() - self.speed) self.circle2.setx(self.circle2.xcor() - self.speed) #设置三个画笔的移动,取出之前的横坐标,减去输入的self.speed,也就是size,执行一次移动size个像素 def moveTo(self, x, y): # 隐藏形状后再移动防止看到移动轨迹 self.circle1.hideturtle() self.circle2.hideturtle() self.square.hideturtle() # 移动到指定位置 self.circle1.goto(x - sqrt(self.size * self.size * 160) / 2, y) self.circle2.goto(x + sqrt(self.size * self.size * 160) / 2, y) self.square.goto(x, y - sqrt(self.size * self.size * 160) / 2) # 恢复显示 self.circle1.showturtle() self.circle2.showturtle() self.square.showturtle() #当心移到屏幕外时,将其隐身后再次移到原来位置,之后显示,再次执行move方法即可 def xinxing(m): hearts = [] colorlist =['pink','lavender','lightsteelblue',"orangered",'red', 'lightgoldenrodyellow',"hotpink",'pink',"tomato","lightpink","red","lightcyan","gold"] for i in range(30): #循环25次,每一次添加一个心(随机的) color_2=random.choice(colorlist) heart = Heart(width / 2 + random.randint(1, width), random.randint(-height / 2, height / 2), random.random() * 3,color_2) #0到1的数 hearts.append(heart) i=m while True: for heart in hearts: heart.move() if heart.square.xcor() < -width / 2: # 如果爱心移动出屏幕左侧 heart.moveTo(width / 2 + random.randint(1, width), random.randint(-height / 2, height / 2)) # 回到右侧随机位置 i-=1 if i<=0: break if __name__ == '__main__': width, height = 1000, 600 #定义宽和高 screen = turtle.Screen() # 创建窗口对象 screen.setup(width, height) # 设置窗口的宽高 screen.delay(0) # 设置无延时绘画 # screen.bgcolor('pink') # 设置背景颜色为粉色 turtle.bgpic(r'C:\Users\HP\Desktop\Python\404.png') su = turtle.Turtle() #建立su实例(画笔) xinxing(1000) turtle.done() #关闭
源码奉上,祝大家表白成功哦。我本将心向明月,奈何明月照沟渠。呜呜呜呜。