IT小工匠

这里是站点说明

pygame-克隆

pygame-克隆

源码

import sys ,pygame,time,random,datetime
from pygame import locals

class Apple(object):
    def __init__(self):
        self.appleimage = pygame.image.load('ball.png')
        self.apple = pygame.transform.scale(self.appleimage,(20,20))
        self.applerect = self.apple.get_rect()
        #随机初始化苹果位置
        self.applerect.left = random.randint(50,430)
        self.applerect.top = random.randint(0,100)


    def land(self):
        # 设定苹果下落速度
        self.applerect = self.applerect.move(0,3)
        # time.sleep(0.01)
        return self.applerect

    def name(self):
        return self.apple


class Kl(object):
    def __init__(self):
        self.oldtime = 0
        self.newtime = 0
        self.temp = 0
        self.after = 0
        self.final = 0
        self.name = [] #实例化的对象名
        self.num = 0
        self.goon = 0
        self.zs = 0

    '''
    classname:传入的类名
    ddt:克隆等待时间
    n:屏幕克隆角色最多几个
    '''
    def klr(self,classname,ddt,n):
        self.newtime = datetime.datetime.now()#记录当前时间
        if self.oldtime == 0 :
            self.oldtime = self.newtime
        else:
            self.temp = self.newtime - self.oldtime
            self.after = str(self.temp.microseconds)[0]
            self.final = int(self.after)/10 + self.temp.seconds
            if self.final >= ddt:
                self.goon = 1
        #根据ddt间隔响应时间克隆对象
        if self.goon == 1:
            self.name.append(str(classname)+str(self.num)) #生成克隆对象编号
            self.name[len(self.name)-1] = classname #实例化传入的对象
            #print(classname)
            #print(self.name)
            self.num += 1 #编号加1
            self.oldtime = 0
            self.goon = 0
            self.zs += 1
        #屏幕克隆个数不超过n个
        if self.zs > n:
            del self.name[0]
            self.zs -= 1

    def klqd(self,screen):
        for i in range(len(self.name)):
            screen.blit(self.name[i].name(), self.name[i].land())
            # pygame.display.update()

    def scklt(self):
        for j in range(len(self.name)):
            self.a = self.name[j].land().top #获取对象的y坐标
            if self.a > 450:
                del self.name[j] #删除不用的对象
                break # 跳出循环重新判断

def main():
    # 初始化
    pygame.init()
    # 设置窗口大小
    size = width, height = 640, 480
    # 设置颜色
    color = (46, 45, 92)
    # 显示窗口
    screen = pygame.display.set_mode(size)
    # 设置时钟
    clock = pygame.time.Clock()
    pygame.display.set_caption('克隆球')
    #实例化克隆对象
    klrha = Kl()
    while True:
        klrha.klr(Apple(),random.random(),200)

        # 每秒执行60次
        clock.tick(180)
        # 遍历所有事件
        for event in pygame.event.get():
            # 如果关闭窗口,则退出
            if event.type == pygame.QUIT:
                sys.exit()
        # 填充颜色
        screen.fill(color)
        # 将图片画到窗口
        klrha.klqd(screen)
        klrha.scklt()

        pygame.display.flip()

main()

图片资源

源码中的图片,随便弄个图片换个路径即可。

本原创文章未经允许不得转载 | 当前页面:IT小工匠 » pygame-克隆

评论

广告位