孙悟空的72变Pygame版和turtle版

大家都知道西游记中的孙悟空。它有72变,能变成各种形状。下面是用python的海龟画图模块制作的一个小动画。它会让孙悟空不断地变换造型。其本质是不断通过设定海龟的造型图片实现的。在程序中用到了glob模块的glob命令,它能获取指定目录下所有的文件,并且支持通配符,返回一个文件列表。在下面的程序中还配了背景音乐,恰好是西游记片头曲。我们用的是winsound模块里的PlaySound进行播放。在这里使用了异步播放和循环播放两个组合的参数。其中的SND_ASYNC是表示异步播放的意思。意思是这个播放命令运行后,马上能运行下面的代码,而不必等待音乐播放完毕。SND_LOOP是让音乐不断重复播放的参数。以下是代码:

"""
    孙悟空的72变turtle版。
    本程会每隔3秒显示一张图片。
    其实质上是不断地变换海龟的造型图片。
"""
import glob
import turtle
from winsound import * 
from time import sleep

bg = "花果山.png"                      # 背景图

images = glob.glob("images/*.gif")     # 所有的图像

# 新建一个窗口,尺寸为480x360
screen = turtle.Screen()
screen.setup(480,360)
screen.bgpic(bg)
[screen.addshape(im) for im in images]# 增加所有图像

# 异步无限播放背景音乐
PlaySound("西游记片头.wav",SND_ASYNC|SND_LOOP)

while True:
   for image in images:              # 迭代每张图片
      turtle.shape(image)            # 设定海龟的造型
      screen.update()                # 刷新屏幕显示
      sleep(3)                       # 等待3秒钟
        

下面是用pygame模块制作的版本

"""
    孙悟空的72变Pygame版。
    本程序做为Pygame的引入程序。
    它会每隔3秒显示一张图片。
"""
import glob
import pygame
from winsound import * 
from time import sleep

bg = pygame.image.load("花果山.png")   # 加载背景图

images = glob.glob("images/*.gif")     # 所有的图像

# 下面是加载所有的图形到内存中
images = [pygame.image.load(im) for im in images]

# 新建一个窗口,尺寸为480x360
screen = pygame.display.set_mode((480,360))

# 异步无限播放背景音乐
PlaySound("西游记片头.wav",SND_ASYNC|SND_LOOP)

while True:
   for image in images:              # 迭代每张图片
      event = pygame.event.poll()    # 获取一个事件
      screen.blit(bg,(0,0))          # 把背景贴在屏幕上
      screen.blit(image,(100,100))   # 把图像贴在屏幕上  
      pygame.display.update()        # 更新屏幕的显示
      sleep(3)                       # 等待3秒钟