Browse Source

Pick teams randomly and instantly on spacebar

master
bertieb 3 years ago
committed by Rob Hallam
parent
commit
c24fae73bb
1 changed files with 183 additions and 0 deletions
  1. +183
    -0
      teampicker.py

+ 183
- 0
teampicker.py View File

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

Loading…
Cancel
Save