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遍历删除字典里值为空的元素报错问题
Sep 11 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
python抓取京东小米8手机配置信息
Nov 13 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
python实现字符串和数字拼接
Mar 02 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
Python一行代码实现自动发邮件功能
May 30 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/10/09 PHP
php引用传值实例详解学习
2013/11/06 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
PHP加密解密实例分析
2015/12/25 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
js实现数组转换成json
2015/06/26 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
python多线程用法实例详解
2015/01/15 Python
python微信公众号开发简单流程
2018/03/23 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
Python实现Linux监控的方法
2019/05/16 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
美术专业个人自我评价
2014/01/18 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
个人综合鉴定材料
2014/05/23 职场文书
安全承诺书格式范本
2015/04/28 职场文书