"""
菜根谭小猫.py
本程序演示四只行走的小猫,碰到屏幕边缘会反向,有时候它也会向后转。
它会时不时地说《菜根谭》里面的句子。它有时候还会发出猫叫声。
作者:李兴球,日期:2018/10/2。
"""
import os
from turtle import *
from random import randint,choice
class Sprite(Turtle):
def __init__(self,ycor,imagesL,imagesR,sentence,sound = None):
"""参数说明:
ycor:初始y坐标
imagesL: 左行列表图
imgaesR: 右行列表图
sentence:话语列表
sound:喵叫声
"""
def move(self):
"""让小猫移动,让它有时候会向后转,有时候会说话。"""
self.word_turtle.clear()
self.miao() #有时候会发声。
def turn_back(self):
"""向后转"""
self.rt(180)
self.images = self.imagesL if self.heading()==180 else self.imagesR
self.index = 0
def next_image(self):
"""切换到下一个造型"""
self.shape(self.images[self.index])
self.index = self.index + 1
self.index = self.index % self.images_amount
def bounce_on_edge(self):
"""对象是离边缘50像素时,让它向后转"""
if abs(self.xcor()) > self.screen_width //2 - 50:
self.turn_back() #到了边缘会向后转
def miao(self):
"""设置一定的机率,让小猫发出喵叫声"""
if randint(1,300) == 1:
try:self.sound.play()
except:pass
def speak(self):
"""让小猫的头顶上显示一行句子,好像小猫在说话"""
pass
def load_sentence(filename):
"""读文件内容,返回句子组成的列表,参数为文件名路径"""
words = []
f = open(filename)
for line in f:
if line.strip() != "": words.append(line)
f.close()
return words
def init_screen(width,height,title,background):
"""初始化屏幕,参数分别是:宽度,高度,窗口标题,背景图路径"""
screen = Screen()
screen.bgpic(background)
screen.setup(width,height)
screen.title(title)
screen.delay(0)
return screen
def register_gif(screen):
"""注册gif图形,参数为屏幕对象"""
pass
def init_audio():
"""播放背景音乐,加载‘喵’声。"""
def main():
"""定义主程序,它的执行步骤为:
初始化屏幕,注册gif图形,初始化音频,装载菜根谭名句,新建4个小猫对象,主循环
"""
screen = init_screen(960,720,"《菜根谭》小猫","stripes.png") #初始化屏幕
images0,images1 = register_gif(screen) #注册gif图到形状列表
miao = init_audio() #初始化音频
句子 = load_sentence("菜根谭名句摘要.txt") #装载菜根谭名句到列表
[Sprite(y,images0,images1,句子,miao) for y in (80,260,-120,-290)] #生成4只小猫
screen.mainloop() #主循环
if __name__=="__main__":
main()
下载完整源代码与素材,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)
