Так как hashcode всегда возвращает число, он всегда быстр, чтобы получить объект, используя число, а не буквенный ключ. Как это будет? Предположим, мы создали новый объект, передав некоторое значение, которое уже доступно в каком-то другом объекте. Теперь новый объект будет возвращать одно и то же значение хэша как и для другого объекта, потому что переданное значение будет таким же. Когда возвращается одно и то же значение хеш-функции, JVM будет переходить на один и тот же адрес памяти каждый раз, и если в случае присутствия более одного объекта для одного и того же хеш-значения, он будет использовать метод equals () для идентификации правильного объекта.
На этой странице вы найдете то, что ищете http://www.pygame.org/docs/ref/time.html#pygame.time.get_ticks Вы загружаете тики один раз перед началом обратный отсчет (который может быть триггером в игре - ключевым событием, что угодно). Например:
start_ticks=pygame.time.get_ticks() #starter tick
while mainloop: # mainloop
seconds=(pygame.time.get_ticks()-start_ticks)/1000 #calculate how many seconds
if seconds>10: # if more than 10 seconds close the game
break
print (seconds) #print how many seconds
Это на самом деле довольно просто. Спасибо Pygame за создание простой библиотеки!
import pygame
x=0
while x < 10:
x+=1
pygame.time.delay(1000)
Вот и все! Получайте удовольствие от pygame!
Есть несколько способов сделать это - вот один из них. Насколько я знаю, у Python нет механизма прерываний.
import time, datetime
timer_stop = datetime.datetime.utcnow() +datetime.timedelta(seconds=10)
while True:
if datetime.datetime.utcnow() > timer_stop:
print "timer complete"
break
pygame.time.Clock.tick
возвращает время в миллисекундах с момента последнего вызова clock.tick
(время деления , dt
), поэтому вы можете использовать его для увеличения или уменьшения переменная таймера.
import pygame as pg
def main():
pg.init()
screen = pg.display.set_mode((640, 480))
font = pg.font.Font(None, 40)
gray = pg.Color('gray19')
blue = pg.Color('dodgerblue')
# The clock is used to limit the frame rate
# and returns the time since last tick.
clock = pg.time.Clock()
timer = 10 # Decrease this to count down.
dt = 0 # Delta time (time since last tick).
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
timer -= dt
if timer <= 0:
timer = 10 # Reset it to 10 or do something else.
screen.fill(gray)
txt = font.render(str(round(timer, 2)), True, blue)
screen.blit(txt, (70, 70))
pg.display.flip()
dt = clock.tick(30) / 1000 # / 1000 to convert to seconds.
if __name__ == '__main__':
main()
pg.quit()
Еще один простой способ - просто использовать систему событий pygame.
Вот простой пример:
import pygame
pygame.init()
screen = pygame.display.set_mode((128, 128))
clock = pygame.time.Clock()
counter, text = 10, '10'.rjust(3)
pygame.time.set_timer(pygame.USEREVENT, 1000)
font = pygame.font.SysFont('Consolas', 30)
while True:
for e in pygame.event.get():
if e.type == pygame.USEREVENT:
counter -= 1
text = str(counter).rjust(3) if counter > 0 else 'boom!'
if e.type == pygame.QUIT: break
else:
screen.fill((255, 255, 255))
screen.blit(font.render(text, True, (0, 0, 0)), (32, 48))
pygame.display.flip()
clock.tick(60)
continue
break
[/g0]