import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Risk extends Applet
implements MouseListener, ActionListener
{
private Button eindePlaatsingsFase;
private Button eindeVersterkingsFase;
private Button eindeAanvalsFase;
int xpos, ypos;
int straal=15;
int afname=0;
boolean gevonden = false;
boolean fasePlaatsingLegers = true;
boolean versterkingsFase = false;
boolean aanvalsFase = false;
boolean aangeklikt = false;
boolean gevecht = false;
boolean eindeSpel = false;
int versterkingen;
int verwachteVersterkingen;
int speler=0;
int aanvaller;
int verdediger;
String tekstje = "";
Land [] speelbord = new Land[43];
int[][] verbinding =
{
{0, 0, 0, 0, 0, 0},//0
{2, 3, 4, 5, 0, 0},//1
{1, 4, 27, 0, 0, 0},//2
{1, 5, 7, 9, 0, 0},//3
{1, 2, 5, 6, 0, 0},//4
{1, 3, 4, 6, 7, 8},//5
{4, 8, 14, 0, 0, 0},//6
{3, 5, 8, 9, 0, 0},//7
{5, 6, 7, 0, 0, 0},//8
{3, 7, 10, 0, 0, 0},//9
{9, 11, 12, 0, 0, 0},//10
{10, 12, 13, 0, 0, 0},//11
{10, 11, 13, 21, 0, 0},//12
{11, 12, 0, 0, 0, 0},//13
{6, 15, 16, 0, 0, 0},//14
{14, 16, 17, 18, 0, 0},//15
{14, 15, 17, 19, 0, 0},//16
{15, 16, 18, 19, 20, 0},//17
{15, 17, 20, 32, 35, 36},//18
{16, 17, 20, 21, 0, 0},//19
{17, 18, 19, 21, 22, 36},//20
{12, 19, 20, 22, 23, 24},//21
{20, 21, 24, 36, 0, 0},//22
{21, 24, 25, 0, 0, 0},//23
{21, 22, 23, 26, 36, 0},//24
{23, 24, 26, 0, 0, 0},//25
{24, 25, 0, 0, 0, 0},//26
{2, 28, 29, 31, 33, 0},//27
{27, 30, 31, 0, 0, 0},//28
{27, 33, 0, 0, 0, 0},//29
{28, 31, 32, 33, 34, 0},//30
{27, 28, 30, 33, 0, 0},//31
{18, 30, 34, 35, 0, 0},//32
{27, 29, 30, 31, 34, 0},//33
{30, 32, 33, 35, 37, 38},//34
{18, 32, 34, 36, 37, 0},//35
{18, 20, 22, 24, 35, 37},//36
{34, 35, 36, 38, 0, 0},//37
{34, 37, 39, 0, 0, 0},//38
{38, 40, 41, 0, 0, 0},//39
{39, 41, 42, 0, 0, 0},//40
{39, 40, 42, 0, 0, 0},//41
{40, 41, 0, 0, 0, 0} //42
};
public void init()
{
int i, hulp, p, q;
// public Land (nummertje, x0, y0,naampje, aantalBuurtjes, buurtjes, continent, baas, aantalLegeertjes)
speelbord[0] = new Land(0, 0, 0, "", 0, verbinding[0], 0, 0, 1);
speelbord[1] = new Land(1, 62.5, 47.5, "Alberta", 4, verbinding[1], 1, 0, 1);
speelbord[2] = new Land(2, 162.5, 47.5 , "Alaska", 3, verbinding[2], 1, 0, 1);
speelbord[3] = new Land(3, 37.5, 122.5, "Verenigde-Staten-West", 4, verbinding[3], 1, 0, 1);
speelbord[4] = new Land(4, 137.5, 122.5, "Noord-West-Terretoria", 4, verbinding[4], 1, 0, 1);
speelbord[5] = new Land(5, 87.5, 172.5, "Ontario", 6, verbinding[5], 1, 0, 1);
speelbord[6] = new Land(6, 162.5, 197.5, "Groenland", 3, verbinding[6], 1, 0, 1);
speelbord[7] = new Land(7, 62.5, 247.5, "Verenigde-Staten-Oost", 4, verbinding[7], 1, 0, 1);
speelbord[8] = new Land(8, 137.5, 247.5, "Quebec", 3, verbinding[8], 1, 0, 1);
speelbord[9] = new Land(9, 37.5, 322.5, "Midden-Amerika", 3, verbinding[9], 1, 0, 1);
speelbord[10]= new Land(10, 87.5, 397.5, "Venezuela", 3, verbinding[10], 2, 0, 1);
speelbord[11]= new Land(11, 62.5, 472.5, "Peru", 3, verbinding[11], 2, 0, 1);
speelbord[12]= new Land(12, 162.5, 447.5, "Brazilië", 4, verbinding[12], 2, 0, 1);
speelbord[13]= new Land(13, 112.5, 522.5, "Argentinië", 2, verbinding[13], 2, 0, 1);
speelbord[14]= new Land(14, 237.5, 122.5, "IJsland", 3, verbinding[14], 3, 0, 1);
speelbord[15]= new Land(15, 312.5, 122.5, "Scandinavië", 4, verbinding[15], 3, 2, 1);
speelbord[16]= new Land(16, 237.5, 197.5, "Groot-Brittannië", 4, verbinding[16], 3, 2, 1);
speelbord[17]= new Land(17, 312.5, 222.5, "Noord-Europa", 5, verbinding[17], 3, 2, 1);
speelbord[18]= new Land(18, 387.5, 222.5, "Oost-Europa", 6, verbinding[18], 3, 2, 1);
speelbord[19]= new Land(19, 237.5, 272.5, "West-Europa", 4, verbinding[19], 3, 2, 1);
speelbord[20]= new Land(20, 337.5, 297.5, "Zuid-Europa", 6, verbinding[20], 3, 2, 1);
speelbord[21]= new Land(21, 262.5, 372.5, "Noord-Afrika", 6, verbinding[21], 4, 2, 1);
speelbord[22]= new Land(22, 362.5, 372.5, "Egypte", 4, verbinding[22], 4, 1, 1);
speelbord[23]= new Land(23, 237.5, 472.5, "Centraal-Afrika", 3, verbinding[23], 4, 1, 1);
speelbord[24]= new Land(24, 362.5, 447.5, "Oost-Afrika", 5, verbinding[24], 4, 1, 1);
speelbord[25]= new Land(25, 287.5, 547.5, "Zuid-Afrika", 3, verbinding[25], 4, 1, 1);
speelbord[26]= new Land(26, 387.5, 522.5, "Madagascar", 2, verbinding[26], 4, 1, 1);
speelbord[27]= new Land(27, 712.5, 47.5, "Kamstjatka", 5, verbinding[27], 5, 1, 1);
speelbord[28]= new Land(28, 662.5, 72.5, "Jakoetsk", 3, verbinding[28], 5, 1, 1);
speelbord[29]= new Land(29, 762.5, 97.5, "Japan", 2, verbinding[29], 5, 1, 1);
speelbord[30]= new Land(30, 587.5, 122.5, "Siberië", 5, verbinding[30], 5, 1, 1);
speelbord[31]= new Land(31, 697.5, 132.5, "Tsjita", 4, verbinding[31], 5, 1, 1);
speelbord[32]= new Land(32, 462.5, 147.5, "Oeral", 4, verbinding[32], 5, 1, 1);
speelbord[33]= new Land(33, 737.5, 202.5, "Mongolië", 5, verbinding[33], 5, 1, 1);
speelbord[34]= new Land(34, 637.5, 197.5, "China", 6, verbinding[34], 5, 1, 1);
speelbord[35]= new Land(35, 537.5, 247.5, "Kazachstan", 5, verbinding[35], 5, 1, 1);
speelbord[36]= new Land(36, 487.5, 347.5, "Midden-Oosten", 6, verbinding[36], 5, 2, 1);
speelbord[37]= new Land(37, 612.5, 372.5, "India", 4, verbinding[37], 5, 2, 1);
speelbord[38]= new Land(38, 712.5, 347.5, "Zuid-Oost-Azië", 3, verbinding[38], 5, 2, 1);
speelbord[39]= new Land(39, 662.5, 447.5, "Indonesië", 3, verbinding[39], 6, 2, 1);
speelbord[40]= new Land(40, 737.5, 447.5, "Nieuw-Guinea", 3, verbinding[40], 6, 2, 1);
speelbord[41]= new Land(41, 687.5, 522.5, "West-Australië", 3, verbinding[41], 6, 2, 1);
speelbord[42]= new Land(42, 762.5, 497.5, "Oost-Australië", 2, verbinding[42], 6, 2, 1);
for(i=0; i<100; i++)
{
p = (int)(Math.random() * 42 +1);
q = (int)(Math.random() * 42 +1);
hulp = speelbord[p].eigenaar;
speelbord[p].eigenaar = speelbord[q].eigenaar;
speelbord[q].eigenaar = hulp;
}
//Button
eindePlaatsingsFase = new Button("Klaar met plaatsen");
eindeVersterkingsFase = new Button("Klaar met versterken");
eindeAanvalsFase = new Button("Klaar met aanvallen");
this.add(eindePlaatsingsFase);
this.add(eindeVersterkingsFase);
this.add(eindeAanvalsFase);
eindePlaatsingsFase.addActionListener(this);
eindeVersterkingsFase.addActionListener(this);
eindeAanvalsFase.addActionListener(this);
eindePlaatsingsFase.setVisible(true);
eindeVersterkingsFase.setVisible(false);
eindeAanvalsFase.setVisible(false);
addMouseListener(this);
}
public void paint(Graphics gr)
{
//maak volledig scherm
this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
this.validate();
int i, j;
int bonusVersterkingen;
gr.setFont(new Font("Tahoma", Font.PLAIN, 24));
if (eindeSpel == false)
{
if (speler == 0)
{
gr.drawString("Speler Rood is aan de beurt. ", 30, 635);
}
if (speler == 1)
{
gr.drawString("Speler Blauw is aan de beurt. ", 30, 635);
}
if (speler == 2)
{
gr.drawString("Speler Groen is aan de beurt. ", 30, 635);
}
}
if (eindeSpel == true)
{
if (speler == 0)
gr.drawString("Rood heeft dit spel gewonnen.", 30, 635);
if (speler == 1)
gr.drawString("Blauw heeft dit spel gewonnen.", 30, 635);
if (speler == 2)
gr.drawString("Groen heeft dit spel gewonnen.", 30, 635);
}
gr.setFont(new Font("Tahoma", Font.PLAIN, 14));
//tekenen van de landen en de verbindingslijntjes
//werelddelen
gr.setColor(Color.YELLOW);
gr.fillRect(20, 30, 165, 310);
gr.setColor(Color.PINK);
gr.fillRect(45, 375, 140, 165);
gr.setColor(new Color(130, 0, 195));
gr.fillRect(220, 105, 185, 210);
gr.setColor(Color.ORANGE);
gr.fillRect(220, 350, 190, 220);
gr.setColor(new Color(0, 220, 130));
gr.fillRect(445, 30, 335, 360);
gr.setColor(Color.CYAN);
gr.fillRect(645, 430, 135, 110);
//verbindingslijntjes
for(i=1; i<43; i++)
for(j=0; j<speelbord[i].aantalBuren; j++)
{
gr.setColor(Color.BLACK);
gr.drawLine((int) speelbord[i].x, (int) speelbord[i].y, (int) speelbord[speelbord[i].buren[j]].x,(int) speelbord[speelbord[i].buren[j]].y);
}
//landen
for (i=1;i<43;i++)
{
if (aangeklikt == true && speelbord[i].nummer == aanvaller)
{
if (speler == 0)
{
gr.setColor(Color.RED);
gr.fillOval((int) speelbord[i].x -straal-2, (int) speelbord[i].y -straal-2, 34, 34);
}
if (speler == 1)
{
gr.setColor(new Color(0,200,255));
gr.fillOval((int) speelbord[i].x -straal-2, (int) speelbord[i].y -straal-2, 34, 34);
}
if (speler == 2)
{
gr.setColor(Color.GREEN);
gr.fillOval((int) speelbord[i].x -straal-2, (int) speelbord[i].y -straal-2, 34, 34);
}
gr.setColor(Color.YELLOW);
gr.fillOval((int) speelbord[i].x -straal+1, (int) speelbord[i].y -straal+1, 28, 28);
}
else
{
if (speelbord[i].eigenaar == 0)
gr.setColor(Color.RED);
if (speelbord[i].eigenaar == 1)
gr.setColor(new Color(0, 200, 255));
if (speelbord[i].eigenaar == 2)
gr.setColor(Color.GREEN);
gr.fillOval((int) speelbord[i].x -straal, (int) speelbord[i].y -straal, 30, 30);
}
gr.setColor(Color.BLACK);
if(speelbord[i].aantalLegers<10)
gr.drawString(""+speelbord[i].aantalLegers,(int) speelbord[i].x-2, (int)speelbord[i].y+5);
if(speelbord[i].aantalLegers>9)
gr.drawString(""+speelbord[i].aantalLegers,(int) speelbord[i].x-7, (int)speelbord[i].y+5);
gr.drawOval((int) speelbord[i].x -straal, (int) speelbord[i].y -straal, 30, 30);
}
gr.drawString(tekstje, 500, 560);
// bonusVersterkingen
bonusVersterkingen = 0;
//N-Amerika
if (speelbord[1].eigenaar==speler && speelbord[2].eigenaar==speler && speelbord[3].eigenaar==speler && speelbord[4].eigenaar==speler
&& speelbord[4].eigenaar==speler&& speelbord[5].eigenaar==speler && speelbord[6].eigenaar==speler&& speelbord[7].eigenaar==speler
&& speelbord[9].eigenaar==speler)
bonusVersterkingen+=5;
//Zuid-Amerika
if (speelbord[10].eigenaar==speler && speelbord[11].eigenaar==speler && speelbord[12].eigenaar==speler && speelbord[13].eigenaar==speler)
bonusVersterkingen+=2;
//Europa
if (speelbord[14].eigenaar==speler && speelbord[15].eigenaar==speler && speelbord[16].eigenaar==speler && speelbord[17].eigenaar==speler
&& speelbord[18].eigenaar==speler && speelbord[19].eigenaar==speler && speelbord[20].eigenaar==speler)
bonusVersterkingen+=5;
//Afrika
if (speelbord[21].eigenaar==speler && speelbord[22].eigenaar==speler && speelbord[23].eigenaar==speler && speelbord[24].eigenaar==speler
&& speelbord[25].eigenaar==speler && speelbord[26].eigenaar==speler)
bonusVersterkingen+=3;
//Azie
if (speelbord[27].eigenaar==0 && speelbord[28].eigenaar==0 && speelbord[29].eigenaar==0 && speelbord[30].eigenaar==0
&& speelbord[31].eigenaar==speler && speelbord[32].eigenaar==speler && speelbord[33].eigenaar==speler && speelbord[34].eigenaar==speler
&& speelbord[35].eigenaar==speler && speelbord[36].eigenaar==speler && speelbord[37].eigenaar==speler && speelbord[38].eigenaar==speler)
bonusVersterkingen+=7;
//Australië
if (speelbord[39].eigenaar==speler && speelbord[40].eigenaar==speler && speelbord[41].eigenaar==speler && speelbord[42].eigenaar==speler )
bonusVersterkingen+=2;
//versterkingen
if (fasePlaatsingLegers == true)
{
versterkingen = 19 + afname;
}
if (versterkingsFase == true && fasePlaatsingLegers == false)
{
verwachteVersterkingen = (int)(aantalLanden(speler)/3) + bonusVersterkingen;
if (verwachteVersterkingen>3)
versterkingen = verwachteVersterkingen+ afname;
else versterkingen =3+ afname;
}
//tekst rechts onderin
if (versterkingsFase == true || fasePlaatsingLegers == true)
{
gr.drawString("aantal te plaatsen versterkingen:"+versterkingen,573,560);
}
if (aanvalsFase == true)
{
gr.drawString("Selecteer eerst een land om mee aan te vallen en daarna het land om aan te vallen.", 300, 600);
}
if(eindeSpel == true)
{
gr.drawString("Het spel is ten einde", 610, 560);
}
} // einde paint
private String voeruitGevecht(int attack, int defense, int player)
{ String resultaat = "";
while(speelbord[attack].aantalLegers>1 && speelbord[defense].aantalLegers>0)
{
if((int) (Math.random()*36)+1 > 17)
speelbord[attack].aantalLegers += -1;
else speelbord[defense].aantalLegers += -1;
}
if (speelbord[attack].aantalLegers == 1)
{
if (player == 0)
resultaat = "Rood heeft verloren en "+speelbord[defense].naam +" houdt stand.";
if (player == 1)
resultaat = "Blauw heeft verloren en "+speelbord[defense].naam +" houdt stand.";
if (player == 2)
resultaat = "Groen heeft verloren en "+speelbord[defense].naam +" houdt stand.";
aangeklikt = false;
}
if (speelbord[defense].aantalLegers == 0)
{
speelbord[defense].aantalLegers = speelbord[attack].aantalLegers - 1;
speelbord[attack].aantalLegers = 1;
speelbord[defense].eigenaar = speler;
aangeklikt = false;
if (player == 0)
resultaat = "Rood heeft gewonnen en neemt "+speelbord[defense].naam +" in.";
if (player == 1)
resultaat = "Blauw heeft gewonnen en neemt "+speelbord[defense].naam +" in.";
if (player == 2)
resultaat = "Groen heeft gewonnen en neemt "+speelbord[defense].naam +" in.";
}
return resultaat;
}// einde voeruitGevecht()
public int aantalLanden(int speler)
{
int aantallanden = 0;
for (int i=1;i<43;i++)
{
if (speelbord[i].eigenaar == speler) aantallanden++;
};
return aantallanden;
}// einde aantalLanden()
public int vindLandNr(int x0, int y0)
{
int i, j;
j = 0;
for(i=1; i<43; i++)
if (Math.sqrt(Math.pow(x0-speelbord[i].x,2)+Math.pow(y0-speelbord[i].y,2)) < straal) j = i;
return j;
}// einde vindLandNr()
public void mouseClicked (MouseEvent me)
{ //Graphics gr = this.getGraphics();
xpos = me.getX();
ypos = me.getY();
int i = vindLandNr(xpos, ypos);
if (fasePlaatsingLegers || versterkingsFase)
{
if (i > 0 && speelbord[i].eigenaar==speler && versterkingen > 0)
{
speelbord[i].aantalLegers++;
afname+=-1;
}
}
if (aanvalsFase)
{
if(!aangeklikt)
{
if (i > 0 && speelbord[i].eigenaar == speler && speelbord[i].aantalLegers > 1)
for (int j=0;j<6;j++)
{
if (speelbord[speelbord[i].buren[j]].eigenaar != speler)
{
aangeklikt = true;
aanvaller = i;
}
}
}
if(aangeklikt)
{
if (i > 0 && speelbord[i].eigenaar != speler)
{
for(int j=0;j<6;j++)
{
if (speelbord[aanvaller].buren[j] == i)
{
verdediger = i;
tekstje = voeruitGevecht(aanvaller, verdediger, speler);
aangeklikt = false;
}
}
}
}
}
this.repaint();
}//einde mouseClicked
public void actionPerformed(ActionEvent me)
{ tekstje = "";
if(me.getSource()== eindePlaatsingsFase)
{
if (speler == 0 && versterkingen == 0)
{
versterkingen+=19;
afname = 0;
speler = 1;
}
if (speler == 1 && versterkingen == 0)
{
versterkingen+=19;
afname = 0;
speler = 2;
}
if (speler == 2 && versterkingen == 0)
{
fasePlaatsingLegers = false;
versterkingsFase = true;
afname = 0;
speler = 0;
}
}
if(me.getSource()== eindeVersterkingsFase)
{
if (versterkingen ==0)
{
versterkingsFase = false;
aanvalsFase = true;
afname = 0;
}
}
if(me.getSource()== eindeAanvalsFase)
{ aangeklikt = false;
if(aantalLanden(speler)==42)
{
aanvalsFase = false;
eindeSpel = true;
}
else
{
if (speler == 0)
{
speler = 1;
versterkingsFase = true;
aanvalsFase = false;
}
else if (speler == 1)
{
speler = 2;
versterkingsFase = true;
aanvalsFase = false;
}
else if (speler == 2)
{
speler = 0;
versterkingsFase = true;
aanvalsFase = false;
}
}
}
if (fasePlaatsingLegers)
{
eindePlaatsingsFase.setVisible(true);
eindeVersterkingsFase.setVisible(false);
eindeAanvalsFase.setVisible(false);
}
if (versterkingsFase)
{
eindePlaatsingsFase.setVisible(false);
eindeVersterkingsFase.setVisible(true);
eindeAanvalsFase.setVisible(false);
}
if (aanvalsFase)
{
eindePlaatsingsFase.setVisible(false);
eindeVersterkingsFase.setVisible(false);
eindeAanvalsFase.setVisible(true);
}
if (eindeSpel)
{
eindePlaatsingsFase.setVisible(false);
eindeVersterkingsFase.setVisible(false);
eindeAanvalsFase.setVisible(false);
}
this.repaint();
}// einde actionPerformed
public void mouseEntered (MouseEvent me) {}
public void mousePressed (MouseEvent me) {}
public void mouseReleased (MouseEvent me) {}
public void mouseExited (MouseEvent me) {}
private static final long serialVersionUID = 1;
}