public ComputerBrain(Types vType, Deelnemer vDeelnemer, PointTypes vPointType)
 {
     SetDeelNemer(vDeelnemer);
     SetTroefType(vType);
     SetPointType(vPointType);
     InitializeTroefKaarten();
     kaartenGespeeld = new List<Kaart>();
 }
 public Deelnemer CalculateWinnerOfGame(Deelnemer human, Deelnemer computer)
 {
     if (SoortSpel == PointTypes.POINTS)
     {
         return points(human, computer);
     }
     //winnen op aantal kaarten
     else if (SoortSpel == PointTypes.NUMBEROFCARDS)
     {
         return numberofcards(human, computer);
     }
     //punten van speler zetten en kijken op welk soort hij het meeste heeft ingezet
     else
     {
         if (PointsOnNumberOfCards > PointsOnPoints)
         { //Er staan meer
             return numberofcards(human, computer);
         }
         else
         {
             return points(human, computer);
         }
     }
 }
 public void SetDeelNemer(Deelnemer vdeelnemer)
 {
     this.deelNemer = vdeelnemer;
 }
示例#4
0
        public void StartUpDataWasEntered(string name, int totalpoints, string typeOfPoints, int pointsOnPoints, int pointsOnCards, string troef)
        {
            errormessage = "";
            //Check name
            Regex r = new Regex(@"[^a-zA-Z]");
            if (r.IsMatch(name)) {
                //Error met naam
                errormessage += "Your name contained illegal characters (most likely a space).";
            }
            if (name.Length == 0) {
                errormessage += " You filled in an empty name.";
            }

            bool possible = false;
            if (pointsOnPoints < 0 || pointsOnCards < 0 || totalpoints > 1000)
            {
                errormessage += " You typed an invalid amount.";
            }
            else {
                possible = calc.CalculateIfPointsArePossible(totalpoints, pointsOnPoints, pointsOnCards);
            }

            //Error
            if (!possible) {
                errormessage += " The points you enter must be (max) half of your total points and you cannot have negative points entered.";
            }

            //Check typeOfPoints
            PointTypes pt = PointTypes.POINTS;
                if (typeOfPoints != null && typeOfPoints.Length > 0)
                {
                    pt = (PointTypes)Enum.Parse(typeof(PointTypes), typeOfPoints);
                }
                else { //Error met PointTypesEnum
                errormessage += " Your type of pointdistributor was invalid.";
                }

            //Check Troef
            bool validTroef = false;
            if (troef != null && troef.Length > 0) {
                validTroef = lib.SetTroef(troef);
            }
            if (!validTroef) {
                //Error met troef
                errormessage += " Your troef was invalid.";
            }

            if (errormessage != "")
            {
                //Update view met errormessage
                UpdateViews(ViewCommunicationTypes.ERROR);
            }
            else {
                //Als playernaam nog niet bestaat, sla deze dan op met zijn punten via config
                if (!playersWithPoints.ContainsKey(name)) {
                    conf.SetPlayerAndPoints(name, totalpoints);
                }
                //Set soort spel in PointCalculator en geef ook de punten mee.
                calc.SoortSpel = pt;
                //Zet troef als troef...
                    //al gedaan hierboven ^
                calc.Troef = lib.GetTroef();
                calc.PointsOnPoints = pointsOnPoints;
                calc.PointsOnNumberOfCards = pointsOnCards;
                //Maak Kaartenspel aan
                    //Al gedaan via constructor...
                //Schud de kaarten
                lib.ShakeCards();
                //Maak human player
                List<KaartenLib.Kaart> kaartenspeler = new List<KaartenLib.Kaart>(10);
                for (int i = 0; i < 10; i++) {
                    kaartenspeler.Add(lib.PullTopCard());
                }
                lib.FlipCardsToFrontSide(ref kaartenspeler);
                humanPlayer = new Deelnemer(name, kaartenspeler, totalpoints);
                //Maak computer player
                List<KaartenLib.Kaart> kaartencomp = new List<KaartenLib.Kaart>(10);
                for (int i = 0; i < 10; i++)
                {
                    kaartencomp.Add(lib.PullTopCard());
                }
                computerPlayer = new Deelnemer("computer", kaartencomp, 1000);
                //Maak de computerbrain en geef jezelf en de computer mee
                brain = new ComputerBrain(lib.GetTroef(), computerPlayer, pt);
                //Maak nieuwe View aan.
                System.Windows.Forms.Form f = (System.Windows.Forms.Form)activeView;
                f.Close();
                f.Dispose();
                activeView = new Game(this, controller);
                activeView.SetVisible(true);
            }
        }
 public Deelnemer CalculateWinnerOfRound(Deelnemer human, Kaart kaartspeler, Deelnemer computer, Kaart kaartcomputer, bool humanPlayedFirst)
 {
     if (humanPlayedFirst)
     {
         if (kaartspeler.Type == kaartcomputer.Type)
         {
             //Kijk naar Waarde van kaarten
             if (fromWaardesToPointsPerValue(kaartspeler.Waarde) > fromWaardesToPointsPerValue(kaartcomputer.Waarde))
             {
                 return human;
             }
             else
             {
                 return computer;
             }
         }
         else if (kaartcomputer.Type != Troef && kaartspeler.Type != kaartcomputer.Type)
         {
             //Speler wint want computer heeft gewoon een random kaart gelegd...
             return human;
         }
         else if (kaartcomputer.Type == Troef && kaartspeler.Type != Troef)
         {
             //Computer wint want die heeft een troef gelegd
             return computer;
         }
     }
     else
     {
         if (kaartspeler.Type == kaartcomputer.Type)
         {
             //Kijk naar Waarde van kaarten
             if (fromWaardesToPointsPerValue(kaartspeler.Waarde) > fromWaardesToPointsPerValue(kaartcomputer.Waarde))
             {
                 return human;
             }
             else
             {
                 return computer;
             }
         }
         else if (kaartspeler.Type != Troef && kaartspeler.Type != kaartcomputer.Type)
         {
             //Computer wint want speler heeft gewoon een random kaart gelegd...
             return computer;
         }
         else if (kaartspeler.Type == Troef && kaartcomputer.Type != Troef)
         {
             //Speler wint want die heeft een troef gelegd
             return human;
         }
     }
     //Normaal niet nodig maar hij klaagt als deze return er niet is omdat ik hierop terecht kom als em niet in de else-iffen gaat.
     return computer;
 }
 private Deelnemer points(Deelnemer human, Deelnemer comp)
 {
     //Lijst human afgaan en alle punten optellen
     int humanpoints = 0;
     int comppoints = 0;
     foreach (Kaart k in human.KaartenOpTafelGewonnen) {
         humanpoints += (int) fromWaardesToPointsPerValue(k.Waarde);
     }
     foreach (Kaart k in comp.KaartenOpTafelGewonnen) {
         comppoints += (int) fromWaardesToPointsPerValue(k.Waarde);
     }
     if (humanpoints > comppoints)
     {
         return human;
     }
     else {
         return comp;
     }
 }
 private Deelnemer numberofcards(Deelnemer human, Deelnemer comp)
 {
     if (human.AantalBeurtenGewonnen > comp.AantalBeurtenGewonnen)
     {
         return human;
     }
     else {
         return comp;
     }
 }
        public int GetNewTotalpoints(Deelnemer human, Deelnemer computer)
        {
            int total = human.Totalpoints;
            if (SoortSpel == PointTypes.POINTS)
            {
                //Human wint
                if (human.Equals(CalculateWinnerOfGame(human, computer)))
                {
                    total += (PointsOnPoints * 2);
                }
                //Computer wint
                else {
                    total -= (PointsOnPoints * 2);
                }
            }
            //winnen op aantal kaarten
            else if (SoortSpel == PointTypes.NUMBEROFCARDS)
            {
                //Human wint
                if (human.Equals(CalculateWinnerOfGame(human, computer)))
                {
                    total += (PointsOnNumberOfCards * 2);
                }
                //Computer wint
                else
                {
                    total -= (PointsOnNumberOfCards * 2);
                }
            }
            //punten van speler zetten en kijken op welk soort hij het meeste heeft ingezet
            else
            {
                //Human wint
                if (human.Equals(CalculateWinnerOfGame(human, computer)))
                {
                    total += (PointsOnPoints * 2);
                }
                //Computer wint
                else
                {
                    total -= (PointsOnPoints * 2);
                }

                //Human wint
                if (human.Equals(CalculateWinnerOfGame(human, computer)))
                {
                    total += (PointsOnNumberOfCards * 2);
                }
                //Computer wint
                else
                {
                    total -= (PointsOnNumberOfCards * 2);
                }
            }

            return total;
        }