-
Notifications
You must be signed in to change notification settings - Fork 0
/
distancia1.py
122 lines (102 loc) · 3.22 KB
/
distancia1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import pygame
import sys
from pygame.locals import *
from tkinter import Tk, simpledialog
import pickle
import math
# Configurações da tela
WIDTH = 800
HEIGHT = 600
# Cores
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# Inicialização do Pygame
pygame.init()
# Inicialização da tela
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Space Marker")
clock = pygame.time.Clock()
# Lista para armazenar as estrelas marcadas
stars = []
def save_stars():
try:
with open('stars.pkl', 'wb') as f:
pickle.dump(stars, f)
except IOError:
print("Erro ao salvar as marcações.")
def load_stars():
global stars
try:
with open('stars.pkl', 'rb') as f:
stars = pickle.load(f)
except FileNotFoundError:
print("Arquivo de marcações não encontrado.")
stars = []
def delete_stars():
global stars
stars = []
def get_star_name():
root = Tk()
root.withdraw()
star_name = simpledialog.askstring("Nome da Estrela", "Digite o nome da estrela:")
return star_name
def calculate_distance(star1, star2):
x1, y1 = star1[0]
x2, y2 = star2[0]
distance = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
return distance
def draw_stars():
for i in range(len(stars)):
pos, name = stars[i]
pygame.draw.circle(screen, RED, pos, 5)
font = pygame.font.SysFont(None, 20)
text = font.render(name, True, RED)
text_rect = text.get_rect(center=pos)
screen.blit(text, text_rect)
if i > 0:
prev_pos, _ = stars[i-1]
pygame.draw.line(screen, RED, prev_pos, pos, 1)
# Exibir distâncias entre as marcações
for i in range(1, len(stars)):
star1 = stars[i-1]
star2 = stars[i]
distance = calculate_distance(star1, star2)
pos = (star1[0][0] + (star2[0][0] - star1[0][0]) // 2, star1[0][1] + (star2[0][1] - star1[0][1]) // 2)
font = pygame.font.SysFont(None, 20)
text = font.render(f"{distance:.2f}", True, RED)
text_rect = text.get_rect(center=pos)
screen.blit(text, text_rect)
# Carregar marcações salvas (se existirem)
load_stars()
running = True
while running:
# Limpeza da tela
screen.fill(WHITE)
for event in pygame.event.get():
if event.type == QUIT:
# Salvar as marcações antes de fechar
save_stars()
running = False
elif event.type == MOUSEBUTTONDOWN and event.button == 1:
# Capturar a posição do clique do mouse
mouse_pos = pygame.mouse.get_pos()
# Abrir caixa de diálogo para obter o nome da estrela
star_name = get_star_name()
if star_name:
if not star_name.strip():
star_name = "Desconhecido"
stars.append((mouse_pos, star_name))
elif event.type == KEYDOWN:
if event.key == K_F10:
save_stars()
elif event.key == K_F11:
load_stars()
elif event.key == K_F12:
delete_stars()
draw_stars()
# Atualização da tela
pygame.display.flip()
clock.tick(60)
# Finalização do Pygame
pygame.quit()
sys.exit()