attempt to make compatible with fast PCs

This commit is contained in:
cecilkorik 2024-01-31 22:18:16 -05:00
parent b20616146d
commit 7bc1c13a75

View file

@ -8,24 +8,36 @@ import random
pygame.init() pygame.init()
def handle_keys(keys):
global bounce, speed_player, trails, dir_player, color_player repeat = 0
def handle_keys(keys, elapsed):
global bounce, speed_player, trails, dir_player, color_player, repeat
def repeatdelay(wait):
global repeat
repeat += elapsed
if repeat == elapsed:
return True
if repeat >= wait:
repeat = 0
return True
return False
for key in keys: for key in keys:
if key == K_b: if key == K_b:
bounce = not bounce bounce = not bounce
elif key == K_q: elif key == K_q:
sys.exit(0) sys.exit(0)
elif key == K_c: elif key == K_c and repeatdelay(0.2):
color_player = (random.randint(0,255), random.randint(0,255), random.randint(0,255)) color_player = (random.randint(0,255), random.randint(0,255), random.randint(0,255))
elif key == K_t: elif key == K_t and repeatdelay(1.0):
trails = not trails trails = not trails
elif key == K_UP: elif key == K_UP and repeatdelay(0.02):
speed_player += 0.01 speed_player += 0.05
elif key == K_DOWN: elif key == K_DOWN and repeatdelay(0.02):
speed_player -= 0.01 speed_player -= 0.05
elif key == K_LEFT: elif key == K_LEFT and repeatdelay(0.02):
dir_player -= (math.pi / 180.0) dir_player -= (math.pi / 180.0)
elif key == K_RIGHT: elif key == K_RIGHT and repeatdelay(0.02):
dir_player += (math.pi / 180.0) dir_player += (math.pi / 180.0)
def move(coords, dir, mag): def move(coords, dir, mag):
@ -57,6 +69,7 @@ trails = False
scr.fill((0,0,0)) scr.fill((0,0,0))
last_frame = pygame.time.get_ticks()
keys = [] keys = []
while True: while True:
@ -69,12 +82,15 @@ while True:
pass pass
else: else:
keys += [ev.key] keys += [ev.key]
pygame.time.wait(1)
handle_keys(keys) elapsed_ms = pygame.time.get_ticks() - last_frame
elapsed = elapsed_ms / 1000.0
last_frame = pygame.time.get_ticks()
handle_keys(keys, elapsed)
pygame.event.pump() pygame.event.pump()
loc_new = move(loc_player, dir_player, speed_player) loc_new = move(loc_player, dir_player, speed_player * 10.0 * elapsed)
if loc_new[0] < 5: if loc_new[0] < 5:
if not bounce: if not bounce:
@ -98,7 +114,7 @@ while True:
dir_player = bouncedir(0, dir_player) dir_player = bouncedir(0, dir_player)
if bounce: if bounce:
loc_new = move(loc_player, dir_player, speed_player) loc_new = move(loc_player, dir_player, speed_player * 10.0 * elapsed)
if not trails: if not trails:
pygame.draw.circle(scr, (0,0,0), loc_player, 2, 1) pygame.draw.circle(scr, (0,0,0), loc_player, 2, 1)