private static int CalculateScoreAfterRemovingAWord(CrozzlePartial cp, Word removeWord) { int score = cp.GetScore(); // reverse the process of adding a word score -= PublicInfo.GetPointsPerWord(); for (int i = 0; i < cp.GetUsedWord().Count; i++) { if (!cp.GetUsedWord()[i].GetType().Equals(removeWord.GetType()) && CrozzleValidation.Crossing(cp.GetUsedWord()[i], removeWord)) { char crossingLetter = CrozzleValidation.GetCrossingLetter(cp.GetUsedWord()[i], removeWord); score -= WordInfo.intersectingPointsPerLetter[crossingLetter]; score += WordInfo.nonIntersectingPointsPerLetter[crossingLetter]; } } return(score); }
private CrozzlePartial GenerateInitialCrozzle(string initialWordContent, List <string> wlist) { CrozzlePartial cp = new CrozzlePartial(); // set initial word position Word initialWord = SetInitialWordPositionAndCrozzlePosition(initialWordContent, cp); // set initial crozzle List <Word> usedWord = new List <Word>(); usedWord.Add(initialWord); Grid g = new Grid(PublicInfo.GetFullRows(), PublicInfo.GetFullColumns(), usedWord); cp.SetGrid(g); cp.SetUsedWord(usedWord); cp.SetWordlist(wlist); int initialScore = GetInitialScore(initialWordContent); cp.SetScore(initialScore + PublicInfo.GetPointsPerWord()); return(cp); }