Risk maken met Java eclips

Status
Niet open voor verdere reacties.
Ik heb de IOOB exception wel voor je gevonden alleen echt een oplossing heb ik niet. Het zit hem in de regel: speelbord[speelbord[k].buren[aanvaller]] aanvaller kan namelijk een waarde bevatten tussen 0 en 42 terwijl buren maar een max van index 5 heeft. Verder snap ik nog steeds niet echt wat je met die laaatste 2 zinnen van de if statement wilt doen, het eerst gedeelte is piet apegres. je kijkt of de wortel van a2 + b2 in binnen de staal valt. daarna kijk je of het ook daadwerkelijk een vijand is maar de speeldbord[speelbord[k].buren[j]] die geeft volgensmij de index terug van de buren en daarna dus het object terug dat de buur moet zijn en die vergelijk je met ?
zou je niet de index van de aanvaller moeten vergelijken met de index van de buren ?

zoiets: speeldbord[k].buren[j] == aanvaller
 
Laatst bewerkt:
Ja daar zat de fout inderdaad, maar nu we die hebben opgelost hebben we ineens heel veel problemen. Van de hele aanvalsfase lijkt niets meer te kloppen. De eerste keer dat je aanvalt doet hij alles nog goed, maar daarna kun je landen die van jezelf zijn aanvallen en ook het land dat je selecteert kan zichzelf aanvallen. Daarbij lijkt de win kans na de eerste aanval ook nul te zijn. Nog een ander probleem is dat je sommige niet kunt aanvallen zoals bv. China (land 34) en ik dacht uit mijn hoofd ook Midden-Oosten (land 36). iig nog bedankt voor je hulp de laatste keer.

