public class Controller { private Model model; private View view; private Thread spillTråd; public Controller(int antRader, int antKolonner) { model = new Model(antRader, antKolonner); view = new View(this, antRader, antKolonner); } public void init() { view.init(); } public void settCelleKnappStatus(int rad, int kol) { char tegn = model.hentStatusTegn(rad, kol); view.byttCelleKnappStatus(rad, kol, tegn); } public void oppdaterCelleKnapper() { for (int i = 0; i < model.hentAntRader(); i++) { for (int j = 0; j < model.hentAntKolonner(); j++) { settCelleKnappStatus(i, j); } } } // Denne metoden skal brukes når vi trykker på en celleknapp public void byttCelleStatus(int rad, int kol) { model.byttStatus(rad, kol); char tegn = model.hentStatusTegn(rad, kol); view.byttCelleKnappStatus(rad, kol, tegn); } public void startSpillet() { spillTråd = new Thread(new Oppdaterer()); spillTråd.start(); } public void avbrytSpillet() { spillTråd.interrupt(); } // Dersom spillet kjører skal den avsluttes, dersom spillet ikke kjøres skal den startes public void spill() { boolean kjører = model.veksleKjører(); if (kjører) { startSpillet(); view.settSpillKnappTekst("Slutt"); } else { avbrytSpillet(); view.settSpillKnappTekst("Start"); } } private class Oppdaterer implements Runnable { @Override public void run() { boolean fortsett = true; while (fortsett) { model.oppdatering(); oppdaterCelleKnapper(); view.settTittel("Generasjon: " + model.hentGenNr()); try { Thread.sleep(2000); } catch (InterruptedException e) { fortsett = false; } } } } public static void main(String[] args) { Controller c = new Controller(9, 9); c.init(); } }