如何解决为什么我在pygame上的圈子不断生成和重新生成?
运行此程序时,我希望游戏在随机位置产生一个较大的可移动点和数百个较小的不可移动点。但是,当我运行程序时,较小的点将继续产生和重新产生。我认为这与pygame.display.update()函数有关,但我不确定。我该如何解决这个问题?
from pygame import *
import random as rd
p_1_x = 200
p_1_y = 200
p_1_change_x = 0
init()
screen = display.set_mode((800,600))
def p_1(x,y):
player_1 = draw.circle(screen,(0,0),(x,y),15)
def drawwing():
for i in range(0,250):
x = rd.randint(100,700)
y = rd.randint(100,500)
dot = draw.circle(screen,(55,255,155),5)
while True:
for events in event.get():
if events.type == QUIT:
quit()
if events.type == KEYDOWN:
if events.key == K_RIGHT:
p_1_change_x = 1
if events.key == K_LEFT:
p_1_change_x = -1
if events.type == KEYUP:
if events.key == K_RIGHT or K_LEFT:
p_1_change_x = 0
p_1_change_y = 0
screen.fill((255,255))
p_1_x += p_1_change_x
p_1(p_1_x,p_1_y)
display.update()
drawwing()
display.update()
解决方法
如果您想要固定点,请改用以下类似方法:
dots = list((rd.randint(100,700),rd.randint(100,500)) for i in range(0,250))
def drawwing():
for x,y in dots:
draw.circle(screen,(55,255,155),(x,y),5)
,
我开设了一个点班:
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,700)
y = rd.randint(100,500)
dots.append(Dot(x,y))
并在while
循环中,用白色填充整个场景后,重新绘制所有点,如下所示:
while True:
screen.fill((255,255))
...
for dot in dots:
dot.draw()
快乐编码 https://github.com/peymanmajidi/Ball-And-Dots-Game__Pygame
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。