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实现简单QQ单用户机器人的方法
Jul 03 Python
python中的二维列表实例详解
Jun 19 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
python turtle库画一个方格和圆实例
Jun 27 Python
python移位运算的实现
Jul 15 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
python统计指定目录内文件的代码行数
Sep 19 Python
python日期与时间戳的各种转换示例
Feb 12 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
django使用channels实现通信的示例
Oct 19 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 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 快速排序算法详解
2014/11/10 PHP
Javascript delete 引用类型对象
2013/11/01 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
Python语法分析之字符串格式化
2019/06/13 Python
pandas计数 value_counts()的使用
2019/06/24 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
Python简单实现区域生长方式
2020/01/16 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
公司活动策划方案
2014/01/13 职场文书
上班看电影检讨书
2014/02/12 职场文书
暑期研修感言
2014/02/17 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
质量主管工作职责
2014/09/26 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
楚门的世界观后感
2015/06/03 职场文书
春晚观后感
2015/06/11 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
导游词之山海关
2019/12/10 职场文书
七年级作文之下雨天
2019/12/23 职场文书