|
@@ -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() |