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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
Python批量查询域名是否被注册过
Jun 21 Python
python实现给微信公众号发送消息的方法
Jun 30 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
Jan 22 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
python实现ping命令小程序
Dec 28 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
提问的智慧
2006/10/09 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
python实现通过shelve修改对象实例
2014/09/26 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
Python如何实现动态数组
2019/11/02 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
传媒专业推荐信范文
2013/11/23 职场文书
护士长竞聘书
2014/03/31 职场文书
大学课外活动总结
2014/07/09 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
大学生逃课检讨书
2015/05/04 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
社区安全温馨提示语
2015/07/14 职场文书