Anoniem2 Geplaatst: 10 maart 2009 Delen Geplaatst: 10 maart 2009 Goedenavond,\r\n\r\nIk heb een programma code welke voorzien moet worden van commentaar.\r\nBij elk stuk code moet uitgelegd worden wat er gedaan wordt. Het hoeft niet heel uitgebreid als er maar staat wat de operators en variabelen doen.\r\n\r\nHet programma bevat niet al te veel code en is hier te downloaden:\r\n[url]http://www.jsdstudios.nl/Boter%20Kaas%20en%20Eieren.zip[/url] \r\n\r\nEen eventuele vergoeding is mogelijk. Alvast bedankt!\r\n\r\nGroet,\r\nJSD1985 Quote Link naar reactie
Anoniem2 Geplaatst: 10 maart 2009 Auteur Delen Geplaatst: 10 maart 2009 Als ik je zipfile download heb ik 18 bestanden in diverse (sub)mappen. Welke bestand/code gaat het om? Quote Link naar reactie
Anoniem2 Geplaatst: 10 maart 2009 Auteur Delen Geplaatst: 10 maart 2009 Het beste is om het bestand \"Boter kaas en eieren\" met Microsoft Visual Studio te openen.\n\nIndien men geen Visual Studio heeft dan kan je met de rechtermuisknop op het bestand \"tic_model.cs\" klikken en ervoor kiezen om deze te openen met kladblok, dreamweaver o.i.d. Quote Link naar reactie
Anoniem2 Geplaatst: 10 maart 2009 Auteur Delen Geplaatst: 10 maart 2009 Het gaat trouwens om deze code:\n\n[code]\nnamespace tictactoe \n{\n using System;\n using System.Collections;\n using System.Text.RegularExpressions;\n using System.Windows.Forms;\n\n public class TicTacToeModel \n {\n public enum utility: int \n {\n MaxWin = 1,\n Draw = 0,\n MinWin = -1\n }\n private ArrayList validOperators;\n private char machineChar;\n private char userChar;\n private string game;\n public string Game \n {\n get \n {\n return game;\n }\n }\n \n public void Initialise(bool pGoFirst) \n {\n // Initialiseren wie met \'X\' speelt en wie met \'O\'\n machineChar = pGoFirst ? \'X\':\'O\';\n userChar = pGoFirst ? \'O\':\'X\';\n //Resetten van de string\n this.game = \" \";\n this.game += \" \";\n this.game += \" \";\n //Posities 0 t/m 8\n validOperators = new ArrayList(8);\n for (int i = 0; i<9; i++)\n validOperators.Add(i);\n }\n\n public bool MakeBestMove(bool pMaxTurn) \n {\n if (!TerminalTest(this.game)) \n {\n ArrayList operators;\n minimaxValueSuccesors(out operators, this.game, pMaxTurn, this.validOperators);\n #if Debug\n \n #endif\n //Selecteer een operator willekeurig\n int liOperator = (int)operators[new Random().Next(operators.Count)];\n //Het toepassen van de operator en deze verwijderen van de ArrayList met geldige operators\n this.game = ApplyMove(liOperator, this.game, pMaxTurn);\n this.validOperators.Remove(liOperator);\n }\n return (TerminalTest(this.game)); //Als het spel is afgelopen word return true\n } \n\n public bool MakeMove(int viOperator, bool vbMaxTurn) \n {\n //Is de operator geldig?\n if (this.validOperators.Contains(viOperator) & !TerminalTest(this.game)) \n {\n //Het toepassen van de operator en deze verwijderen van de lijst \'geldige\' operators\n this.game = ApplyMove(viOperator, this.game, vbMaxTurn);\n this.validOperators.Remove(viOperator);\n }\n return (TerminalTest(this.game)); //Als het spel is afgelopen word return true\n } \n\n //Private Methodes\n private string ApplyMove(int pOperator, string pGame, bool pMaxTurn) \n {\n return (pGame.Substring(0, pOperator) + \n (pMaxTurn ? machineChar : userChar) + \n pGame.Substring(pOperator+1));\n }\n\n private utility minimaxValueSuccesors(out ArrayList pOperator, string pGame, bool pMaxTurn, ArrayList pOperators) \n {\n utility value;\n utility maxValue = utility.MinWin;\n utility minValue = utility.MaxWin;\n ArrayList bestOps = new ArrayList();\n ArrayList worstOps = new ArrayList();\n ArrayList operatorsLeft;\n string workingGame;\n // Loop voor alle operators.\n foreach (int lOperator in pOperators) \n {\n workingGame = ApplyMove(lOperator, pGame, pMaxTurn);\n operatorsLeft = (ArrayList)pOperators.Clone();\n operatorsLeft.Remove(lOperator);\n value = minimaxValueForState(workingGame, pMaxTurn, operatorsLeft);\n\n if (value > maxValue) bestOps = new ArrayList();\n\n if (value >= maxValue) \n {\n bestOps.Add(lOperator);\n maxValue = value;\n }\n\n if (value < minValue) worstOps = new ArrayList();\n \n if (value <= minValue) \n { \n worstOps.Add(lOperator);\n minValue = value;\n }\n }\n\n pOperator = pMaxTurn ? bestOps : worstOps;\n return (pMaxTurn ? maxValue : minValue); \n }\n\n //true = X aan de beurt, false = O aan de beurt\n private utility minimaxValueForState(string pGame, bool pMaxTurn, ArrayList pOperators) \n {\n utility lUtility; \n ArrayList dummy;\n \n if (TerminalTest(pGame)) \n lUtility = UtilityTest(pGame);\n else \n lUtility = minimaxValueSuccesors(out dummy, pGame, !pMaxTurn, pOperators);\n \n return lUtility;\n }\n\n#if RegExp\n\n#else\n public utility UtilityTest (string pGame) \n {\n utility utility = utility.Draw; //0 is gelijkspel\n char[] aGame;\n aGame = pGame.ToCharArray();\n \n //Bovenste rij horizontaal\n if (aGame[0].Equals(aGame[1]) & aGame[0].Equals(aGame[2]) & !aGame[0].Equals(\' \')) \n utility = aGame[0].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n //Middelste rij horizontaal\n if (aGame[3].Equals(aGame[4]) & aGame[3].Equals(aGame[5]) & !aGame[3].Equals(\' \')) \n utility = aGame[3].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n //Onderste rij horizontaal\n if (aGame[6].Equals(aGame[7]) & aGame[6].Equals(aGame[8]) & !aGame[6].Equals(\' \')) \n utility = aGame[6].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n //De 1ste rij verticaal (links)\n if (aGame[0].Equals(aGame[3]) & aGame[0].Equals(aGame[6]) & !aGame[0].Equals(\' \')) \n utility = aGame[0].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n //De middelste rij verticaal\n if (aGame[1].Equals(aGame[4]) & aGame[1].Equals(aGame[7]) & !aGame[1].Equals(\' \')) \n utility = aGame[1].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n //De 3e rij verticaal (rechts)\n if (aGame[2].Equals(aGame[5]) & aGame[2].Equals(aGame[8]) & !aGame[2].Equals(\' \')) \n utility = aGame[2].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n //De 1ste diagonale rij\n if (aGame[0].Equals(aGame[4]) & aGame[0].Equals(aGame[8]) & !aGame[0].Equals(\' \')) \n utility = aGame[0].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n //De 2e diagonale rij\n if (aGame[2].Equals(aGame[4]) & aGame[2].Equals(aGame[6]) & !aGame[2].Equals(\' \')) \n utility = aGame[2].Equals(machineChar) ? utility.MaxWin : utility.MinWin;\n \n return utility;\n }\n#endif\n\n private bool TerminalTest (string pGame) \n {\n bool terminal = false; //Standaard voorwaarde\n if (pGame.IndexOf(\' \') == -1) //Controle of de \'grid\' vol is\n terminal = true;\n else\n terminal = (UtilityTest(pGame) == utility.Draw) ? false : true; // Check if someone has won\n return terminal;\n }\n }\n}\n[/code]\n\nGewoon het commentaar in een reply mag ook. \n\nIk heb deze code van internet af en enigzins aangepast maar ik snap nog weinig van het geheel, vandaar mijn vraag of iemand met wat commentaar in de code kan toelichten hoe het werkt, hoeft niet geheel uitgebreid maar dat ik een beetje een idee krijg.\n\nIk zou het fijn vinden als iemand mij hiermee zou kunnen helpen.\n\nGroet,\nJeroen Quote Link naar reactie
Anoniem2 Geplaatst: 11 maart 2009 Auteur Delen Geplaatst: 11 maart 2009 Denk je niet dat het veel leerzamer is als je dat zelf probeert? Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen