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 29 Python
Python实现的计数排序算法示例
Nov 29 Python
vscode 远程调试python的方法
Dec 01 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
django将数组传递给前台模板的方法
Aug 06 Python
python 协程中的迭代器,生成器原理及应用实例详解
Oct 28 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
python -v 报错问题的解决方法
Sep 15 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
python制作抽奖程序代码详解
Jan 15 Python
python+selenium实现12306模拟登录的步骤
Jan 21 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
模仿OSO的论坛(二)
2006/10/09 PHP
需要发散思维学习PHP
2009/06/29 PHP
PHP读取xml方法介绍
2013/01/12 PHP
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Python入门篇之面向对象
2014/10/20 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
Python工厂函数用法实例分析
2018/05/14 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
python基于event实现线程间通信控制
2020/01/13 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
中学生旷课检讨书模板
2014/10/08 职场文书
圣诞节开幕词
2015/01/29 职场文书
公司市场部岗位职责
2015/04/15 职场文书
欠款起诉书范文
2015/05/19 职场文书
旅游投诉信范文
2015/07/02 职场文书
js实现上传图片到服务器
2021/04/11 Javascript
python实现自动清理文件夹旧文件
2021/05/10 Python
Python基础之进程详解
2021/05/21 Python