python pygame实现球球大作战

 更新时间:2019年11月25日 14:22:39   作者:人生仿若单程旅行  
这篇文章主要为大家详细介绍了Python pygame实现球球大作战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了python pygame球球大作战的具体代码,供大家参考,具体内容如下

球球大作战:(大球吃小球,代码如下:)

from random import randint,randrange
import pygame
from math import sqrt,pi


class Ball(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
  def center(self):
    return self._center

  @property
  def radius(self):
    return self._radius

  @radius.setter
  def radius(self,radius):
    self._radius = radius

  def move(self):
    x, y = self._center[0], self._center[1]
    x += self._sx
    y += self._sy
    self._center = (x, y)
    # if x + self._radius > 800:
    #   self._sx = -abs(self._sx)
    # elif x + self._radius < 0:
    #   self._sx = abs(self._sx)
    # elif y +self._radius > 800:
    #   self._sy = -abs(self._sy)
    # elif y +self._radius < 0:
    #   self._sy = abs(self._sy)
    if x + self._radius >= 800 or x - self._radius <= 0 or x <= 0:
      self._sx = -self._sx
    if y +self._radius >= 800 or y - self._radius <= 0 or y <= 0:
      self._sy = -self._sy

  def draw(self,screen):
    pygame.draw.circle(screen, self._color, self._center, self._radius, 0)

  def eat(self, other):
    a = sqrt((self._center[0] - other.center[0]) ** 2 + (self._center[1] - other.center[1]) ** 2)
    if a < self._radius + other.radius and self._radius < other.radius:
      other.radius = self._radius + other.radius
      self.radius = 0
    elif a < self._radius + other.radius and self._radius > other.radius:
      self._radius = self._radius + other.radius
      other.radius = 0


def main():
  balls = []
  pygame.init()
  screen = pygame.display.set_mode([800,800])
  pygame.display.set_caption('大球吃小球')
  c = pygame.time.Clock()
  running = True
  while running:
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
        running = False
      elif event.type == pygame.MOUSEBUTTONDOWN and \
         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帧
    for ball in balls:
      ball.move()
    balls_len = len(balls)
    for i in range(balls_len):
      for x in range(balls_len):
        balls[i].eat(balls[x])
    for ball in balls:
      if ball.radius == 0:
        balls.remove(ball)


  pygame.quit()


def refresh(screen,balls):
  bg_color = [255, 255, 255]
  screen.fill(bg_color)
  for ball in balls:
    ball.draw(screen)
  pygame.display.flip()


def random_color():
  return [randint(1,255), randint(1,255), randint(1,255)]


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python实现代码统计工具

    Python实现代码统计工具

    这篇文章主要为大家详细介绍了Python实现代码统计工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • 教你如何使用Python快速爬取需要的数据

    教你如何使用Python快速爬取需要的数据

    学点数据爬虫基础能让繁琐的数据CV工作(Ctrl+C,Ctrl+V)成为自动化就足够了.作为一名数据分析师而并非开发工程师,需要掌握的爬虫必备的知识内容,能获取需要的数据即可 ,需要的朋友可以参考下
    2021-06-06
  • python数据类型相关知识扩展

    python数据类型相关知识扩展

    今天带大家学习Python数据类型的扩展知识,文中有非常详细的介绍介代码示例,对正在学习python的小伙伴有很大的帮助,需要的朋友可以参考下
    2021-05-05
  • Django项目创建的图文教程

    Django项目创建的图文教程

    本文主要介绍了Django项目创建的图文教程,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python实用库 PrettyTable 学习笔记

    Python实用库 PrettyTable 学习笔记

    这篇文章主要介绍了Python实用库 PrettyTable 学习笔记,结合实例形式分析了Python表格操作库PrettyTable的安装、使用技巧与相关注意事项,需要的朋友可以参考下
    2019-08-08
  • 5款Python程序员高频使用开发工具推荐

    5款Python程序员高频使用开发工具推荐

    这篇文章主要介绍了5款Python程序员高频使用开发工具,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python3 实现文件批量重命名示例代码

    Python3 实现文件批量重命名示例代码

    在Python中os模块里,os.renames() 方法用于递归重命名目录或文件。这篇文章主要介绍了Python3 文件批量重命名操作示例,需要的朋友可以参考下
    2019-06-06
  • Python实现实时数据采集新型冠状病毒数据实例

    Python实现实时数据采集新型冠状病毒数据实例

    在本篇文章里小编给大家整理了关于Python实现实时数据采集新型冠状病毒数据实例内容,有需要的朋友们可以学习参考下。
    2020-02-02
  • Python中字符串转换为列表的常用方法总结

    Python中字符串转换为列表的常用方法总结

    本文将详细介绍Python中将字符串转换为列表的八种常用方法,每种方法都具有其独特的用途和适用场景,文中的示例代码讲解详细,感兴趣的可以了解下
    2023-11-11
  • python调用java模块SmartXLS和jpype修改excel文件的方法

    python调用java模块SmartXLS和jpype修改excel文件的方法

    这篇文章主要介绍了python调用java模块SmartXLS和jpype修改excel文件的方法,涉及Python调用java模块的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04

最新评论