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创建日历实例
Aug 21 Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 Python
在Python的Django框架中显示对象子集的方法
Jul 21 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Django之PopUp的具体实现方法
Aug 31 Python
python 正则表达式参数替换实例详解
Jan 17 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
详解pycharm自动import所需的库的操作方法
Nov 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 array 的加法操作代码
2010/07/24 PHP
PHP7新特性
2021/03/09 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
工地安全检查制度
2014/02/04 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
战友聚会主持词
2014/04/02 职场文书
妇联主席先进事迹
2014/05/18 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
考察邀请函范文
2015/01/31 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
python 用递归实现通用爬虫解析器
2021/04/16 Python
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
Java 多态分析
2022/04/26 Java/Android