public Boolean doZet(int pos) { if (speelVeld[pos] == null) { speelVeld[pos] = new SpeelSteen(speler1.type); return(true); } return(false); }
public void computerDoeZetBestePlek(SpeelSteenType computerSpeelType, SpeelSteenType spelerSpeelType, int speelModus) { /* SpeelModus: * 0 = easy * 1 = medium * 2 = hard */ //haalt het type speelsteen van de computer op en van de speler SpeelSteenType computerType = computerSpeelType; SpeelSteenType opponentType = spelerSpeelType; //vindt eerst alle stukken van de tegenstander List <int> stukkenTegenstanderPositie = new List <int>(); for (int i = 0; i < speelStenen.Length; i++) { if (speelStenen[i] != null && speelStenen[i].type == opponentType) { stukkenTegenstanderPositie.Add(i); } } if (speelModus != 0) //easy speelmodus, random lege plek { //moet nu checke of de tegenstander drie op een rij heeft in een volgende beurt if (stukkenTegenstanderPositie.Count > 1) //checkt eerst of de tegenstander wel minimaal 2 stukken heeft staan { int bestPlaceToPutIn = geBestPlaceToPutStukForSpeelSteenType(computerType); //checkt of de computer bijna 3 op een rij heeft if (bestPlaceToPutIn < 0) //tegenstander heeft nog niet bijna 3 op een rij { //checkt de positie van de tegenstander, waar deze 3 op een rij heeft bestPlaceToPutIn = geBestPlaceToPutStukForSpeelSteenType(opponentType); if (bestPlaceToPutIn < 0) //ook geen plekken waar de computer 3 op een rij kan hebben { if (speelModus != 1) //als het GEEN medium speelmodus is, easy wordt hierboven al afgevangen { //wat hier uitgevoerd wordt, is dus hard speel modus if (checkPlayerGotAmountHooks(opponentType) > 0) { //speler heeft minimaal 2 stukken, waarvan 1 in de hoek staan! if (stukkenTegenstanderPositie.Count == 2) //als de tegenstander precies 2 stukken heeft staan { if (checkPlayerGotAmountHooks(opponentType) > 1) //als het aantal hoekstukken groter is dan 1 (dan de 2 stukken die de speler heeft) { //als er 2 stukken in de hoek staan, dan staat 1 stuk van de computer in het midden //het andere stuk moet in een NIET hoek positie bestPlaceToPutIn = getRandomNOThoekPlace(); } else { //geen 2 stukken in de hoek //dan staan ze waarschijnlijk shuin tegenover, dit wordt zo voorkomen op een statische manier bestPlaceToPutIn = findSchuinTegenOverElkaar(opponentType); } } else { bestPlaceToPutIn = getRandomMiddleNOThoekPlace(); //pakt een NIET hoekplek als het mogenlijk is } } } //kijkt voor een random lege hoekplek int randHoekPlek = getRandomMiddleAndHoekPlace(); if (randHoekPlek != -1 && bestPlaceToPutIn == -1) //als er een hoekplek beschikbaar is en er nog geen stuk is gevonde waar een plek is { bestPlaceToPutIn = randHoekPlek; //System.Windows.Forms.MessageBox.Show("rand hoek" + bestPlaceToPutIn); } else if (bestPlaceToPutIn == -1) //geen hoekplek beschikbaar, kiest een random lege plek { bestPlaceToPutIn = getRandomEmptyPlace(); //System.Windows.Forms.MessageBox.Show("rand" + bestPlaceToPutIn); } //System.Windows.Forms.MessageBox.Show("rand 2" + placeToPutIn + " best:" + bestPlaceToPutIn); } //System.Windows.Forms.MessageBox.Show("rand 3" + placeToPutIn + " best:" + bestPlaceToPutIn); } //System.Windows.Forms.MessageBox.Show("- " + " best:" + bestPlaceToPutIn); speelStenen[bestPlaceToPutIn] = new SpeelSteen(computerType); //System.Windows.Forms.MessageBox.Show("" + bestPlaceToPutIn); } else //tegenstander heeft nog geen 2 stukken staan. eeerste zet dus { int bestPlaceToPutIn = -1; //kiest het midden en anders een random lege hoekplek en nog anders een random lege plek int randHoekPlek = getRandomMiddleAndHoekPlace(); //zet hem in het midden neer als het kan en anders in de hoek if (randHoekPlek != -1) //als er een lege hoekplek is en bestPlaceToPutIn -1 is { bestPlaceToPutIn = randHoekPlek; } else if (bestPlaceToPutIn == -1) { bestPlaceToPutIn = getRandomEmptyPlace(); } //System.Windows.Forms.MessageBox.Show("" + bestPlaceToPutIn); speelStenen[bestPlaceToPutIn] = new SpeelSteen(computerType); } } else //easy speelmodus, kiest een random lege plek { int bestPlaceToPutIn = getRandomEmptyPlace(); speelStenen[bestPlaceToPutIn] = new SpeelSteen(computerType); } }