Python模拟海底世界章鱼哥_向面对象

'''Python模拟海底世界章鱼哥_向面对象 .py
   本程序采用面向对象方法编程,新建了Bubble类,Octopus类等,栩栩如生地展现了可爱的章鱼吐泡泡和左右摇摆的形态.
   本用也有面向过程的同样效果的程序,还有一个用arcade模块制作的同样效果的程序. 这个版本是有鱼和螃蟹的.
   
'''
import math,time
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 - octopus.ycor()
    #dx = x - octopus.xcor() 
    #angle = math.degrees(math.atan2(dy,dx))  # 用反正切函数计算角度
    angle = octopus.towards(x,y)
    octopus.setheading(angle)                # 设置方向 
    if octopus.distance(x,y)>50:octopus.fd(2)# 到鼠标指针距离大于50,就移动
     
class Bubble(Turtle):
    def __init__(self,images,master,delaytime):
        Turtle.__init__(self,visible=False)
        self.speed(0)                                  # 动作速度为最快
        self.penup()                                                  
        self.images = images                           # 造型列表
        self.amounts = len(images)                     # 造型数量
        self.master = master                           # 它的主人是章鱼
        self.delaytime = delaytime                     # 延迟总时间
        self.delaycounter = 0                          # 延时出现计时器
        self.screen_height = self.screen.window_height()        
        self.wait_until_time_up()                      # 异步等待,时间到了出现泡泡 调用self.rise

    def wait_until_time_up(self):
        """等到时间到了就显示"""
        if self.delaycounter < self.delaytime:
            self.delaycounter += 1
            self.screen.ontimer(self.wait_until_time_up,1000) # 1秒后再次运行
        else:                                                 # 超时就显示出来
            self.init_costume()                               # 初始化造型等
            self.rise()                                       # 泡泡上升     
        

You must log in to read the rest of this article. Please log in or register as a user.