2 개의 스프라이트가 충돌 할 때마다 점수가 1 씩 증가해야하는 게임을 만들고 있습니다. 지금은 점수가 0으로 시작되고 충돌이 발생하면 39로 증가합니다 (때로는 27입니다. 숫자의 변동성으로 인해 초 단위로 증가한다고 생각합니다). 여기에 다른 답변을 읽어 주시면 내가 가지고있는 곳의 문제 일 가능성이 높습니다.Python PyGame 점수 카운터가 1 대신 1 씩 증가합니다.
t = f.render("Score = " + str(score), False, black)
screen.blit(t, (0,0))
for for 루프에 있습니다. 하지만 다른 곳으로 옮기려고했는데 점수가 화면에 전혀 나타나지 않습니다. 여기
는class Tub(Sprite):
def __init__(self):
Sprite.__init__(self)
self.image = image.load("tub.bmp").convert_alpha()
self.image = transform.scale(self.image, (100, 100))
self.rect = self.image.get_rect()
self.rect.x = width/2
self.rect.y = height - 100
def movement(self):
keys = pygame.key.get_pressed()
dist = 5
if keys [pygame.K_LEFT]:
self.rect.x -= dist
if keys [pygame.K_RIGHT]:
self.rect.x += dist
def hit(self, target):
return self.rect.colliderect(target)
class Singlescoop_pink(Sprite):
def __init__(self):
Sprite.__init__(self)
self.image = image.load("singlescoop_pink.bmp").convert_alpha()
self.image = transform.scale(self.image, (100, 100))
self.rect = self.image.get_rect()
self.rect.x = random.randint(0, width-100) #random x position, minus 100 so image does not go off screen
self.rect.y = -600 #start off screen so starting point to fall down is not visible
def movement(self):
self.rect.y += 5
if self.rect.y > height:
self.kill()
tub = Tub()
sspink = Singlescoop_pink()
sprites = pygame.sprite.RenderPlain(tub, sspink)
score = 0
def game_loop():
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
sys.exit()
if tub.hit(sspink):
sspink.kill()
global score
score += 1
tub.movement()
sspink.movement()
screen.fill(white)
t = f.render("Score = " + str(score), False, black)
screen.blit(t, (0,0))
sprites.update()
sprites.draw(screen)
display.update()
clock.tick(60)
game_loop()
하지만 사용 파이 게임을를 havent : 우리가 처음에 다음과 같이 우리의 그룹을 구성하는 경우
는 사실, 당신은 더 이상 (우리가 그것을 멀리 추상화) 모두에서
sspink
필요가 없습니다 전에는 충돌을 어떻게 처리하는지 모르겠지만 초를 늘리는 것과 관련이 없을 수도 있지만 스프라이트가 둘 이상의 프레임에 대해 접촉하고있을 수 있습니다.게임이 60fps로 실행되는 경우 기본 게임 루프가 초당 60 회 실행되므로 스프라이트가 여러 프레임에 걸쳐 접촉하여 초당 여러 번 점수를 증가시킬 수 있습니다. – RichSmith정확히 문제였습니다. 고맙습니다! – Zanne