'''水波纹模拟和跟着鼠标指针前进的左右造型的鱼.py '''
import math
from turtle import Turtle,Screen # 导入Turtle类和Screen命令
from random import randint
def follow_mouse(event):
"""本函数让小海龟面朝鼠标指针移动
由于海龟画图的坐标和tkinter画布原生坐标不一样,所以要进行坐标转换。
"""
x = event.x - width//2 # 转换成海龟坐标系中的x坐标
y = height//2 - event.y # 转换成海龟坐标系中的y坐标
dy = y - fish.ycor()
dx = x - fish.xcor()
def animate_fish():
"""鱼切换造型"""
def animate_screen():
"""背景切换"""
if __name__ == "__main__":
bg_index = 0
width,height = 800,600
fish_right_images = ["images/fish_right0.gif","images/fish_right1.gif"]
fish_left_images = ["images/fish_left0.gif","images/fish_left1.gif"]
fish_right_images = ["fishs/" + "0" * (4-len(str(i))) + str(i) +".gif" for i in range(1,9)]
fish_left_images = ["fishs/" + "0" * (4-len(str(i))) + str(i) +"-.gif" for i in range(1,9)]
fish_images = [fish_left_images,fish_right_images]
#waveimages = ["waves/" + (4-len(str(i))) * "0" + str(i) + ".png" for i in range(1,21)]
waveimages = [f"waves/{i:04d}.png" for i in range(1,21)]
bg_amounts = len(waveimages)
screen = Screen()
screen.title('跟着鼠标指针移动_by李兴球') # 写上窗口标题
screen.setup(width,height) # 设定窗口大小
screen.delay(0)
[screen.addshape(image) for image in fish_right_images]
[screen.addshape(image) for image in fish_left_images]
fish = Turtle(shape = "turtle")
fish.penup()
fish.speed(0)
fish.left_right = 0 # 用左边的图还是右边的图,0左,1右
fish.images = fish_right_images # 初始用右边的一系列图
fish.costume_index = 0 # 自定义一个属性,用于造型切换索引
fish.costume_amounts = len(fish_right_images) # 一个方向的造型数量,两个方向是一样的数量
animate_fish()
animate_screen()
screen.cv.bind("<Motion>",follow_mouse) # 画布绑定鼠标移动事件
screen.mainloop()
下载完整源代码与素材,本压缩包里面有好多版本及附属程序,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

