public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
this.setBackground(Color.WHITE);//Bakgrunnsfarge
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);// Bruk Anti-Alias
g2.setColor(Color.GRAY);
g2.fillRect(0,0,brettstorrelse,brettstorrelse);//Farge for visuelt spillebrett
//***************Finn antall gyldige trekk for den som er i trekket og om aktuelt for motstander
igyldigetrekk=0;mgyldigetrekk=0;
for(int rekke = 0 ; rekke < 8 ; rekke++ )
{
for(int kolonne = 0 ; kolonne < 8 ; kolonne++ )
{
if (kontroller.kontroller_om_gyldigtrekk(rekke,kolonne,itrekket)==1)igyldigetrekk++;
}
}
if (igyldigetrekk==0){//hvis ingen gyldige trekk, sjekk om motstander har trekk
for(int rekke = 0 ; rekke < 8 ; rekke++ )
{
for(int kolonne = 0 ; kolonne < 8 ; kolonne++ )
{
if (kontroller.kontroller_om_gyldigtrekk(rekke,kolonne,itrekket*-1)==1)mgyldigetrekk++;
}
}
}
if (igyldigetrekk==0&mgyldigetrekk==0)gyldigstatus=2;
else if (igyldigetrekk==0)gyldigstatus=1;
else gyldigstatus=0;
//*******************************************************************
if (gyldigstatus==2&(kontroller.antallsvartebrikker()+kontroller.antallhvitebrikker()!=64))//Hvis brettet ikke er fullt, men ingen har et gyldig trekk; avslutt spillet
{
if (kontroller.antallhvitebrikker()>kontroller.antallsvartebrikker())
g2.drawString("Ingen har gyldige trekk, maskinen vant "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+". Trykk for nytt spill.",0,brettstorrelse+15);
else if (kontroller.antallhvitebrikker()<kontroller.antallsvartebrikker())
g2.drawString("Ingen har gyldige trekk, du vant "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+". Trykk for nytt spill.",0,brettstorrelse+15);
else g2.drawString("Ingen har gyldige trekk, det ble "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+". Trykk for nytt spill.",0,brettstorrelse+15);
gyldigstatus=9;//sett variabel for å nullstille brettet
}
else if (gyldigstatus==1&(kontroller.antallsvartebrikker()+kontroller.antallhvitebrikker()!=64))//Hvis brettet ikke er fullt, det finnes ikke gyldig trekk, men motstander har gyldig trekk: gi trekket til motstander
{
if(itrekket==1)g2.drawString("Ingen gyldige trekk, din tur! ",0,brettstorrelse+15);
if(itrekket==-1)g2.drawString("Ingen gyldige trekk, det er min tur! ",0,brettstorrelse+15);
itrekket=itrekket*-1;
}
else
{
if (kontroller.antallsvartebrikker()+kontroller.antallhvitebrikker()==4)g2.drawString("Klarer du å slå maskinen i Othello? Du begynner som svart.",0,brettstorrelse+15);//Gi velkomstmelding om det er 4 brikker på brettet
else if (kontroller.antallsvartebrikker()+kontroller.antallhvitebrikker()==64)//Avslutt spillet om brettet er fullt
{
if (kontroller.antallsvartebrikker()>32)g2.drawString("Du vant "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+"! Trykk for å starte et nytt spill.",0,brettstorrelse+15);
if (kontroller.antallhvitebrikker()>32)g2.drawString("Maskinen vant "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+"! Trykk for å starte et nytt spill.",0,brettstorrelse+15);
if (kontroller.antallsvartebrikker()==kontroller.antallhvitebrikker())g2.drawString("Det ble uavgjort "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+"! Imponerende. Trykk for å starte et nytt spill.",0,brettstorrelse+15);
}
else //Hvis spillet fortsetter, fortell hva stillingen er og hvem som er i trekket
{
if (itrekket==-1)g2.drawString("Stillingen er "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+" Det er din tur.",0,brettstorrelse+15);
if (itrekket==1)g2.drawString("Stillingen er "+Integer.toString(kontroller.antallhvitebrikker())+"-"+Integer.toString(kontroller.antallsvartebrikker())+" Maskinen sin tur.",0,brettstorrelse+15);
}
}
//Tegn visuelt spillebrett
g2.setColor(Color.BLACK);
for (int i=0;i<9;i++)
{
g2.drawLine(0,(brettstorrelse/8)*i,brettstorrelse,(brettstorrelse/8)*i);
g2.drawLine((brettstorrelse/8)*i,0,(brettstorrelse/8)*i,brettstorrelse);
}
//Tegn spillebrikker
for(int rekke = 0 ; rekke < 8 ; rekke++ )
{
for(int kolonne = 0 ; kolonne < 8 ; kolonne++ )
{
if (brett.hentstatus(kolonne, rekke) ==-1)
{
g2.setColor(Color.BLACK);
g2.fillOval(kolonne*(brettstorrelse/8)+2,rekke*(brettstorrelse/8)+2,(brettstorrelse/8)-4,(brettstorrelse/8)-4);
g2.setColor(Color.WHITE);
g2.drawArc(kolonne*(brettstorrelse/8)+2,rekke*(brettstorrelse/8)+2,(brettstorrelse/8)-4,(brettstorrelse/8)-4,-95,90);
}
if (brett.hentstatus(kolonne, rekke) ==1)
{
g2.setColor(Color.WHITE);
g2.fillOval(kolonne*(brettstorrelse/8)+2,rekke*(brettstorrelse/8)+2,(brettstorrelse/8)-4,(brettstorrelse/8)-4);
}
}
}