如何解决在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()
输出
,使用简单的python "for" loop with a "range"的任何简单方法:
当循环迭代时,它执行循环主体的内容,变量i
从0递增到 N-1 (即49)。变量i
可以是任何有效的变量名,但是对于简单的编号循环,通常使用i
,j
和k
。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。