Cześć,
W jaki sposób można zrobić odliczanie czasu (np 10 sekund) ?
Z góry dzięki za pomoc.
Cześć,
W jaki sposób można zrobić odliczanie czasu (np 10 sekund) ?
Z góry dzięki za pomoc.
Skorzystaj z http://www.pygame.org/docs/ref/time.html#pygame.time.get_ticks
Pobierasz ticki raz przed rozpoczęciem odliczania (może to być jakiś trigger w grze - przycisk, zdarzenie, cokolwiek). W pętli gry sobie porównujesz bieżące ticki z tickami startowymi. Każdy 1000 z różnicy to jedna sekunda.
start_ticks=pygame.time.get_ticks() #pobranie tickow startowych
while 1: # glowna petla gry
sekundy=(pygame.time.get_ticks()-start_ticks)/1000 #obliczenie ile sekund
if sekundy>10: # jesli naliczylo wiecej niz 10 sekund to wychodzimy z gry
break
print (sekundy) #wypisz ile sekund
Dzięki
Ostatnio szukałem jak napisać w pythonie pygame upływ czasu. Dzięki temu forum powstał poniższy kod, może komuś się przyda.
Kod zegarka z interfejsem graficznym i pozycją myszy.
#By franjo3 2021
import pygame #dla okna i grafiki
import random #chwilowo nie potrzebny generator liczb losowych
import time #dla aktualnego czasu
pygame.init() #inicjacja mogułu - od tej pory tricker zlicza milisekundy
ekran = pygame.display.set_mode((1024, 768)) #nasze okno graficzne rozmiar 1024x768
pygame.font.init() #inicjacja modułu czcionek
#czas=30 chwilowo nie potrzevby
done = False # zmiana na True zakończy pętlę główną
f= pygame.font.SysFont("Arial", 120) #ładujemy czcionkę roboczą arial rozmiar 120
while not done: #pętla główna
for event in pygame.event.get(): #przeszukujemy tablicę zdarzeń pygame
if event.type == pygame.QUIT: # w poszukiwaniu zdarzenia typu pygame.QUIT
done = True #jeśli jest to koniec pętli
pos=pygame.mouse.get_pos() #niech pos trzyma punkt wskaźnika myszy
ekran.fill((0, 0, 0)) #pomaluj ekran na czarno
tx=f.render(str(pos), False, (10,10,170)) #tx to obrazek (renderowany tekst) z wyświetloną pozycją myszy w kolorze cośtam niebieskim
sek=pygame.time.get_ticks()//1000#sek (sekundy) to aktualne milisekundy trickera podzielone całkowicie (do int) przez 1000
dni=sek//(3600*24) #wyodrębniamy ilość dni dzieląc sekundy na 24 godziny
sek=sek%(3600*24) #pomniejszamy ilość sekund odejmując dni zostawiając resztę z dzielenia
godz=sek//3600 # wyodrębniamy godziny dzieląc przez 3600 sekund
sek=sek%3600 #pomniejszamy
mit=sek//60 #minuty dzieląc przez 60
sek=sek%60 #pomniejszamy
#tworzymy tekstową reprezentację danych do wyświetlenia
if (godz<10): g="0"+str(godz)#dodajemy zero do godziny mniejszej niż 10
else: g=str(godz) #string z godziny
g=g+":"#dodajemy dwukropek pomiędzy sekcjami
if (mit<10): m="0"+str(mit)#dodajemy zero przed minutami jeśli mniejsze od 10
else: m=str(mit)
m=m+":"#dodajemy dwukropek pomiędzy sekcjami
if (sek<10): s="0"+str(sek)
else: s=str(sek)
tm=str(dni)+"dni, "+g+m+s#tm to tekst z pełnym składem danych
tt=f.render(tm,False,(200,20,30))#renderujemy tm do obrazka tt na czerwono
sek=int(time.time()) # aktualny czas w sekundach
dni=sek//(3600*24)#dokładnie to samo co wyżej
sek=sek%(3600*24)
godz=sek//3600
sek=sek%3600
mit=sek//60
sek=sek%60
if (godz<10): g="0"+str(godz)
else: g=str(godz)
g=g+":"
if (mit<10): m="0"+str(mit)
else: m=str(mit)
m=m+":"
if (sek<10): s="0"+str(sek)
else: s=str(sek)
tm=str(dni)+"dni, "+g+m+s
tz=f.render(tm,False,(20,200,30))#tz obraz z renderowanym tm na zielono
ekran.blit(tx,(0,0))#wyświetlamy nasze obrazy w odpowiednich miejscach
ekran.blit(tt,(200,400))
ekran.blit(tz,(0,600))
pygame.display.flip()#uwalniamy bufor (wyświetlamy zmiany)
#i od nowa pętla
#NIE uwzględniłem czasu letniego, zimowego więc aktualny czas może się o godzinkę różnić :)
#jeśli zamknięto okno i zdarzenie pygame.QUIT się dopełniło
pygame.font.quit() #kończymy moduł czcionek
pygame.quit()#kończymy moduł pygame i okno się zamyka
#KONIEC [email protected] na konkretne pytania spróbuję odpowiedzieć ale też dopiero zaczynam więc nie zawsze pomogę.