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编写暴力破解FTP密码小工具
Nov 19 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
python脚本替换指定行实现步骤
Jul 11 Python
Python读取properties配置文件操作示例
Mar 29 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
深入理解Django自定义信号(signals)
Oct 15 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
Python类如何定义私有变量
Feb 03 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
Python pyecharts绘制条形图详解
Apr 02 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/02/18 PHP
永不消失的title提示代码
2007/02/15 Javascript
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[01:46]新英雄登场
2019/09/10 DOTA
Python3计算三角形的面积代码
2017/12/18 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
python自动识别文本编码格式代码
2019/12/26 Python
幼儿师范毕业生自荐信
2013/11/09 职场文书
师范应届生求职信
2013/11/15 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
五年级学生评语
2014/04/22 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
教师听课学习心得体会
2016/01/15 职场文书
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server