Code:
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 speler=0;
	int aanvaller;
	int verdediger;
	int aantalLanden;

	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, 0, 1);
		speelbord[16]= new Land(16, 237.5, 197.5, "Groot-Brittannië", 		4, verbinding[16],  3, 0, 1);
		speelbord[17]= new Land(17, 312.5, 222.5, "Noord-Europa", 			5, verbinding[17],  3, 0, 1);
		speelbord[18]= new Land(18, 387.5, 222.5, "Oost-Europa", 			6, verbinding[18],  3, 0, 1);
		speelbord[19]= new Land(19, 237.5, 272.5, "West-Europa", 			4, verbinding[19],  3, 0, 1);
		speelbord[20]= new Land(20, 337.5, 297.5, "Zuid-Europa", 			6, verbinding[20],  3, 0, 1);
		speelbord[21]= new Land(21, 262.5, 372.5, "Noord-Afrika",			6, verbinding[21],  4, 0, 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, 1, 1);
		speelbord[37]= new Land(37, 612.5, 372.5, "India", 					4, verbinding[37],  5, 1, 1);
		speelbord[38]= new Land(38, 712.5, 347.5, "Zuid-Oost-Azië", 		3, verbinding[38],  5, 1, 1);
		speelbord[39]= new Land(39, 662.5, 447.5, "Indonesië", 				3, verbinding[39],  6, 1, 1);
		speelbord[40]= new Land(40, 737.5, 447.5, "Nieuw-Guinea", 			3, verbinding[40],  6, 1, 1);
		speelbord[41]= new Land(41, 687.5, 522.5, "West-Australië", 		3, verbinding[41],  6, 1, 1);
		speelbord[42]= new Land(42, 762.5, 497.5, "Oost-Australië", 		2, verbinding[42],  6, 1, 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, p;
		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);
			}
			else
			{
				gr.drawString("Speler Blauw is aan de beurt. ", 30, 635);
			}
		}
		else
		{
			if (speler == 0)
				gr.drawString("Rood heeft dit spel gewonnen.", 30, 635);
			if (speler == 1)
				gr.drawString("Blauw 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);
				}
				else
				{
					gr.setColor(Color.BLUE);
					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, (int) speelbord[i].y -straal, 30, 30);
			}
			else
			{
				if (speelbord[i].eigenaar == 0) gr.setColor(Color.RED);
				else gr.setColor(new Color(0, 200, 255));

				gr.fillOval((int) speelbord[i].x -straal, (int) speelbord[i].y -straal, 30, 30);
				gr.setColor(Color.BLACK);
				gr.drawOval((int) speelbord[i].x -straal, (int) speelbord[i].y -straal, 30, 30);
			}

		} 

		//de waarde van het aantal legers in een land tonen
		gr.setColor(Color.BLACK);
		for (i=1;i<43;i++)
		{
			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);
		}

		//aantallanden
		aantalLanden = 0;
		for (i=1;i<43;i++)
		{
			if (speelbord[i].eigenaar == speler) aantalLanden++;
		}

		//  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) 
		{
			versterkingen = (int)aantalLanden/3 + bonusVersterkingen + afname;
		}

		//tekst links onderin
		if (versterkingsFase == true || fasePlaatsingLegers == true)
		{
			gr.drawString("aantal te plaatsen versterkingen:"+versterkingen,573,560);
		}
		if (aanvalsFase == true && gevecht == false)
		{
			gr.drawString("Selecteer een land om aan te vallen.", 572, 560);
		}
		if(eindeSpel == true)
		{
			gr.drawString("Het spel is ten einde", 580, 560);
		}

		//gevechten
		if (gevecht == true)
		{
			while(speelbord[aanvaller].aantalLegers>1 && speelbord[verdediger].aantalLegers>0)
			{
				p = (int) (Math.random()*36)+1;
				if(p>17)
				{
					speelbord[aanvaller].aantalLegers += -1;
				}

				else
				{
					speelbord[verdediger].aantalLegers += -1;
				}

			}

		}

		if (speelbord[aanvaller].aantalLegers == 1)
		{
			if (speler == 0)
				gr.drawString("Rood heeft verloren en "+speelbord[verdediger].naam +" houdt stand.", 500, 560);
			if (speler == 1)
				gr.drawString("Blauw heeft verloren en "+speelbord[verdediger].naam +" houdt stand.", 500, 560);
			aangeklikt = false;
		}

		if (speelbord[verdediger].aantalLegers == 0)
		{
			speelbord[verdediger].aantalLegers = speelbord[aanvaller].aantalLegers - 1;
			speelbord[aanvaller].aantalLegers = 1;
			speelbord[verdediger].eigenaar = speler;
			aangeklikt = false;
			if (speler == 0)
				gr.drawString("Rood heeft gewonnen en neemt "+speelbord[verdediger].naam +" in.", 500, 560);
			if (speler == 1)
				gr.drawString("Blauw heeft gewonnen en neemt "+speelbord[verdediger].naam +" in.", 500, 560);
			
		}

	}

	public void mouseClicked (MouseEvent me) 
	{
		int i = 1;
		int j;
		int k;
		boolean gevonden = false;
		xpos = me.getX(); 
		ypos = me.getY();

		if (fasePlaatsingLegers == true)
		{ 

			while (i<43 && gevonden == false)
			{  
				if (Math.sqrt(Math.pow(xpos - speelbord[i].x,2)+ Math.pow(ypos - speelbord[i].y, 2)) < straal && speelbord[i].eigenaar==speler && versterkingen >0)  
				{
					gevonden = true;
					speelbord[i].aantalLegers++; 
					afname+=-1;
				}
				i++; 
			}  

		}
		if (versterkingsFase == true) 
		{
			while (i<43 && gevonden == false)
			{  
				if (Math.sqrt(Math.pow(xpos - speelbord[i].x,2)+ Math.pow(ypos - speelbord[i].y, 2)) < straal && speelbord[i].eigenaar==speler && versterkingen >0)  
				{
					gevonden = true;
					speelbord[i].aantalLegers++; 
					afname+=-1;
				}
				i++;
			}

		}

		if (aanvalsFase == true)
		{
			if(aangeklikt == false)
			{
				for (i=1;i<43;i++)
					for (j=0;j<6;j++)
					{
						if (Math.sqrt(Math.pow(xpos - speelbord[i].x,2)+ Math.pow(ypos - speelbord[i].y, 2)) < straal && speelbord[i].eigenaar==speler 
								&& speelbord[i].aantalLegers >1 && speelbord[speelbord[i].buren[j]].eigenaar != speler)
						{
							aangeklikt = true;
							aanvaller = speelbord[i].nummer;
						}
					}
			}

			if(aangeklikt == true)
			{
				for (k=1;k<43;k++)
				{
					if (Math.sqrt(Math.pow(xpos - speelbord[k].x,2)+ Math.pow(ypos - speelbord[k].y, 2)) < straal)
						for(j=0;j<6;j++)
						{
							if (speelbord[k].eigenaar!=speler && speelbord[aanvaller].buren[j] == speelbord[k].buren[j])
							{
								verdediger = speelbord[k].nummer;
								gevecht = true;
							}
						}

				}
			}


		}
		this.repaint();
	}

	public void actionPerformed(ActionEvent me)
	{ 
		if(me.getSource()== eindePlaatsingsFase)
		{
			if (aantalLanden == 42)
			{
				eindeSpel = true;

			}
			else
			{
				if (speler == 0 && versterkingen == 0)
				{
					versterkingen+=19;
					afname = 0;
					speler = 1;
				}
				if (speler == 1 && 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)
		{
			if (speler == 0)
			{
				speler = 1;
				versterkingsFase = true;
				aanvalsFase  = false;

			}
			else if (speler == 1)
			{
				speler = 0;
				versterkingsFase = true;
				aanvalsFase  = false;
			}

		}

		if (fasePlaatsingLegers == true)
		{
			eindePlaatsingsFase.setVisible(true);
			eindeVersterkingsFase.setVisible(false);
			eindeAanvalsFase.setVisible(false);	 
		}
		if (versterkingsFase == true)
		{
			eindePlaatsingsFase.setVisible(false);
			eindeVersterkingsFase.setVisible(true);
			eindeAanvalsFase.setVisible(false);	 
		}
		if (aanvalsFase == true)
		{
			eindePlaatsingsFase.setVisible(false);
			eindeVersterkingsFase.setVisible(false);
			eindeAanvalsFase.setVisible(true);
		}

		if (eindeSpel == true)
		{
			eindePlaatsingsFase.setVisible(false);
			eindeVersterkingsFase.setVisible(false);
			eindeAanvalsFase.setVisible(false);	 
		}

		this.repaint();
	}

	public void mouseEntered (MouseEvent me) {} 
	public void mousePressed (MouseEvent me) {} 
	public void mouseReleased (MouseEvent me) {} 
	public void mouseExited (MouseEvent me) {}

}
Code:
public class Land 
{
	int nummer;
	double x;
	double y;
	String naam;
	int  aantalBuren;
	int[] buren = new int[6];
	int werelddeel;
	int eigenaar;
	int aantalLegers;


	// public Land (nummertje, x0, y0, naampje, aantalBuurtjes, buurtjes, continent, baas)
	public Land(int nummertje, double x0, double y0, String naampje, int aantalBuurtjes, int[] buurtjes, int continent, int baas, int aantalLegertjes)
	{
		nummer = nummertje;
		x = x0;
		y = y0;
		naam = naampje;
		buren = buurtjes;
		aantalBuren = aantalBuurtjes;
		werelddeel = continent;
		eigenaar = baas;
		aantalLegers = aantalLegertjes;

	}
}
 
Westerland,

Bedankt voor alles wat je voor ons gedaan hebt. Morgen moeten we het inleveren, het werkt nu geheel alleen het kan altijd nog wat uitgebreider worden. We hebben het programma voor een groot deel al verandert.

We sturen zo nog wel het eindresultaat.

Nogmaals danku ;)
 
graag gedaan hoor, had alleen geen tijd meer om je bij de laatste vraag te helpen, zit zelf ook met deadlines van een project dat afgemaakt moet worden :D
 
Hier is het eindresultaat, het duurde even omdat onze leraar de usb-stick nog had. Uiteindelijk heeft hij er nog best veel fouten uitgehaald maar nu doet hij het wel.:d

Code:
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;
}
Code:
public class Land 
{
	int nummer;
	double x;
	double y;
	String naam;
	int  aantalBuren;
	int[] buren = new int[6];
	int werelddeel;
	int eigenaar;
	int aantalLegers;


	// public Land (nummertje, x0, y0, naampje, aantalBuurtjes, buurtjes, continent, baas)
	public Land(int nummertje, double x0, double y0, String naampje, int aantalBuurtjes, int[] buurtjes, int continent, int baas, int aantalLegertjes)
	{
		nummer = nummertje;
		x = x0;
		y = y0;
		naam = naampje;
		buren = buurtjes;
		aantalBuren = aantalBuurtjes;
		werelddeel = continent;
		eigenaar = baas;
		aantalLegers = aantalLegertjes;

	}
}
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan