Pygame 8 ======== We maakten in het eerste trimester een scorebord voor volleybal. We breiden dit systeem nu uit zodat het grafisch aantrekkelijker wordt. Opgave 67 --------- Zoek eerst je code voor opgave 66 op, zodat je hieraan kan verder programmeren. Plaats de code in GitHub in een nieuw project met naam `scoreboard`. Opgave 68 --------- We willen voor beide teams een logo tonen. Zorg ervoor dat aan de linkerkant het logo van team A (thuisploeg) getoond wordt, en aan de rechterkant het logo van team B. Gebruik de bestanden `teamA-logo.png` en `teamB-logo.png` voor de logo's van team A en team B. Om een image te laden uit een JPEG of PNG bestand:: team_a_logo = pygame.image.load("teamA-logo.png") Zie ook op: https://www.pygame.org/docs/ref/image.html#pygame.image.load Opgave 69 --------- We willen ook de team-namen makkelijk aanpasbaar maken: Dus, we willen de team-namen kunnen aanpassen zonder de code te moeten aanpassen. Typisch wordt hiervoor gebruik gemaakt van een configuratiebestand. Op Windows-systemen wordt hier vaak gebruikt gemaakt van `.ini` bestanden. Zo zouden we bijvoorbeeld het volgende bestand kunnen voorzien om de teamnamen op te slaan:: [teamA] naam = Greenyard Maaseik [teamB] naam = Knack Roeselare Een voordeel van het gebruik van `.ini` bestanden is, dat ze makkelijk leesbaar zijn (voor mensen). Python voorziet in de standaardbibliotheek een module `configparser` die je kan gebruiken om `.ini` files in te lezen:: import configparser config = configparser.ConfigParser() config.read("config.ini") ploegnaam = config["teamA"]["naam"] print(ploegnaam) Zie ook: https://docs.python.org/3/library/configparser.html#configparser.ConfigParser.getint Een andere mogelijkheid is het gebruik van JSON:: { "teamA": "Greenyard Maaseik", "teamA_logo": "maaseik.jpg", "teamB": "Knack Roeselare" } Of, als we meer dan enkel de naam willen kunnen opslaan:: { "teamA": { "naam": "Greenyard Maaseik", "logo": "maaseik.jpg" }, "teamB": { "naam": "Knack Roeselare" } } Het voordeel hiervan is dat het erg lijkt op een Python dictionary, en ook makkelijk in te laden is via de `json` module in de Python standaardbibliotheek:: import json config = json.load(open("config.json", "r")) ploegnaam = config["teamA"]["naam"] print(ploegnaam) Pas de code aan zodat je de ploegnaam uit een configuratiebestand inleest. Gebruik hiervoor het `.ini` bestandsformaat. Opgave 70 --------- Pas de code aan zodat je de logo's van de ploegen uit hetzelfde configuratiebestand inleest. Opgave 71 --------- Voeg een sectie `generic` (algemeen) toe aan het configuratiebestand:: [generic] background-color = black font-color= red [teamA] naam = Greenyard Maaseik [teamB] naam = Knack Roeselare Gebruik de `backgroundcolor` om de kleur van de achtergrond in te stellen. Gebruik de `fontcolor` om de kleur van de letters aan te passen. Opgave 72 --------- Via de module `sys` kan je commandline parameters opvragen:: import sys print(sys.argv[1]) print(sys.argv[2]) De uitvoer van het programma:: python testje.py abcdef 0123 Toont:: abcdef 0123 Pas nu je programma aan, zodat je het configuratiebestand als parameter aan je programma kan meegeven. Om bijvoorbeeld je scoreboard met configuratiebestand `maaseik_roeselare.ini` op te starten zou je als volgt te werk gaan:: python scoreboard.py maaseik_roeselare.ini Een voorbeeld:: [generic] background-color = white color = black font-family = comicsansms font-size = 30 title = Bekerwedstrijd footer-image = reclame-footer.png top-image = reclame-top.png [teamA] name=Maaseik logo=maaseik.jpg [teamB] name=Roeselare logo=roeselare.png .. image:: images/banner.png