pygame-克隆
标签: none
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()
图片资源
源码中的图片,随便弄个图片换个路径即可。