python pygame实现球球大作战


Posted in Python onNovember 25, 2019

本文实例为大家分享了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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
Python中正则表达式的用法实例汇总
Aug 18 Python
在Python中操作字符串之startswith()方法的使用
May 20 Python
RC4文件加密的python实现方法
Jun 30 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
Sanic框架安装与简单入门示例
Jul 16 Python
在python中pandas的series合并方法
Nov 12 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
python 标准差计算的实现(std)
Jul 29 Python
Python实现打印实心和空心菱形
Nov 23 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 Python
pytorch中的 .view()函数的用法介绍
Mar 17 Python
Python内置加密模块用法解析
Nov 25 #Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 #Python
Django项目基础配置和基本使用过程解析
Nov 25 #Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 #Python
python找出列表中大于某个阈值的数据段示例
Nov 24 #Python
python对Excel按条件进行内容补充(推荐)
Nov 24 #Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 #Python
You might like
目录,文件操作详谈―PHP
2006/11/25 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
JS中数据结构之栈
2019/01/01 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
学习python (2)
2006/10/31 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
大学生社团活动总结
2014/04/26 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
社区敬老月活动总结
2015/05/07 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS