Você está aqui: Python ::: Pygame ::: Animação, Animações, Técnicas de Animação |
Como criar um relógio analógico no Pygame - Código completo com variáveis e comentários em portuguêsQuantidade de visualizações: 1247 vezes |
Nesta dica mostrarei um código para a criação de um relógio analógico completo em Python, com comentários detalhados e fácil de entender. Veja a imagem:![]() Por simplicidade, eu mantive a mesma cor para todos os elementos da animação e deixei somente o básico mesmo, para que você possa se concentrar nas partes mais importantes. Neste código você aprenderá como definir o tamanho, título e cor de fundo para uma janela do Pygame do Python. Aprenderá também como definir a quantidade de frames por segundo para a animação, assim como controlar os disparos do timer pygame.time.Clock(). Por fim, o código mostra como calcular o ângulo dos ponteiros das horas, minutos e segundos e efetuar o desenho das retas saindo do centro do círculo. Você sabia, por exemplo, que o ângulo de 45 graus corresponde exatamente à hora 1:30hs? Em vários exemplos de relógios analógicos na internet, o ponteiro das horas fica preso à uma determinada hora, aguardando o ponteiro dos segundos completar um giro completo. No código que apresento aqui, eu obtive a hora atual como um decimal, o que faz com que o ponteiro das horas mostre a posição real da hora, como um relógio analógico do mundo real. Para estudantes de matemática, engenharia e física, este código é uma boa aplicação da técnica de se converter coordenadas polares para coordenadas cartesianas. Eis o código completo para o relógio analógico. Boa diversão. # vamos importar as bibliotecas necessárias import pygame, sys from pygame.locals import * import math from datetime import datetime # função que faz a correção dos ângulos def corrigir_angulo(angulo): return abs(angulo % 360) # inicializa a biblioteca pygame.init() # quantidade de frames por segundo FPS = 30 # construímos o timer timer = pygame.time.Clock() # obtém a superfície do jogo e define o tamanho da tela janela = pygame.display.set_mode((600, 400)) # vamos definir o título da janela do jogo pygame.display.set_caption('Relógio Analógico no Pygame') # vamos definir alguns parâmetros fonte = pygame.font.Font(None, 36) VERMELHO = (200, 0, 0) BRANCO = (255, 255, 255) raio = 150 x_inicial = 300 y_inicial = 200 distancia_aro = 20 # e aqui nós entramos no loop do game while True: # vamos pintar a tela toda de branco janela.fill(BRANCO) # monitoramos os eventos for evento in pygame.event.get(): # se o evento foi um pedido para sair if evento.type == QUIT: # fechamos a tela do jogo pygame.quit() # e saimos do programa sys.exit() # vamos desenhar um circulo não preenchido (maior) pygame.draw.circle(janela, VERMELHO, (x_inicial, y_inicial), raio, 2) # vamos desenhar um circulo não preenchido (menor) pygame.draw.circle(janela, VERMELHO, (x_inicial + 1, y_inicial + 1), 5, 0) # vamos desenhar os números do relório (1-12) for n in range(1, 13): # calcula o ângulo dessa hora angulo = math.radians((n * (360 / 12)) - 90) # agora convertemos o ângulo e o raio para coordenadas cartesianas if len(str(n)) > 1: x = math.cos(angulo) * (raio - distancia_aro) - 18 else: x = math.cos(angulo) * (raio - distancia_aro) - 10 y = math.sin(angulo) * (raio - distancia_aro) - 10 texto_numero = fonte.render(str(n), True, VERMELHO) janela.blit(texto_numero, (x_inicial + x, y_inicial + y)) # vamos obter as horas, minutos e segundos atuais hoje = datetime.today() horas = hoje.hour % 12 |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
C - Como calcular a massa de um corpo dada sua energia cinética e sua velocidade usando a linguagem C |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |