python海龟turtle画图模块制作的砸蛋小游戏

"""
   砸蛋小游戏.py
   本程序单击蛋蛋后会有道具出现。
"""

import pygame,glob
from turtle import *
from random import choice,randint

class Prop(Turtle):
    """道具类,当砸到蛋蛋时,生成一个它的实例"""
    def __init__(self,image,position):
        """images:造型图,position:坐标"""
        Turtle.__init__(self,visible=False)  # 初始化时不可见
        self.penup()                         # 不需画所以抬笔
        self.shape(image)                    # 设定道具造型
        self.goto(position)                  # 设定坐标
        self.setheading(randint(20,160))     # 设定方向
        self.sw = self.screen.window_width() # 屏幕宽度
        self.sh = self.screen.window_height()# 屏幕高度
        self.showturtle()                    # 显示出来
        self.move()                          # 开始移动
        
    def move(self):
        """在屏幕范围内不断移动直到超出范围"""
        self.fd(20)
        if abs(self.xcor()) > self.sw or \
           abs(self.ycor()) > self.sh:       # 超过宽高
            self.hideturtle()                # 隐藏对象
            return                           # 立即返回
        self.screen.ontimer(self.move,50)    # 再次运行        
        
class Egg(Turtle):
    def __init__(self,images,position,sound,propimgs):
        """images:造型图,position:坐标,
           sound:音效,propimgs:道具图表"""
本文隐藏内容 登陆 后才可以浏览
def open(self,x,y): """切换到打开蛋蛋的造型""" self.onclick(None) # 取消onclick的绑定 if self.index == 0: image = choice(self.propimgs) # 随机选择一张图 Prop(image,self.position()) # 生成一个道具 self.sound.play() # 播放音效 self.index = 1 # 指定造型索引 self.shape(self.images[self.index]) # 设定造型 self.delay_close() # 延时1秒后关闭 def delay_close(self): """延时把蛋蛋关闭,模拟异步执行,防止程序阻塞""" if self.counter<self.times: # 时间范围内继续等待 self.counter += 1 self.screen.ontimer(self.delay_close,1000) else: self.counter = 0 self.index = 0 # 切换回闭合的索引 self.shape(self.images[self.index]) # 设定造型 self.onclick(self.open) # 时间到了让单击有效 if __name__ == "__main__": width,height = 480,360 # 定义宽高 propimgs = glob.glob("gif/*.gif") # 道具列表 eggimgs =['images/造型1.gif','images/造型2.gif'] screen = Screen() # 新建屏幕 screen.delay(0) # 延时为0 screen.title("砸蛋小游戏") # 设置标题 screen.setup(width,height) # 设置宽高 screen.bgpic("images/stage.png") [screen.addshape(im) for im in eggimgs] # 增加蛋蛋造型 [screen.addshape(im) for im in propimgs] # 增加道具造型 pygame.mixer.init() # 初始化混音器 bgmusic = "audio/8-Bit Numa Numa.wav" pygame.mixer.music.load(bgmusic) # 加载背景音乐 pygame.mixer.music.play(-1,0) # 循环播放音乐 thd = "audio/THUNK.wav" clickedsnd =pygame.mixer.Sound(thd) # 生成音效对象 cors = [(0,0),(-150,-50),(150,-50)] # 下行是生成仨个蛋 [Egg(eggimgs,xy,clickedsnd,propimgs) for xy in cors] screen.mainloop()

 

python的turtle制作的砸蛋游戏原型