daily pastebin goal
40%
SHARE
TWEET

Untitled

a guest Feb 22nd, 2019 56 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using KaartenLib;
  6. using WiezenMetTweeApp.model.businessEntities;
  7.  
  8. namespace WiezenMetTweeApp {
  9.     class ComputerBrain : IComputerBrain {
  10.  
  11.         private Types troefType;
  12.         private Deelnemer deelNemer;
  13.         private PointTypes pointType;
  14.         private List<Kaart> troefKaarten;
  15.         private List<Kaart> kaartenGespeeld;
  16.  
  17.  
  18.         public ComputerBrain(Types vType, Deelnemer vDeelnemer, PointTypes vPointType) {
  19.             SetDeelNemer(vDeelnemer);
  20.             SetTroefType(vType);
  21.             SetPointType(vPointType);
  22.             InitializeTroefKaarten();
  23.             kaartenGespeeld = new List<Kaart>();
  24.         }
  25.  
  26.         public KaartenLib.Kaart counterMove(KaartenLib.Kaart spelerKaart) {
  27.             Kaart kaart = null;
  28.             if (pointType == PointTypes.POINTS) {
  29.                 kaart = this.GetKaartPuntenSpel(spelerKaart);
  30.             }
  31.             return kaart;
  32.         }
  33.  
  34.         public KaartenLib.Kaart makeFirstMove() {
  35.             Kaart kaart = null;
  36.             if (pointType == PointTypes.POINTS) {
  37.                 if (TroefKaartenOver()) {
  38.                     kaart = this.GetHoogsteTroefKaart();
  39.                     kaartenGespeeld.Add(kaart);
  40.                     deelNemer.KaartenInHand.Remove(kaart);
  41.                     this.troefKaarten.Remove(kaart);
  42.                 }
  43.                 else {
  44.                     kaart = this.GetHoogsteKaart();
  45.                     deelNemer.KaartenInHand.Remove(kaart);
  46.                     this.kaartenGespeeld.Add(kaart);
  47.                 }
  48.             }
  49.             return kaart;
  50.         }
  51.  
  52.         public void SetTroefType(Types type) {
  53.             this.troefType = type;
  54.         }
  55.  
  56.         public void SetDeelNemer(Deelnemer vdeelnemer) {
  57.             this.deelNemer = vdeelnemer;
  58.         }
  59.  
  60.         public void SetPointType(PointTypes vPointType) {
  61.             this.pointType = vPointType;
  62.         }
  63.  
  64.         private void InitializeTroefKaarten() {
  65.             troefKaarten = new List<Kaart>();
  66.             foreach (Kaart kaart in deelNemer.KaartenInHand) {
  67.                 if (kaart.Type == this.troefType) {
  68.                     this.troefKaarten.Add(kaart);
  69.                 }
  70.             }
  71.         }
  72.  
  73.         private Boolean TroefKaartenOver() {
  74.             return this.troefKaarten.Count > 0;
  75.         }
  76.  
  77.         private Boolean NogGeenKaartenGespeeld() {
  78.             return this.kaartenGespeeld.Count == 0;
  79.         }
  80.  
  81.         private Kaart GetHoogsteTroefKaart() {
  82.             Kaart hoogste = null;
  83.             int max = int.MinValue;
  84.             foreach (Kaart kaart in this.troefKaarten) {
  85.                 if ((int)(PointsPerValue)kaart.Waarde > max) {
  86.                     hoogste = kaart;
  87.                     max = (int)(PointsPerValue)kaart.Waarde;
  88.                 }
  89.             }
  90.             return hoogste;
  91.         }
  92.  
  93.         private Kaart GetHoogsteKaart() {
  94.             Kaart hoogste = null;
  95.             int max = int.MinValue;
  96.             foreach (Kaart kaart in deelNemer.KaartenInHand) {
  97.                 if ((int)(PointsPerValue)kaart.Waarde > max) {
  98.                     hoogste = kaart;
  99.                     max = (int)(PointsPerValue)kaart.Waarde;
  100.                 }
  101.             }
  102.             return hoogste;
  103.         }
  104.  
  105.  
  106.         private Boolean HebIkKaartenVanDatType(Kaart kaart) {
  107.             Boolean result = false;
  108.             Boolean gevonden = false;
  109.             for (int i = 0; i < deelNemer.KaartenInHand.Count() && !gevonden; i++) {
  110.                 if (deelNemer.KaartenInHand[i].Type == kaart.Type) {
  111.                     gevonden = true;
  112.                     result = true;
  113.                 }
  114.             }
  115.             return result;
  116.         }
  117.  
  118.         private Kaart GetKaartPuntenSpel(Kaart kaart) {
  119.             Kaart vKaart = null;
  120.             /*1) Heb ik een kaart da hoger is en van hetzelfde type als de gegeven kaart?
  121.                  Ja: -Maak een lijst van die kaarten en pak er de laagste kaart uit
  122.              * Nee: Heb ik mischien een troefkaart die hoger is dan de kaart? ook kijken of de kaart die gelegt is
  123.              * zelf geen troefkaart is.
  124.              * Als ik ook geen troefkaart heb die hoger is moet ik kijken of ik er wel van da type heb
  125.              * als ik er van da type heb moet ik de laagste teruggeven met da type
  126.              * als ik er geen van da type heb moet in het algemeen mijn laagste kaart teruggeven denk er aan een troefkaart = *2
  127.              */
  128.             if (this.HebIkKaartenVanDatType(kaart)) {
  129.                 //geef lijst me ale kaarten met zelfde type die groter zijn
  130.                 //kijk als deze lijst ni 0
  131.                 List<Kaart> lijst = this.GetKaartenVanZelfdeTypeDieGroterZijnDanKaart(kaart);
  132.                 //als de lijst ni 0 is geef dan de laagste kaart van die lijst terug
  133.                 if (lijst.Count() > 0) {
  134.                     //geef laagste kaart uit de lijst
  135.                     vKaart = this.GetLaagsteKaartUitLijst(lijst);
  136.                 }
  137.                 else if (this.troefKaarten.Count() > 0) {
  138.                     //kijken of ik een troefkaart heb die groter is
  139.                     //indien ja dan daaruit de laagste pakken, indien nee:
  140.                     if (this.GetLijstMetTroefKaartenGroterDan(kaart).Count() > 0) {
  141.                         //geef de laagste troefkaart uit die lijst
  142.                         vKaart = this.GetLaagsteKaartUitLijst(this.GetLijstMetTroefKaartenGroterDan(kaart));
  143.                     }
  144.                     else {
  145.                         //lijst maken van alle kaarten uit da type en daar de laagste van teruggeven
  146.                         vKaart = this.GetLaagsteKaarteVanDatType(kaart);
  147.                     }
  148.                 }
  149.                 else {
  150.                     vKaart = this.GetLaagsteKaarteVanDatType(kaart);
  151.                 }
  152.             }
  153.             else {
  154.                 //geef de laagste kaart da geen troef kaart is indien ge geen normale kaarten hebt geef de laagste troefkaart
  155.                 if (this.MaakLijstMetKaartenDieGeenTroefKaartZijn().Count > 0) {
  156.                     vKaart = this.GetLaagsteKaartUitLijst(this.MaakLijstMetKaartenDieGeenTroefKaartZijn());
  157.                 }
  158.                 else {
  159.                     vKaart = this.GetLaagsteKaartUitLijst(deelNemer.KaartenInHand);
  160.                 }
  161.  
  162.             }
  163.             //hier kaart u hand verwijderen en kijken als het ne troefkaart was ook verwijderen in lijst troefkaarten
  164.             if (vKaart == null) {
  165.                 vKaart = this.GetLaagsteKaartUitLijst(deelNemer.KaartenInHand);
  166.             }
  167.             if (vKaart.Type == this.troefType) {
  168.                 this.troefKaarten.Remove(vKaart);
  169.             }
  170.             this.kaartenGespeeld.Add(vKaart);
  171.             deelNemer.KaartenInHand.Remove(vKaart);
  172.             return vKaart;
  173.         }
  174.  
  175.         private List<Kaart> GetKaartenVanZelfdeTypeDieGroterZijnDanKaart(Kaart kaart) {
  176.             List<Kaart> lijst = new List<Kaart>();
  177.             foreach (Kaart k in deelNemer.KaartenInHand) {
  178.                 if (k.Type == kaart.Type) {
  179.                     if ((int)(PointsPerValue)k.Waarde > (int)(PointsPerValue)kaart.Waarde) {
  180.                         lijst.Add(k);
  181.                     }
  182.                 }
  183.             }
  184.             return lijst;
  185.         }
  186.  
  187.         private Kaart GetLaagsteKaartUitLijst(List<Kaart> lijst) {
  188.             Kaart k = null;
  189.             int min = int.MaxValue;
  190.             foreach (Kaart kaart in lijst) {
  191.                 if ((int)(PointsPerValue)kaart.Waarde < min) {
  192.                     min = (int)(PointsPerValue)kaart.Waarde;
  193.                     k = kaart;
  194.                 }
  195.             }
  196.             return k;
  197.         }
  198.  
  199.         private Kaart GetLaagsteKaarteVanDatType(Kaart kaart) {
  200.             Kaart vKaart = null;
  201.             List<Kaart> lijst = new List<Kaart>();
  202.             foreach (Kaart k in deelNemer.KaartenInHand) {
  203.                 if (k.Type == kaart.Type) {
  204.                     lijst.Add(k);
  205.                 }
  206.             }
  207.             vKaart = this.GetLaagsteKaartUitLijst(lijst);
  208.             return vKaart;
  209.         }
  210.  
  211.         private List<Kaart> GetLijstMetTroefKaartenGroterDan(Kaart kaart) {
  212.             List<Kaart> lijst = new List<Kaart>();
  213.             int waardeKaart = (int)(PointsPerValue)kaart.Waarde;
  214.             if (kaart.Type == this.troefType) {
  215.                 waardeKaart = waardeKaart * 2;
  216.             }
  217.             foreach (Kaart k in this.troefKaarten) {
  218.                 if ((2 * (int)(PointsPerValue)k.Waarde) > waardeKaart) {
  219.                     lijst.Add(k);
  220.                 }
  221.             }
  222.             return lijst;
  223.         }
  224.  
  225.         private List<Kaart> MaakLijstMetKaartenDieGeenTroefKaartZijn() {
  226.             List<Kaart> lijst = new List<Kaart>();
  227.             foreach (Kaart k in deelNemer.KaartenInHand) {
  228.                 if (k.Type != this.troefType) {
  229.                     lijst.Add(k);
  230.                 }
  231.             }
  232.             return lijst;
  233.         }
  234.  
  235.     }
  236. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top