/// <summary> /// Processes most recent horizontal/vertical row. returns "" if player puts a space between letters. /// </summary> /// <param name="mostRecentLetter"></param> /// <param name="recentWord"></param> /// <param name="isHorizontal"></param> public void ProcessMostRecentRow(GamePiece mostRecentLetter, List <GamePiece> recentWord, bool isHorizontal) { List <GamePiece> part1 = new List <GamePiece>(); List <GamePiece> part2 = new List <GamePiece>(); List <GamePiece> part3 = new List <GamePiece>(); List <GamePiece> part4 = new List <GamePiece>(); if (isHorizontal) { RecentHorizontalRow.ForEach(e => { if (e.X <= mostRecentLetter.X) { part1.Add(e); } else { part2.Add(e); } }); } else { RecentVerticalRow.ForEach(e => { if (e.Y <= mostRecentLetter.Y) { part1.Add(e); } else { part2.Add(e); } }); } part1.Reverse(); foreach (GamePiece square in part1) { if (square.LetterChar != '*') { part3.Add(square); } } foreach (GamePiece square in part2) { if (square.LetterChar != '*') { part4.Add(square); } } part3.Reverse(); part3.AddRange(part4); foreach (GamePiece square in part3) { recentWord.Add(square); } }
//look for recent rows and columns public void FindMostRecentRows(GamePiece mostRecentLetter) { for (int i = 0; i < BoardPieceCount; i++) { for (int j = 0; j < BoardPieceCount; j++) { if (boardPieces[j][i].Y == mostRecentLetter.Y) { RecentHorizontalRow.Add(boardPieces[j][i]); } if (boardPieces[j][i].X == mostRecentLetter.X) { RecentVerticalRow.Add(boardPieces[j][i]); } } } }