public BidType AskForBid(Contract currentContract, IList <BidType> allowedBids, IList <BidType> previousBids) { this.Contract = currentContract; while (true) { this.Draw(); var availableBidsAsString = AvailableBidsAsString(allowedBids); ConsoleHelper.WriteOnPosition(availableBidsAsString, 0, Settings.ConsoleHeight - 2); ConsoleHelper.WriteOnPosition("It's your turn! Please enter your bid: ", 0, Settings.ConsoleHeight - 3); BidType bid; var playerContract = Console.ReadLine(); if (string.IsNullOrWhiteSpace(playerContract)) { continue; } playerContract = playerContract.Trim(); switch (char.ToUpper(playerContract[0])) { case 'A': bid = BidType.AllTrumps; break; case 'N': bid = BidType.NoTrumps; break; case 'S': bid = BidType.Spades; break; case 'H': bid = BidType.Hearts; break; case 'D': bid = BidType.Diamonds; break; case 'C': bid = BidType.Clubs; break; case 'P': bid = BidType.Pass; break; case '2': bid = BidType.Double; break; case '4': bid = BidType.ReDouble; break; default: continue; } if (allowedBids.Contains(bid)) { return(bid); } } }