微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在pygame中绘制多个圆圈的最快方法是什么?

如何解决在pygame中绘制多个圆圈的最快方法是什么?

我正在为一个项目制作agario克隆,我想知道在pygame中绘制许多点的最快方法

from pygame import *
import random as rd 

x = rd.randint(100,700)
y = rd.randint(100,500)


# I would like to draw about 50 dots of this type. 
dot = draw.circle(screen,(0,0),(x,y),5)

解决方法

以下是使用pygame绘制圆圈的一些基本代码:

import pygame as pg
import random as rd 

pg.init()  # initialize pygame  
screen = pg.display.set_mode((500,500))  # create main screen

for ctr in range(25):  # 25 circles
    x = rd.randint(50,450)
    y = rd.randint(50,450)
   
    # I would like to draw about 50 dots of this type. 
    dot = pg.draw.circle(screen,(100,200,100),(x,y),15)
    pg.display.update()  # update screen
    
while True:  # main pygame loop,always include this
    for event in pg.event.get(): # required for OS events
      if event.type == pg.QUIT:  # user closed window
         pg.quit()

输出

Circles

,

使用简单的python "for" loop with a "range"的任何简单方法:

当循环迭代时,它执行循环主体的内容,变量i从0递增到 N-1 (即49)。变量i可以是任何有效的变量名,但是对于简单的编号循环,通常使用ijk

from pygame import *
import random as rd 

# Draw 50 dots 
for i in range( 0,50 ):
    x = rd.randint(100,700)
    y = rd.randint(100,500)
    dot = draw.circle(screen,(0,0),5)
,

如果要在主应用程序循环中连续绘制相同的圆,则必须生成随机位置列表:

import pygame as pg
import random as rd 

pg.init()
screen = pg.display.set_mode((800,600))

cpts = []
for i in range(25):
    x = rd.randint(100,500)
    cpts.append((x,y))
    
run = True
while run: 
    for event in pg.event.get(): 
        if event.type == pg.QUIT: 
            run = False

    for cpt in cpts: 
        pg.draw.circle(screen,(255,255,255),cpt,15)
    pg.display.update()

有关最低pygame应用程序的信息,请参见Pygame unresponsive display的答案。

,

我开设了一个点班:

import pandas as pd
df = pd.DataFrame({'time':['2019-10-19 19:23:00','2019-10-19 19:24:00','2019-10-19 19:25:00'],\
'lon':[48.80,48.801,48.8018],\
'lat':[2.13,2.130,2.12],\
'hilbert'=[4578,4577,4521]})
print(df)

然后我制作了一个数组,并生成class Dot(): SIZE = 5 def __init__(self,x,y): self.x = x self.y = y def draw(self): draw.circle(screen,self.color,(self.x,self.y),Dot.SIZE) ,如下所示:

NUMBER_OF_DOTS

,并在dots = [] for i in range(NUMBER_OF_DOTS): x = rd.randint(100,500) dots.append(Dot(x,y)) 循环中用白色填充整个场景后重新绘制:

为True时: screen.fill((255,255,255)) ... 对于点中的点: dot.draw()

整个来源:

while

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。