diff --git a/teampicker.py b/teampicker.py new file mode 100644 index 0000000..55743bf --- /dev/null +++ b/teampicker.py @@ -0,0 +1,183 @@ +#!/bin/python3 +# +# gamepicker.py - pick games for Novemeber 2020 sub crown +# +# Two files provided: +# - subs.txt -- 8 subscribers +# - teams.txt -- 26 teams +# +# Pseudocode: +# Split screen in 1:3 +# - LHS = subscriber+team space +# - RHS = teams space +# Set BG image +# Init seed +# Lay out teams in order (3 cols) +# On keypress, show subscriber name & show team random picker (via highlight) +# Once picked, add subscriber + team to LHS + +import sys +import random +import pygame + +pygame.init() +random.seed("BERTIE BEEF BAGGIO") + +SIZE = WIDTH, HEIGHT = 1920, 1080 + +BGIMG = pygame.image.load("sub_crown_bg_2.png") + +FONT = pygame.font.SysFont("Fetamont", 50) +SUBFONTHEIGHT = 35 +SUBFONT = pygame.font.SysFont("Fetamont", SUBFONTHEIGHT) +OFFWHITE = (224, 224, 224) +HIGHLIGHT = (255, 209, 0) +BLUE = (20, 25, 153) +PURPLE = (121, 35, 158) + +screen = pygame.display.set_mode(SIZE) + +# Set up team text positioning references +# +# 26 teams so 3 cols, 9 rows + +COLSTART = int(WIDTH/3) +COLWIDTH = int((WIDTH-COLSTART)/3) + +ROWSTART = int(HEIGHT/12) +ROWHEIGHT = int((HEIGHT-ROWSTART)/10) + +TEAMSFILE = "teams.txt" + +TEAMNUMCOLS = 3 +TEAMNUMROWS = 9 + +TEAMCOLS = [] +TEAMROWS = [] + +for i in range(TEAMNUMCOLS): + print(COLSTART + i*COLWIDTH) + TEAMCOLS.append(COLSTART + i*COLWIDTH) + +for i in range(TEAMNUMROWS): + TEAMROWS.append(ROWSTART + i*ROWHEIGHT) + print(ROWSTART + i*ROWHEIGHT) + +SUBSFILE = "subs.txt" +SUBS = [] + +SUBNUMROWS = 8 +SUBROWHEIGHT = int((HEIGHT-ROWSTART)/9) +SUBROWS = [] + +for i in range(SUBNUMROWS): + SUBROWS.append(ROWSTART + i*SUBROWHEIGHT) + +TEAMS = [] # List of Team + + +class Team(object): + """Teams for iteration""" + + def __init__(self, team, x, y): + self.team = team + self.x = x + self.y = y + self.colour = OFFWHITE + + def highlight(self): + self.colour = HIGHLIGHT + + def unhighlight(self): + self.colour = OFFWHITE + + def draw(self): + draw_text(self.team, FONT, self.colour, self.y, self.x) + + +class Sub(object): + """Like Team""" + + def __init__(self, sub): + self.sub = sub + self.team = "" + self.x = 20 + self.y = 0 + + def draw(self): + draw_text(self.sub, SUBFONT, BLUE, self.x, self.y) + if self.team != "": + draw_text(self.team, SUBFONT, PURPLE, + self.x, int(self.y+SUBFONTHEIGHT)) + + +def draw_text(text, font, text_col, x, y): + img = font.render(text, True, text_col) + screen.blit(img, (x, y)) + + +def setup_team_board(): + """Grab teams from text file and set their positions""" + with open(TEAMSFILE, "r") as fh: + for row in range(TEAMNUMROWS): + for col in range(TEAMNUMCOLS): + name = fh.readline().strip() + if name == "": + continue + print("Adding {} at {},{}".format(name, + TEAMCOLS[col], + TEAMROWS[row])) + TEAMS.append(Team(name, + TEAMROWS[row], TEAMCOLS[col])) + + +def setup_subs(): + """Check positioning, not actually used""" + for i in range(len(SUBS)): + # print("drawing {} at {},{}".format(SUBS[i], 20, SUBROWS[i])) + SUBS[i].y = SUBROWS[i] + + +# Prep + +for line in open(SUBSFILE, "r"): + sub = line.strip() + SUBS.append(Sub(sub)) +print(SUBS) + +random.shuffle(SUBS) +setup_team_board() +random.shuffle(TEAMS) +setup_subs() + +while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + sys.exit() + elif event.type == pygame.KEYDOWN: + if event.key == 113: # Q + pygame.quit() + sys.exit() + elif event.key == 115: + TEAMS[5].highlight() + elif event.key == 32: # Spacebar + for sub in SUBS: + if sub.team == "": + sub.team = TEAMS.pop().team + elif event.key == 49: + team = TEAMS.pop() + SUBS[0].team = team.team + elif event.key == 50: + SUBS[1].team = TEAMS[random.randrange(len(TEAMS))].team + + print(event.key) + + screen.blit(BGIMG, (0, 0)) + + for team in TEAMS: + team.draw() + + for sub in SUBS: + sub.draw() + + pygame.display.update()