К переменной score не добавляется единица. Как исправить это?
import pygame
import time
from pygame import time
pygame.init()
pygame.mixer.init()
pygame.mixer.init()
pygame.mixer.music.load('sounds/bg.mp3')
pygame.mixer.music.play()
pygame.mixer.music.set_volume(0.2)
clock = pygame.time.Clock()
window = pygame.display.set_mode((1280, 720))
runned = True
color_bg = 0
pygame.display.set_caption('My Game')
icon = pygame.image.load('png/icon.png').convert_alpha()
bg = pygame.image.load('png/bg.jpg').convert_alpha()
restart_button_BIG = pygame.image.load('png/restart_button.png')
restart_button = pygame.transform.rotozoom(restart_button_BIG, 0 , 0.6)
pygame.display.set_icon(icon)
#Переменные
fireball_BIG = pygame.image.load('png/fireball.png').convert_alpha()
fireball = pygame.transform.rotozoom(fireball_BIG, 0, 0.15)
player_BIG = pygame.image.load('png/right/1.png').convert_alpha()
player = pygame.transform.rotozoom(player_BIG, 0, 0.5)
player_cord = [500, 475]
sound = pygame.mixer.Sound('sounds/bg.mp3')
gameplay = True
right_2 = pygame.image.load('png/right/2.png').convert_alpha()
right_3 = pygame.image.load('png/right/3.png').convert_alpha()
right_4 = pygame.image.load('png/right/4.png').convert_alpha()
right_2_SMALL = pygame.transform.rotozoom(right_2, 0, 0.5)
right_3_SMALL = pygame.transform.rotozoom(right_3, 0, 0.5)
right_4_SMALL = pygame.transform.rotozoom(right_4, 0, 0.5)
left_2 = pygame.image.load('png/left/2.png').convert_alpha()
left_3 = pygame.image.load('png/left/3.png').convert_alpha()
left_4 = pygame.image.load('png/left/4.png').convert_alpha()
left_2_SMALL = pygame.transform.rotozoom(left_2, 0, 0.5)
left_3_SMALL = pygame.transform.rotozoom(left_3, 0, 0.5)
left_4_SMALL = pygame.transform.rotozoom(left_4, 0, 0.5)
fireball_cord = [0, 505]
fireball_speed = 10
score = 0
player_anim_count = 1
key = pygame.key.get_pressed()
is_jump = False
jump_count = 7
Fire_Run = True
label = pygame.font.Font('fonts/defeat.otf', 100)
lose_label = label.render('Вы проиграли!', False, 'white')
restart_label = label.render('Играть снова', False, 'blue')
score_label_text = label.render('Score:', False, 'blue')
score_label = label.render(str(score), False, 'blue')
restart_button_rect = restart_button.get_rect(topleft=(250, 300))
#Функции
pygame.time.set_timer(pygame.USEREVENT, 20000)
def MoveRight():
global player_anim_count
global player_cord
global player
player_cord[0] += 19
if player_anim_count == 4:
player_anim_count = 1
else:
player_anim_count += 1
if player_anim_count == 2:
player = right_2_SMALL
elif player_anim_count == 3:
player = right_3_SMALL
elif player_anim_count == 4:
player = right_4_SMALL
def MoveLeft():
global player_anim_count
global player_cord
global player
if player_anim_count == 4:
player_anim_count = 1
else:
player_anim_count += 1
if player_anim_count == 2:
player = left_2_SMALL
elif player_anim_count == 3:
player = left_3_SMALL
elif player_anim_count == 4:
player = left_4_SMALL
player_cord[0] -= 19
while runned:
window.blit(bg, (0, 0))
window.blit(fireball, (fireball_cord))
window.blit(player, (player_cord))
window.blit(score_label_text, (0,0))
window.blit(score_label, (250,0))
player_rect = player.get_rect(topleft=(player_cord))
fireball_rect = fireball.get_rect(topleft=(fireball_cord))
if fireball_rect.colliderect(player_rect):
gameplay = False
if gameplay:
if player_cord[1] > 475:
player_cord[1] = 475
keys = pygame.key.get_pressed()
if fireball_cord[0] < 1250:
score += 1
fireball_cord[0] += fireball_speed
else:
fireball_cord[0] = 0
if not is_jump:
if keys[pygame.K_SPACE]:
is_jump = True
if is_jump:
if jump_count >= -7:
if jump_count > 0:
player_cord[1] -= (jump_count ** 2) / 1
else:
player_cord[1] += (jump_count ** 2) / 1
jump_count -= 1
else:
is_jump = False
jump_count = 7
if keys[pygame.K_d]:
MoveRight()
elif keys[pygame.K_a]:
MoveLeft()
else:
window.fill((59, 54, 61))
window.blit(lose_label, (350, 100))
window.blit(restart_button, (restart_button_rect))
window.blit(restart_label, (350,400))
mouse = pygame.mouse.get_pos()
mouse_pressed = pygame.mouse.get_pressed()[0]
if restart_button_rect.collidepoint(mouse) and mouse_pressed:
player_cord = [500, 475]
fireball_cord = [0, 505]
fireball_speed = 10
gameplay = True
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.USEREVENT:
fireball_speed += 5
elif event.type == pygame.QUIT:
runned = False
pygame.quit()
clock.tick(20)
Ответы (1 шт):
Автор решения: wave_or_corpuscula
→ Ссылка
Как я понимаю, вопрос в том, почему значение переменной score
не изменяется на экране. Сразу можно заметить, что вы, создаете label
:
score_label = label.render(str(score), False, 'blue')
Размещаете его на экране:
window.blit(score_label_text, (0,0))
И больше он не изменяется. Чтобы изменение переменной score
отобразилось на экране, нужно, после каждого изменения score
перерисовывать ваш label
.