以下是部分代码预览:
""" 本程序创建一个矩形类,实例化后让它们在屏幕上随机移动,碰到屏幕边缘会反弹。 本程序可不必继承自pygame.sprite.Sprite实现,请自行编写。 """ import pygame from pygame.locals import * from random import randint class Rectangle(pygame.sprite.Sprite): def __init__(self,position,width,height,screen,color=(0,255,255)): """ 实始化,position:中心点坐标元组,width:宽度,height:高度,screen:所在屏幕,color:颜色 """ pygame.sprite.Sprite.__init__(self) # 初始化父类 def update(self): """更新坐标""" self.rect.move_ip(self.dx,self.dy) # 移动矩形 self.bounce_on_edge() # 碰到边缘就反弹 def main(): """主要函数""" width,height = 480,360 screen = pygame.display.set_mode((width,height)) pygame.display.set_caption("pygame矩形碰到边缘就反弹示例程序") square_group = pygame.sprite.Group() # 创建组 ,用来对方块进行统一更新与渲染 # 初始坐标 positions = [(100,100),(-100,100),(0,0),(-100,-100),(100,-100)] positions = [(x+width//2,y+height//2) for (x,y) in positions] square_amount = len(positions) # 生成矩形 [square_group.add(Rectangle(pos,50,50,screen)) for pos in positions] clock = pygame.time.Clock() # 时钟对象 running = True # 控制循环的逻辑变量 while running: event = pygame.event.poll() # 从事件队列中取一个事件 if event.type == QUIT:running = False # 如果此事件为退出,则逻辑变量为False screen.fill((0,0,0)) # 填充屏幕为黑色 square_group.draw(screen) # 重画所有方块 pygame.display.update() # 更新屏幕显示 clock.tick(30) # 限制1/30秒后再循环 pygame.quit() if __name__ == "__main__": main()
如需要查看完整代码,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)