Processing
Børre Stenseth
Problemer >Fotballsesong

Fotballsesong

Hva

Jeg ønsker å lage en alternativ framstilling av resultatene i en fotballsesong. Jeg vil fokusere på poengfangsten og animere hvordan forholdet mellom lagene endrer seg gjennom sesongen.

Relevante Skisser
fotballsesong 

Analyse

Datagrunnlag

Det finnes en rekke kilder for resultater og statistikk om fotball (siden dette er et yndet tema for spillere.) Jeg har samlet sammen resultater for en rekke sesonger for blandt annet den norske eliteserien. Disse dataene er organisert i en kommaseparert (csv) fil med linje pr kamp. De første linjene for sesongen 2016 ser slik ut:

2016.03.11,1,Aalesund,1,0,Stabæk
2016.03.12,1,Odd,1,0,Rosenborg
2016.03.13,1,Molde,1,1,Tromsø
2016.03.13,1,Strømsgodset,2,2,Brann
2016.03.13,1,Bodø/Glimt,2,0,Sogndal
2016.03.13,1,Sarpsborg 08,0,1,Haugesund
2016.03.13,1,Start,1,1,Lillestrøm
2016.03.14,1,Vålerenga,0,2,Viking
2016.03.18,2,Tromsø,0,0,Start
2016.03.19,2,Haugesund,3,0,Aalesund

I hver linje ligger:

dato,runde,hjemmelag,hjemmemål,bortelag,bortemål

I en serie med 16 lag vil det være (16*15*2)/2 = 240 kamper siden hver lag skal møte alle de andre to ganger, og hver kamp involverer 2 lag.

Jeg har dessuten tilgang til en fil som viser alle lagene i serien:

Aalesund
Bodø/Glimt
Brann
Haugesund
Lillestrøm
Molde
Odd
Rosenborg
Sarpsborg 08
Sogndal
Stabæk
Start
Strømsgodset
Tromsø
Viking
Vålerenga

Denne fila ble laget ved å plukke ut alle navnene fra resultatfila for å kontrollere at alle lagnavn er skrevet riktig. Jeg har dessuten sjekket at antall kamper stemmer, at formatet på alle kampfilene er riktig og at poengberegningene stemmer med offisielle tabeller. På grunnlag av dette anser jeg at datagrunnlaget er riktig formatert. Disse dataene er stabile og jeg kommer ikke til å legge inn kontroller på data i løsningen.

Datafilene er tilgjengelige som:

https://borres.hiof.no/fotballdata/csv/NO/LagEliteserienXXXX.csv
https://borres.hiof.no/fotballdata/csv/NO/EliteserienXXXX.csv

der XXXX er årstall fom 2000 tom 2016. Du kan bruke dem direkte fra adressene over eller du kan hente dem ned ved å åpne dem i en nettleser og kopiere dem lokalt til din maskin.

Struktur

Det er to begreper som står fram i resonnementet: sesong og lag. Jeg faller fort ned på den konklusjonen at jeg vil ha en klasse for hver av disse. Disse klassene beskriver jeg i hver sin fil, og jeg får tilsammen tre filer i løsningen: Fotballsesong.pde, sesong.pde og lag.pde.

fotballsesong.pde

fotballsesong er starten som setter opp skissen, bestemmer framRate og den eller de sesongene jeg vil animere.

// sesongen vi viser 
Sesong serien;
// runden vi viser
int runde;
void setup(){
  size();
  lagSesong();
  runde=0;
}
void lagSesong(){
  serien=new Sesong(tittel og filnavn);
}
void draw(){
  serien.tegn(runde);
  runde+=1;
}

sesong.pde

sesong skal ha en liste over lag. sesong leser også de aktuelle filene og fordeler resultater til lagene. Et sesong-objekt tegner seg selv. Det er selve uttegningen som er den delen av koden som er mest knotete og det er denne som kan endres for å oppnå en annen visuell effekt. Min erfaring er at slike uttegninger er en typisk "prøve og feile" prosess.

class Sesong{
  ArrayList<Lag>lagListe;
  String tittel;
  Sesong(String tittel,String lagfil,String resultatfil){
    this.tittel=tittel;
    // plukker opp det vi trenger fra filer 
    // og oppretter lagListe
  }
  void tegn(int runde){
  }
}

lag.pde

lag innhoder en liste over hvor mange poeng som er oppnådd pr runde, og svarer på spørsmål om akkumulerte poen etter et antall runder.

class Lag{
  String lagNavn;
  IntList poeng;
   
  Lag(String lagNavn){
    this.lagNavn=lagNavn;
    poeng=new IntList();
  }
  
  void leggTilKamp(String[] deler){
    // bare interessert i poeng
    // sjekk hjemekamp eller bortekamp
    // og legg til 3,1 eller 0 ipoeng 
  }
  
  int getPoengEtterRunde(int runde){
  }
}

En løsning

fotballsesong
_fotballsesong.pde
_sesong.pde
_lag.pde

Oppgaverforslag

Alternativer

Denne løsningen lar seg forbedre og endre på mange måter. Noen forslag:

  • vi burde ha flere sesonger oppe og la brukeren velge hvem som skal vises
  • poengkulene burde kanskje stige oppover
  • vi bør få se en rundeangivelse i animasjonen
  • lage en ramme som hver sesong skal vises i så vi kan ha flere sesonger oppe samtidig
  • hva er forskjellen på bortepoeng og hjemmepoeng.
Problemer >Fotballsesong