如何解决Pygame - 如何优化每个像素的填充 - 一个像素一个像素
我目前正在编写“幻想地图创建者”。因此,用户处于海洋背景上,并且可以通过圆形光标添加部分陆地。 因此,每次用户保持点击鼠标并移动光标时,它都会绘制该区域。
目前我正在逐个像素地绘制光标区域。我这样做是因为该区域中的每个像素都具有与柏林噪声不同的 RGB 值。
我的问题是,如果我的光标在宽度和高度上超过 100 像素,则根据要一个一个填充的像素数,填充速度会减慢。
那么我的问题是,我怎样才能获得优化的填充?
#This function is called when the user remains clicked on his mouse button
def manage_click(toolbar,layers,land):
click = True
while click:
for event in pygame.event.get():
if event.type == MOUSEMOTION:
print_circle_mouse(event.pos) #PRINT THE CURSOR
land.add_land(mouse_position=event.pos,circle_size=100,color_set=SET_COLOR_PAPYRUS) #METHOD FOR ADD LAND
display_layers(toolbar,layers)
if event.type == MOUSEBUTTONUP:
click = False
def add_land(self,mouse_position,circle_size,color_set):
pxarray = pygame.PixelArray(self.bg_surface)
radius = circle_size // 2
for i in range(circle_size):
for j in range(circle_size):
pos_x =(mouse_position[0] - radius) + i
pos_y =(mouse_position[1] - radius) + j
#FirsT I CHECK IF I'M IN THE SURFACE
if pos_x < self.shape[0] and pos_x > 0 and pos_y < self.shape[1] and pos_y > 0 :
#SECOND I CHECK IF THE PIXEL IS ALREADY FILL (1 IS FOR SAY "OK,PIXEL IS FILL)
if self.tab_map[pos_x][pos_y] != 1:
#BASE_MAP IS AN ARRAY CONTAINING THE VALUES RESULTING FROM A PERLIN NOISE REDUCED TO 2 DIGITS AFTER THE COMMA
#COLOR_SET IS A DICT CONTAINING THE DIFFERENT VALUES FROM BASE_MAP AS KEY AND HAVING THE ASSOCIATED RGB COLOR AS VALUES
color = color_set[self.base_map[pos_x][pos_y]]
pxarray[pos_x,pos_y] = color
self.tab_map[pos_x][pos_y] = 1
如上例所示,我想确定每个像素的颜色以创建“逼真”的纹理。
感谢您的帮助!如果我忘记了什么,请告诉我 ;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。