python pygame实现球球大作战
本文实例为大家分享了pythonpygame球球大作战的具体代码,供大家参考,具体内容如下
球球大作战:(大球吃小球,代码如下:)
fromrandomimportrandint,randrange importpygame frommathimportsqrt,pi classBall(object): def__init__(self,center,color,radius,sx,sy): self._center=center self._color=color self._radius=radius self._sx=sx self._sy=sy @property defcenter(self): returnself._center @property defradius(self): returnself._radius @radius.setter defradius(self,radius): self._radius=radius defmove(self): x,y=self._center[0],self._center[1] x+=self._sx y+=self._sy self._center=(x,y) #ifx+self._radius>800: #self._sx=-abs(self._sx) #elifx+self._radius<0: #self._sx=abs(self._sx) #elify+self._radius>800: #self._sy=-abs(self._sy) #elify+self._radius<0: #self._sy=abs(self._sy) ifx+self._radius>=800orx-self._radius<=0orx<=0: self._sx=-self._sx ify+self._radius>=800ory-self._radius<=0ory<=0: self._sy=-self._sy defdraw(self,screen): pygame.draw.circle(screen,self._color,self._center,self._radius,0) defeat(self,other): a=sqrt((self._center[0]-other.center[0])**2+(self._center[1]-other.center[1])**2) ifaother.radius: self._radius=self._radius+other.radius other.radius=0 defmain(): balls=[] pygame.init() screen=pygame.display.set_mode([800,800]) pygame.display.set_caption('大球吃小球') c=pygame.time.Clock() running=True whilerunning: foreventinpygame.event.get(): ifevent.type==pygame.QUIT: running=False elifevent.type==pygame.MOUSEBUTTONDOWNand\ event.button==1: color=random_color() radius=randint(10,100) sx,sy=randint(-10,10),randint(-10,10) ball=Ball(event.pos,color,radius,sx,sy) balls.append(ball) refresh(screen,balls) c.tick(20)#50帧 forballinballs: ball.move() balls_len=len(balls) foriinrange(balls_len): forxinrange(balls_len): balls[i].eat(balls[x]) forballinballs: ifball.radius==0: balls.remove(ball) pygame.quit() defrefresh(screen,balls): bg_color=[255,255,255] screen.fill(bg_color) forballinballs: ball.draw(screen) pygame.display.flip() defrandom_color(): return[randint(1,255),randint(1,255),randint(1,255)] if__name__=='__main__': main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。