day 14 puzzle 2 (python)
This commit is contained in:
parent
ab60a501f5
commit
befa6403ba
75
day14.py
Normal file
75
day14.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import re
|
||||||
|
import pygame
|
||||||
|
|
||||||
|
with open("res/inputs/day14.txt", "r") as f:
|
||||||
|
lines = f.read().split("\n")
|
||||||
|
|
||||||
|
bots = []
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
m = re.match("^p=(.*?),(.*?) v=(.*?),(.*?)$", line)
|
||||||
|
bot = {
|
||||||
|
"pos": {
|
||||||
|
"x": int(m.group(1)),
|
||||||
|
"y": int(m.group(2)),
|
||||||
|
},
|
||||||
|
"vel": {
|
||||||
|
"x": int(m.group(3)),
|
||||||
|
"y": int(m.group(4)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bots.append(bot)
|
||||||
|
|
||||||
|
W = 101
|
||||||
|
H = 103
|
||||||
|
pygame.init()
|
||||||
|
win = pygame.display.set_mode([W, H])
|
||||||
|
|
||||||
|
def display():
|
||||||
|
win.fill(0)
|
||||||
|
for bot in bots:
|
||||||
|
win.set_at((bot["pos"]["x"], bot["pos"]["y"]), (255, 255, 255))
|
||||||
|
|
||||||
|
pygame.display.flip()
|
||||||
|
|
||||||
|
def move(f):
|
||||||
|
for bot in bots:
|
||||||
|
bot["pos"]["x"] = (bot["pos"]["x"] + bot["vel"]["x"] * f) % W
|
||||||
|
bot["pos"]["y"] = (bot["pos"]["y"] + bot["vel"]["y"] * f) % H
|
||||||
|
|
||||||
|
clock = pygame.time.Clock()
|
||||||
|
running = True
|
||||||
|
step = 0
|
||||||
|
update = True
|
||||||
|
auto = True
|
||||||
|
|
||||||
|
while running:
|
||||||
|
for event in pygame.event.get():
|
||||||
|
if event.type == pygame.QUIT:
|
||||||
|
running = False
|
||||||
|
elif event.type == pygame.KEYDOWN:
|
||||||
|
if event.key == pygame.K_ESCAPE:
|
||||||
|
running = False
|
||||||
|
elif event.key == pygame.K_RIGHT:
|
||||||
|
step += 1
|
||||||
|
move(1)
|
||||||
|
update = True
|
||||||
|
elif event.key == pygame.K_LEFT:
|
||||||
|
step -= 1
|
||||||
|
move(-1)
|
||||||
|
update = True
|
||||||
|
elif event.key == pygame.K_SPACE:
|
||||||
|
auto = not auto
|
||||||
|
|
||||||
|
if auto:
|
||||||
|
move(1)
|
||||||
|
step += 1
|
||||||
|
update = True
|
||||||
|
|
||||||
|
if update:
|
||||||
|
print(step)
|
||||||
|
pygame.display.set_caption(f"Day 14 - step {step} - {clock.get_fps():.2f}fps")
|
||||||
|
display()
|
||||||
|
update = False
|
||||||
|
|
||||||
|
clock.tick(20)
|
Loading…
Reference in New Issue
Block a user