我对python非常陌生,似乎缺少了一些东西.

我想在pygame显示器上随机绘制圆圈,但前提是圆圈彼此不重叠.

我相信我必须找到所有圆心之间的距离,并且只有在该距离大于圆半径* 2时才绘制它.

我尝试了许多不同的方法,但是都没有成功,但我总是得到相同的结果-重叠绘制的圆圈.

#!/usr/bin/env python

import pygame, random, math

red = (255, 0, 0)

width = 800

height = 600

circle_num = 10

tick = 2

speed = 5

pygame.init()

screen = pygame.display.set_mode((width, height))

class circle():

def __init__(self):

self.x = random.randint(0,width)

self.y = random.randint(0,height)

self.r = 100

def new(self):

pygame.draw.circle(screen, red, (self.x,self.y), self.r, tick)

c = []

for i in range(circle_num):

c.append('c'+str(i))

c[i] = circle()

for j in range(len(c)):

dist = int(math.hypot(c[i].x - c[j].x, c[i].y - c[j].y))

if dist > int(c[i].r*2 + c[j].r*2):

c[j].new()

pygame.display.update()

else:

continue

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

quit()

最佳答案

您没有与其他所有圈子进行核对.我添加了一个变量shouldprint,如果其他圆圈太近,该值将设置为false.

import pygame, random, math

red = (255, 0, 0)

width = 800

height = 600

circle_num = 20

tick = 2

speed = 5

pygame.init()

screen = pygame.display.set_mode((width, height))

class circle():

def __init__(self):

self.x = random.randint(0,width)

self.y = random.randint(0,height)

self.r = 100

def new(self):

pygame.draw.circle(screen, red, (self.x,self.y), self.r, tick)

c = []

for i in range(circle_num):

c.append('c'+str(i))

c[i] = circle()

shouldprint = True

for j in range(len(c)):

if i != j:

dist = int(math.hypot(c[i].x - c[j].x, c[i].y - c[j].y))

if dist < int(c[i].r*2):

shouldprint = False

if shouldprint:

c[i].new()

pygame.display.update()

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

pygame.quit()

quit()

用python随机画多个圆_Python Pygame随机绘制不重叠的圆圈相关推荐

  1. python turtle画彩虹的代码_Python使用turtle绘制国旗,Python图片转换位字符画

    这篇文章主要是整合一些趣味代码,一方面自己对这些内容比较感兴趣,另一方面希望这些代码能提升大家的编程兴趣. 一.Python使用turtle绘制国旗 代码如下: 运行结果如下所示,它是动态绘制过程. ...

  2. python turtle画四叶草的步骤_python turtle工具绘制四叶草的实例分享

    本篇文章介绍了python使用turtle库绘制四叶草的方法,代码很简单,希望对学习python的朋友有帮助. import turtle import time turtle.setup(650., ...

  3. python turtle画有趣的图形_Python turtle库绘制简单图形

    一.简介 Python中的turtle库是一个直观有趣的图形绘制函数库.turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形. 二.简单的图形列举 1.绘制4个不同 ...

  4. python画多个圆_python turtle库画一个方格和圆实例

    python turtle库画一个方格和圆实例 使用python的turtle库画一个方格和圆 打开python编译器,导入turtle库 from turtle import * 首先画一个距离为1 ...

  5. python怎么画三维函数图像_python中如何画三维的图形?

    之前教了大家不少简单的画图方法,有的小伙伴已经想尝试更漂亮的高难度图形.小编找到了一个简单容易上手的分享给大家. 如果需要绘制三维的图形,matlab可以,python同样可以,代码风格也是极其的与m ...

  6. python turtle画房子详细解释_Python turtle画图库画姓名实例

    *****看一下我定义的change()和run()函数****** 绘图坐标体系: 作用:设置主窗体的大小和位置 turtle.setup(width, height, startx, starty ...

  7. python 随机取列表值 重复_python怎么随机取列表的值

    匿名用户 1级 2017-11-05 回答 第一步: 我分析如果从一堆数里随机抽取几个,并且按原来的顺序输出的话,那么至少要随机两次才能完成,第一次随机的值是确定随机几个数,第二次随机是确定随机的值. ...

  8. 用python画渐变的圆_python画环形图的方法

    本文实例为大家分享了python画环形图的具体代码,供大家参考,具体内容如下 import os import pandas as pd import matplotlib.pyplot as plt ...

  9. 用python画多个圆_Python用图例在网格上绘制多个圆

    我想在一个N乘M的网格上画出不同颜色和相同大小的圆.在x,y位置,可以是一个圆或什么都不是.在 我希望每个专栏都有一个x标签(这将是一个星期),和一个ylabel(这将是一个主题).在 现在,我找到了 ...

最新文章

  1. Java Web项目配置环境搭建-如何增加Tomcat服务 Tomcat[内含Tomcat7资源]
  2. Maven中使用tomcat:run 出现错误 org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException...
  3. python统计txt文件中文词频_Python 中文文件统计词频 + 中文词云
  4. 前端学习(1393):多人管理项目13加密实现
  5. 关于谷歌云,你应该知道的一切! | 技术头条
  6. 死于非命的中国亿万富翁们 1
  7. visualize python_安利一个Python大数据分析神器!
  8. Part Six 地理定位API
  9. 小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_18、SpringBoot测试进阶高级篇之MockMvc讲解...
  10. 动态规划精卫填海之路
  11. 虚拟机vBox xp系统无法联网
  12. 有人把李白杜甫一生的旅行足迹做了地图,发现了大事!
  13. 2017 4 自考java_自考00831英语语法2017年4月真题及答案【解析版】
  14. 张氏华孙公 福建省上杭县张氏第一代开基祖宗
  15. MMKV数据存储组件的使用介绍
  16. autojs之多线程-Threads
  17. 关于esp-idf编译时ccache错误导致在libsodium库报poly1305.c.obj类文件找不到的问题
  18. 二进制、八进制、十进制和十六进制的转换
  19. python培训﹣首选马哥
  20. 考驾照选择 AI 教练,心态稳定不会骂人

热门文章

  1. 10 个 GitHub 上超火的 CSS 奇技淫巧项目,找到写 CSS 的灵感!
  2. 96. (GO)不同的二叉搜索树
  3. 遇到多个构造器参数时要考虑使用Builder
  4. gorm一对一 一对多 多对多查询案例
  5. linux sort排序工具和uniq去重工具使用示例
  6. Python报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte s
  7. Python3 replace()实现字符串替换
  8. MySQL连接相关问题(查看及设置连接数)
  9. Java代码示例: 使用reflections工具类获取某接口下所有的实现类
  10. Java栈内存溢出代码实例