diff --git a/bingo.py b/bingo.py new file mode 100644 index 0000000..b7dcaff --- /dev/null +++ b/bingo.py @@ -0,0 +1,55 @@ +import glob +from PIL import Image +from random import randrange +from uuid import uuid4 + +class Bingo: + """Class which allows creation and cleanup of F1 bingo card images.""" + def __init__(self): + self.LAYOUT_WIDTH = 88 + self.X_OFFSET = 10 + self.Y_OFFSET = 110 + self.SQUARES_PATH = "bingo_images/squares/*.png" + self.FREE_SQUARE_PATH = "bingo_images/free_space.png" + self.BLANK_CARD_PATH = "bingo_images/card_blank.png" + self.TEMP_FOLDER = "bingo_images/temp/" + + self.square_files = glob.glob(self.SQUARES_PATH) + + def get_card(self): + used_files = set() + + with Image.open(self.BLANK_CARD_PATH) as card_img: + card_img.load() + card_img = card_img.convert('RGBA') + + # Fill the grid + for y in range(5): + for x in range(5): + square_file = "" + # If this is the center square, use the free square + if x == 2 and y == 2: + square_file = self.FREE_SQUARE_PATH + + # otherwise, find a random file that hasn't been used yet + else: + rand_file_idx = randrange(len(self.square_files)) + while rand_file_idx in used_files: + rand_file_idx = randrange(len(self.square_files)) + + square_file = self.square_files[rand_file_idx] + used_files.add(rand_file_idx) + + with Image.open(square_file) as square: + + position = (self.X_OFFSET + (x * self.LAYOUT_WIDTH), + self.Y_OFFSET + (y * self.LAYOUT_WIDTH)) + + card_img.paste(square, position, square) + + # Write image to temp file + outfile = "".join((self.TEMP_FOLDER, str(uuid4()), ".png")) + print(f"{outfile=}") + card_img.save(outfile) + return outfile + diff --git a/bingo_images/card_blank.png b/bingo_images/card_blank.png new file mode 100644 index 0000000..122f275 Binary files /dev/null and b/bingo_images/card_blank.png differ diff --git a/bingo_images/card_blank.xcf b/bingo_images/card_blank.xcf new file mode 100644 index 0000000..c52cbe4 Binary files /dev/null and b/bingo_images/card_blank.xcf differ diff --git a/bingo_images/free_space.png b/bingo_images/free_space.png new file mode 100644 index 0000000..f0b151b Binary files /dev/null and b/bingo_images/free_space.png differ diff --git a/bingo_images/squares/a_driver_does_no_laps.png b/bingo_images/squares/a_driver_does_no_laps.png new file mode 100644 index 0000000..da1dd06 Binary files /dev/null and b/bingo_images/squares/a_driver_does_no_laps.png differ diff --git a/bingo_images/squares/aerorake.png b/bingo_images/squares/aerorake.png new file mode 100644 index 0000000..1254166 Binary files /dev/null and b/bingo_images/squares/aerorake.png differ diff --git a/bingo_images/squares/anyone_but_max_p1.png b/bingo_images/squares/anyone_but_max_p1.png new file mode 100644 index 0000000..2e12731 Binary files /dev/null and b/bingo_images/squares/anyone_but_max_p1.png differ diff --git a/bingo_images/squares/big_changes.png b/bingo_images/squares/big_changes.png new file mode 100644 index 0000000..b405850 Binary files /dev/null and b/bingo_images/squares/big_changes.png differ diff --git a/bingo_images/squares/big_spin_t12.png b/bingo_images/squares/big_spin_t12.png new file mode 100644 index 0000000..230fed7 Binary files /dev/null and b/bingo_images/squares/big_spin_t12.png differ diff --git a/bingo_images/squares/car_debris_on_track.png b/bingo_images/squares/car_debris_on_track.png new file mode 100644 index 0000000..b58eb5f Binary files /dev/null and b/bingo_images/squares/car_debris_on_track.png differ diff --git a/bingo_images/squares/car_different.png b/bingo_images/squares/car_different.png new file mode 100644 index 0000000..3fdf585 Binary files /dev/null and b/bingo_images/squares/car_different.png differ diff --git a/bingo_images/squares/carbon_fiber.png b/bingo_images/squares/carbon_fiber.png new file mode 100644 index 0000000..b60f804 Binary files /dev/null and b/bingo_images/squares/carbon_fiber.png differ diff --git a/bingo_images/squares/chadlonso_time_life.png b/bingo_images/squares/chadlonso_time_life.png new file mode 100644 index 0000000..a6bacde Binary files /dev/null and b/bingo_images/squares/chadlonso_time_life.png differ diff --git a/bingo_images/squares/commentator_car_confused.png b/bingo_images/squares/commentator_car_confused.png new file mode 100644 index 0000000..8553ac5 Binary files /dev/null and b/bingo_images/squares/commentator_car_confused.png differ diff --git a/bingo_images/squares/driver_complains_impeding.png b/bingo_images/squares/driver_complains_impeding.png new file mode 100644 index 0000000..d7e19b0 Binary files /dev/null and b/bingo_images/squares/driver_complains_impeding.png differ diff --git a/bingo_images/squares/flowviz.png b/bingo_images/squares/flowviz.png new file mode 100644 index 0000000..cd4c121 Binary files /dev/null and b/bingo_images/squares/flowviz.png differ diff --git a/bingo_images/squares/haas_stops.png b/bingo_images/squares/haas_stops.png new file mode 100644 index 0000000..cdd0513 Binary files /dev/null and b/bingo_images/squares/haas_stops.png differ diff --git a/bingo_images/squares/honda_engine_dies.png b/bingo_images/squares/honda_engine_dies.png new file mode 100644 index 0000000..999a812 Binary files /dev/null and b/bingo_images/squares/honda_engine_dies.png differ diff --git a/bingo_images/squares/its_only_testing.png b/bingo_images/squares/its_only_testing.png new file mode 100644 index 0000000..4036152 Binary files /dev/null and b/bingo_images/squares/its_only_testing.png differ diff --git a/bingo_images/squares/lockup_t1.png b/bingo_images/squares/lockup_t1.png new file mode 100644 index 0000000..e869e2f Binary files /dev/null and b/bingo_images/squares/lockup_t1.png differ diff --git a/bingo_images/squares/mercedes_downplays.png b/bingo_images/squares/mercedes_downplays.png new file mode 100644 index 0000000..5ec4e74 Binary files /dev/null and b/bingo_images/squares/mercedes_downplays.png differ diff --git a/bingo_images/squares/no_power.png b/bingo_images/squares/no_power.png new file mode 100644 index 0000000..781ece2 Binary files /dev/null and b/bingo_images/squares/no_power.png differ diff --git a/bingo_images/squares/radical_concept_fails.png b/bingo_images/squares/radical_concept_fails.png new file mode 100644 index 0000000..55c053c Binary files /dev/null and b/bingo_images/squares/radical_concept_fails.png differ diff --git a/bingo_images/squares/radical_concept_works.png b/bingo_images/squares/radical_concept_works.png new file mode 100644 index 0000000..f0a5181 Binary files /dev/null and b/bingo_images/squares/radical_concept_works.png differ diff --git a/bingo_images/squares/red_flag.png b/bingo_images/squares/red_flag.png new file mode 100644 index 0000000..5a50130 Binary files /dev/null and b/bingo_images/squares/red_flag.png differ diff --git a/bingo_images/squares/redbull_run_most.png b/bingo_images/squares/redbull_run_most.png new file mode 100644 index 0000000..3bbfe27 Binary files /dev/null and b/bingo_images/squares/redbull_run_most.png differ diff --git a/bingo_images/squares/sandbagging.png b/bingo_images/squares/sandbagging.png new file mode 100644 index 0000000..223483b Binary files /dev/null and b/bingo_images/squares/sandbagging.png differ diff --git a/bingo_images/squares/silly_season.png b/bingo_images/squares/silly_season.png new file mode 100644 index 0000000..64e70e7 Binary files /dev/null and b/bingo_images/squares/silly_season.png differ diff --git a/bingo_images/squares/square_template.xcf b/bingo_images/squares/square_template.xcf new file mode 100644 index 0000000..6a72e81 Binary files /dev/null and b/bingo_images/squares/square_template.xcf differ diff --git a/bingo_images/squares/team_hides_work.png b/bingo_images/squares/team_hides_work.png new file mode 100644 index 0000000..c9ad438 Binary files /dev/null and b/bingo_images/squares/team_hides_work.png differ diff --git a/bingo_images/squares/team_misnamed.png b/bingo_images/squares/team_misnamed.png new file mode 100644 index 0000000..8f555a5 Binary files /dev/null and b/bingo_images/squares/team_misnamed.png differ diff --git a/bingo_images/squares/torro_rosso_or_vcarb.png b/bingo_images/squares/torro_rosso_or_vcarb.png new file mode 100644 index 0000000..5241272 Binary files /dev/null and b/bingo_images/squares/torro_rosso_or_vcarb.png differ diff --git a/bingo_images/squares/williams_first_out.png b/bingo_images/squares/williams_first_out.png new file mode 100644 index 0000000..a2c3f0f Binary files /dev/null and b/bingo_images/squares/williams_first_out.png differ diff --git a/bingo_images/squares/williams_top_speed_trap.png b/bingo_images/squares/williams_top_speed_trap.png new file mode 100644 index 0000000..7da0e66 Binary files /dev/null and b/bingo_images/squares/williams_top_speed_trap.png differ