C# Poker Game: Refactor method to evaluate poker handsNested if statements with 3 different parametersWeb service performing different tasksHow to refactor multiple if statements?Simplistic (dumb) Card FighterTransaction handling for multiple SQL statementsChecking if two numbers have the same signPoker Hand EvaluatorPoker hand probability — tally best 5 from all combination of 7My attempt at a Blackjack gameGame tournament service - core logic for matchmaking and results
Lowest total scrabble score
What is this called? Old film camera viewer?
Is the U.S. Code copyrighted by the Government?
Multiplicative persistence
Loading commands from file
In Qur'an 7:161, why is "say the word of humility" translated in various ways?
Removing files under particular conditions (number of files, file age)
If a character has darkvision, can they see through an area of nonmagical darkness filled with lightly obscuring gas?
Open a doc from terminal, but not by its name
Which one is correct as adjective “protruding” or “protruded”?
What is the evidence for the "tyranny of the majority problem" in a direct democracy context?
why `nmap 192.168.1.97` returns less services than `nmap 127.0.0.1`?
On a tidally locked planet, would time be quantized?
It grows, but water kills it
250 Floor Tower
Freedom of speech and where it applies
Pre-mixing cryogenic fuels and using only one fuel tank
What was the exact wording from Ivanhoe of this advice on how to free yourself from slavery?
Why does the Sun have different day lengths, but not the gas giants?
What are the purposes of autoencoders?
The screen of my macbook suddenly broken down how can I do to recover
How do you make your own symbol when Detexify fails?
Is it improper etiquette to ask your opponent what his/her rating is before the game?
Creepy dinosaur pc game identification
C# Poker Game: Refactor method to evaluate poker hands
Nested if statements with 3 different parametersWeb service performing different tasksHow to refactor multiple if statements?Simplistic (dumb) Card FighterTransaction handling for multiple SQL statementsChecking if two numbers have the same signPoker Hand EvaluatorPoker hand probability — tally best 5 from all combination of 7My attempt at a Blackjack gameGame tournament service - core logic for matchmaking and results
$begingroup$
Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).
I'm working on refactoring an old poker game that I created, which is a .NET Framework console application, and I came across this method.
/// <summary>
/// Evaluates the value of the player hand and computer hand.
/// </summary>
/// <param name="pComputerHand">The computer's current hand.</param>
/// <param name="pPlayerHand">The player's current hand.</param>
/// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)
// Stores the value of the player and computer hands.
int playerHandValue = 0;
int computerHandValue = 0;
// Evaluates the value of computer hand
foreach(SuperCard card in pComputerHand)
computerHandValue += (int)card.CardRank;
// Evaluates the value of player hand
foreach(SuperCard card in pPlayerHand)
playerHandValue += (int)card.CardRank;
// If there is a royal flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nBoth players have a royal flush!");
return false;
// If there is a royal flush in the player's hand, the player won.
if (PokerHands.RoyalFlush(pPlayerHand))
Console.WriteLine("nYou have a royal flush!");
return true;
// If there is a royal flush in the computer's hand, the player lost.
if (PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nThe computer has a royal flush!");
return false;
#region Straight Flush
// If there is a straight flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nBoth players have a straight flush!");
return false;
// If there is a straight flush in the player's hand, the player won.
if (PokerHands.StraightFlush(pPlayerHand))
Console.WriteLine("nYou have a straight flush!");
return true;
// If there is a straight flush in the computer's hand, the player lost.
if (PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nThe computer has a straight flush!");
return false;
#endregion
#region Four Of A Kind
// If there is a four of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a four of a kind!");
return false;
// If there is a four of a kind in the player's hand, the player won.
if (PokerHands.FourOfAKind(pPlayerHand))
Console.WriteLine("nYou have a four of a kind!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nThe computer has four of a kind!");
return false;
#endregion
#region Full House
// If there is a full house in the computer's hand and the player's hand, the player lost.
if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nBoth players have a full house!");
return false;
// If there is a full house in the player's hand, the player won.
if (PokerHands.FullHouse(pPlayerHand))
Console.WriteLine("nYou have a full house!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nThe computer has a full house!");
return false;
#endregion
#region Flush
// If there is a flush in the player hand and the computer hand, the player lost.
if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))
Console.WriteLine("nBoth players have a flush!");
return false;
// If there is a flush in the player hand, the player won.
if (PokerHands.Flush(pPlayerHand))
Console.WriteLine("nYou have a flush!");
return true;
// If there is a flush in the computer hand, the player lost.
if (PokerHands.Flush(pComputerHand))
Console.WriteLine("nThe computer has a flush!");
return false;
#endregion
#region Straight
// If there is a straight in the computer's hand and the player's hand, the player lost.
if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))
Console.WriteLine("nBoth players have a straight!");
return false;
// If there is a straight in the player's hand, the player won.
if (PokerHands.Straight(pPlayerHand))
Console.WriteLine("nYou have a straight!");
return true;
// If there is a straight in the computer's hand, the player lost.
if (PokerHands.Straight(pComputerHand))
Console.WriteLine("nThe computer has a straight!");
return false;
#endregion
#region Three Of A Kind
// If there is a three of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a three of a kind!");
return false;
// If there is a three of a kind in the player's hand, the player won.
if (PokerHands.ThreeOfAKind(pPlayerHand))
Console.WriteLine("nYou have a three of a kind!");
return true;
// If there is a three of a kind in the computer's hand, the player lost.
if (PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nThe computer has a three of a kind!");
return false;
#endregion
#region Two Pair
// If there is a two pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nBoth players have a two pair!");
return false;
// If there is a two pair in the player's hand, the player won.
if (PokerHands.TwoPair(pPlayerHand))
Console.WriteLine("nYou have a two pair!");
return true;
// If there is a two pair in the computer's hand, the player lost.
if (PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nThe computer has a two pair!");
return false;
#endregion
#region One Pair
// If there is a one pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))
Console.WriteLine("nBoth players have a one pair!");
return false;
// If there is a one pair in the player's hand, the player won.
if (PokerHands.OnePair(pPlayerHand))
Console.WriteLine("nYou have a one pair!");
return true;
// If there is a one pair in the computer's hand, the player lost.
if (PokerHands.OnePair(pComputerHand))
Console.WriteLine("nThe computer has a one pair!");
return false;
#endregion
// If the player's hand value is greater than the computer's hand value, the player won.
if (playerHandValue > computerHandValue)
return true;
// If the player's hand value is less than or equal to the computer's hand value, the player lost.
if (playerHandValue <= computerHandValue)
return false;
// Satisfies all code paths must return a value error.
else
return false;
// end of CompareHands()
This is what the class diagram for the project looks like:
This is what the console output looks like:
My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.
c# .net
New contributor
$endgroup$
add a comment |
$begingroup$
Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).
I'm working on refactoring an old poker game that I created, which is a .NET Framework console application, and I came across this method.
/// <summary>
/// Evaluates the value of the player hand and computer hand.
/// </summary>
/// <param name="pComputerHand">The computer's current hand.</param>
/// <param name="pPlayerHand">The player's current hand.</param>
/// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)
// Stores the value of the player and computer hands.
int playerHandValue = 0;
int computerHandValue = 0;
// Evaluates the value of computer hand
foreach(SuperCard card in pComputerHand)
computerHandValue += (int)card.CardRank;
// Evaluates the value of player hand
foreach(SuperCard card in pPlayerHand)
playerHandValue += (int)card.CardRank;
// If there is a royal flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nBoth players have a royal flush!");
return false;
// If there is a royal flush in the player's hand, the player won.
if (PokerHands.RoyalFlush(pPlayerHand))
Console.WriteLine("nYou have a royal flush!");
return true;
// If there is a royal flush in the computer's hand, the player lost.
if (PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nThe computer has a royal flush!");
return false;
#region Straight Flush
// If there is a straight flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nBoth players have a straight flush!");
return false;
// If there is a straight flush in the player's hand, the player won.
if (PokerHands.StraightFlush(pPlayerHand))
Console.WriteLine("nYou have a straight flush!");
return true;
// If there is a straight flush in the computer's hand, the player lost.
if (PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nThe computer has a straight flush!");
return false;
#endregion
#region Four Of A Kind
// If there is a four of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a four of a kind!");
return false;
// If there is a four of a kind in the player's hand, the player won.
if (PokerHands.FourOfAKind(pPlayerHand))
Console.WriteLine("nYou have a four of a kind!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nThe computer has four of a kind!");
return false;
#endregion
#region Full House
// If there is a full house in the computer's hand and the player's hand, the player lost.
if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nBoth players have a full house!");
return false;
// If there is a full house in the player's hand, the player won.
if (PokerHands.FullHouse(pPlayerHand))
Console.WriteLine("nYou have a full house!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nThe computer has a full house!");
return false;
#endregion
#region Flush
// If there is a flush in the player hand and the computer hand, the player lost.
if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))
Console.WriteLine("nBoth players have a flush!");
return false;
// If there is a flush in the player hand, the player won.
if (PokerHands.Flush(pPlayerHand))
Console.WriteLine("nYou have a flush!");
return true;
// If there is a flush in the computer hand, the player lost.
if (PokerHands.Flush(pComputerHand))
Console.WriteLine("nThe computer has a flush!");
return false;
#endregion
#region Straight
// If there is a straight in the computer's hand and the player's hand, the player lost.
if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))
Console.WriteLine("nBoth players have a straight!");
return false;
// If there is a straight in the player's hand, the player won.
if (PokerHands.Straight(pPlayerHand))
Console.WriteLine("nYou have a straight!");
return true;
// If there is a straight in the computer's hand, the player lost.
if (PokerHands.Straight(pComputerHand))
Console.WriteLine("nThe computer has a straight!");
return false;
#endregion
#region Three Of A Kind
// If there is a three of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a three of a kind!");
return false;
// If there is a three of a kind in the player's hand, the player won.
if (PokerHands.ThreeOfAKind(pPlayerHand))
Console.WriteLine("nYou have a three of a kind!");
return true;
// If there is a three of a kind in the computer's hand, the player lost.
if (PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nThe computer has a three of a kind!");
return false;
#endregion
#region Two Pair
// If there is a two pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nBoth players have a two pair!");
return false;
// If there is a two pair in the player's hand, the player won.
if (PokerHands.TwoPair(pPlayerHand))
Console.WriteLine("nYou have a two pair!");
return true;
// If there is a two pair in the computer's hand, the player lost.
if (PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nThe computer has a two pair!");
return false;
#endregion
#region One Pair
// If there is a one pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))
Console.WriteLine("nBoth players have a one pair!");
return false;
// If there is a one pair in the player's hand, the player won.
if (PokerHands.OnePair(pPlayerHand))
Console.WriteLine("nYou have a one pair!");
return true;
// If there is a one pair in the computer's hand, the player lost.
if (PokerHands.OnePair(pComputerHand))
Console.WriteLine("nThe computer has a one pair!");
return false;
#endregion
// If the player's hand value is greater than the computer's hand value, the player won.
if (playerHandValue > computerHandValue)
return true;
// If the player's hand value is less than or equal to the computer's hand value, the player lost.
if (playerHandValue <= computerHandValue)
return false;
// Satisfies all code paths must return a value error.
else
return false;
// end of CompareHands()
This is what the class diagram for the project looks like:
This is what the console output looks like:
My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.
c# .net
New contributor
$endgroup$
$begingroup$
Welcome to Code Review! Titling your question is important: State what your code does in your title, not your main concerns about it.
$endgroup$
– greybeard
1 hour ago
$begingroup$
Thank you. Is there a way to edit my question's title? If not, I'll keep that in mind for next time.
$endgroup$
– Asel S
21 mins ago
$begingroup$
I re-titled the question. I hope that's better.
$endgroup$
– Asel S
1 min ago
add a comment |
$begingroup$
Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).
I'm working on refactoring an old poker game that I created, which is a .NET Framework console application, and I came across this method.
/// <summary>
/// Evaluates the value of the player hand and computer hand.
/// </summary>
/// <param name="pComputerHand">The computer's current hand.</param>
/// <param name="pPlayerHand">The player's current hand.</param>
/// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)
// Stores the value of the player and computer hands.
int playerHandValue = 0;
int computerHandValue = 0;
// Evaluates the value of computer hand
foreach(SuperCard card in pComputerHand)
computerHandValue += (int)card.CardRank;
// Evaluates the value of player hand
foreach(SuperCard card in pPlayerHand)
playerHandValue += (int)card.CardRank;
// If there is a royal flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nBoth players have a royal flush!");
return false;
// If there is a royal flush in the player's hand, the player won.
if (PokerHands.RoyalFlush(pPlayerHand))
Console.WriteLine("nYou have a royal flush!");
return true;
// If there is a royal flush in the computer's hand, the player lost.
if (PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nThe computer has a royal flush!");
return false;
#region Straight Flush
// If there is a straight flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nBoth players have a straight flush!");
return false;
// If there is a straight flush in the player's hand, the player won.
if (PokerHands.StraightFlush(pPlayerHand))
Console.WriteLine("nYou have a straight flush!");
return true;
// If there is a straight flush in the computer's hand, the player lost.
if (PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nThe computer has a straight flush!");
return false;
#endregion
#region Four Of A Kind
// If there is a four of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a four of a kind!");
return false;
// If there is a four of a kind in the player's hand, the player won.
if (PokerHands.FourOfAKind(pPlayerHand))
Console.WriteLine("nYou have a four of a kind!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nThe computer has four of a kind!");
return false;
#endregion
#region Full House
// If there is a full house in the computer's hand and the player's hand, the player lost.
if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nBoth players have a full house!");
return false;
// If there is a full house in the player's hand, the player won.
if (PokerHands.FullHouse(pPlayerHand))
Console.WriteLine("nYou have a full house!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nThe computer has a full house!");
return false;
#endregion
#region Flush
// If there is a flush in the player hand and the computer hand, the player lost.
if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))
Console.WriteLine("nBoth players have a flush!");
return false;
// If there is a flush in the player hand, the player won.
if (PokerHands.Flush(pPlayerHand))
Console.WriteLine("nYou have a flush!");
return true;
// If there is a flush in the computer hand, the player lost.
if (PokerHands.Flush(pComputerHand))
Console.WriteLine("nThe computer has a flush!");
return false;
#endregion
#region Straight
// If there is a straight in the computer's hand and the player's hand, the player lost.
if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))
Console.WriteLine("nBoth players have a straight!");
return false;
// If there is a straight in the player's hand, the player won.
if (PokerHands.Straight(pPlayerHand))
Console.WriteLine("nYou have a straight!");
return true;
// If there is a straight in the computer's hand, the player lost.
if (PokerHands.Straight(pComputerHand))
Console.WriteLine("nThe computer has a straight!");
return false;
#endregion
#region Three Of A Kind
// If there is a three of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a three of a kind!");
return false;
// If there is a three of a kind in the player's hand, the player won.
if (PokerHands.ThreeOfAKind(pPlayerHand))
Console.WriteLine("nYou have a three of a kind!");
return true;
// If there is a three of a kind in the computer's hand, the player lost.
if (PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nThe computer has a three of a kind!");
return false;
#endregion
#region Two Pair
// If there is a two pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nBoth players have a two pair!");
return false;
// If there is a two pair in the player's hand, the player won.
if (PokerHands.TwoPair(pPlayerHand))
Console.WriteLine("nYou have a two pair!");
return true;
// If there is a two pair in the computer's hand, the player lost.
if (PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nThe computer has a two pair!");
return false;
#endregion
#region One Pair
// If there is a one pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))
Console.WriteLine("nBoth players have a one pair!");
return false;
// If there is a one pair in the player's hand, the player won.
if (PokerHands.OnePair(pPlayerHand))
Console.WriteLine("nYou have a one pair!");
return true;
// If there is a one pair in the computer's hand, the player lost.
if (PokerHands.OnePair(pComputerHand))
Console.WriteLine("nThe computer has a one pair!");
return false;
#endregion
// If the player's hand value is greater than the computer's hand value, the player won.
if (playerHandValue > computerHandValue)
return true;
// If the player's hand value is less than or equal to the computer's hand value, the player lost.
if (playerHandValue <= computerHandValue)
return false;
// Satisfies all code paths must return a value error.
else
return false;
// end of CompareHands()
This is what the class diagram for the project looks like:
This is what the console output looks like:
My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.
c# .net
New contributor
$endgroup$
Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).
I'm working on refactoring an old poker game that I created, which is a .NET Framework console application, and I came across this method.
/// <summary>
/// Evaluates the value of the player hand and computer hand.
/// </summary>
/// <param name="pComputerHand">The computer's current hand.</param>
/// <param name="pPlayerHand">The player's current hand.</param>
/// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)
// Stores the value of the player and computer hands.
int playerHandValue = 0;
int computerHandValue = 0;
// Evaluates the value of computer hand
foreach(SuperCard card in pComputerHand)
computerHandValue += (int)card.CardRank;
// Evaluates the value of player hand
foreach(SuperCard card in pPlayerHand)
playerHandValue += (int)card.CardRank;
// If there is a royal flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nBoth players have a royal flush!");
return false;
// If there is a royal flush in the player's hand, the player won.
if (PokerHands.RoyalFlush(pPlayerHand))
Console.WriteLine("nYou have a royal flush!");
return true;
// If there is a royal flush in the computer's hand, the player lost.
if (PokerHands.RoyalFlush(pComputerHand))
Console.WriteLine("nThe computer has a royal flush!");
return false;
#region Straight Flush
// If there is a straight flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nBoth players have a straight flush!");
return false;
// If there is a straight flush in the player's hand, the player won.
if (PokerHands.StraightFlush(pPlayerHand))
Console.WriteLine("nYou have a straight flush!");
return true;
// If there is a straight flush in the computer's hand, the player lost.
if (PokerHands.StraightFlush(pComputerHand))
Console.WriteLine("nThe computer has a straight flush!");
return false;
#endregion
#region Four Of A Kind
// If there is a four of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a four of a kind!");
return false;
// If there is a four of a kind in the player's hand, the player won.
if (PokerHands.FourOfAKind(pPlayerHand))
Console.WriteLine("nYou have a four of a kind!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FourOfAKind(pComputerHand))
Console.WriteLine("nThe computer has four of a kind!");
return false;
#endregion
#region Full House
// If there is a full house in the computer's hand and the player's hand, the player lost.
if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nBoth players have a full house!");
return false;
// If there is a full house in the player's hand, the player won.
if (PokerHands.FullHouse(pPlayerHand))
Console.WriteLine("nYou have a full house!");
return true;
// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FullHouse(pComputerHand))
Console.WriteLine("nThe computer has a full house!");
return false;
#endregion
#region Flush
// If there is a flush in the player hand and the computer hand, the player lost.
if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))
Console.WriteLine("nBoth players have a flush!");
return false;
// If there is a flush in the player hand, the player won.
if (PokerHands.Flush(pPlayerHand))
Console.WriteLine("nYou have a flush!");
return true;
// If there is a flush in the computer hand, the player lost.
if (PokerHands.Flush(pComputerHand))
Console.WriteLine("nThe computer has a flush!");
return false;
#endregion
#region Straight
// If there is a straight in the computer's hand and the player's hand, the player lost.
if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))
Console.WriteLine("nBoth players have a straight!");
return false;
// If there is a straight in the player's hand, the player won.
if (PokerHands.Straight(pPlayerHand))
Console.WriteLine("nYou have a straight!");
return true;
// If there is a straight in the computer's hand, the player lost.
if (PokerHands.Straight(pComputerHand))
Console.WriteLine("nThe computer has a straight!");
return false;
#endregion
#region Three Of A Kind
// If there is a three of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nBoth players have a three of a kind!");
return false;
// If there is a three of a kind in the player's hand, the player won.
if (PokerHands.ThreeOfAKind(pPlayerHand))
Console.WriteLine("nYou have a three of a kind!");
return true;
// If there is a three of a kind in the computer's hand, the player lost.
if (PokerHands.ThreeOfAKind(pComputerHand))
Console.WriteLine("nThe computer has a three of a kind!");
return false;
#endregion
#region Two Pair
// If there is a two pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nBoth players have a two pair!");
return false;
// If there is a two pair in the player's hand, the player won.
if (PokerHands.TwoPair(pPlayerHand))
Console.WriteLine("nYou have a two pair!");
return true;
// If there is a two pair in the computer's hand, the player lost.
if (PokerHands.TwoPair(pComputerHand))
Console.WriteLine("nThe computer has a two pair!");
return false;
#endregion
#region One Pair
// If there is a one pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))
Console.WriteLine("nBoth players have a one pair!");
return false;
// If there is a one pair in the player's hand, the player won.
if (PokerHands.OnePair(pPlayerHand))
Console.WriteLine("nYou have a one pair!");
return true;
// If there is a one pair in the computer's hand, the player lost.
if (PokerHands.OnePair(pComputerHand))
Console.WriteLine("nThe computer has a one pair!");
return false;
#endregion
// If the player's hand value is greater than the computer's hand value, the player won.
if (playerHandValue > computerHandValue)
return true;
// If the player's hand value is less than or equal to the computer's hand value, the player lost.
if (playerHandValue <= computerHandValue)
return false;
// Satisfies all code paths must return a value error.
else
return false;
// end of CompareHands()
This is what the class diagram for the project looks like:
This is what the console output looks like:
My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.
c# .net
c# .net
New contributor
New contributor
edited 2 mins ago
Asel S
New contributor
asked 2 hours ago
Asel SAsel S
62
62
New contributor
New contributor
$begingroup$
Welcome to Code Review! Titling your question is important: State what your code does in your title, not your main concerns about it.
$endgroup$
– greybeard
1 hour ago
$begingroup$
Thank you. Is there a way to edit my question's title? If not, I'll keep that in mind for next time.
$endgroup$
– Asel S
21 mins ago
$begingroup$
I re-titled the question. I hope that's better.
$endgroup$
– Asel S
1 min ago
add a comment |
$begingroup$
Welcome to Code Review! Titling your question is important: State what your code does in your title, not your main concerns about it.
$endgroup$
– greybeard
1 hour ago
$begingroup$
Thank you. Is there a way to edit my question's title? If not, I'll keep that in mind for next time.
$endgroup$
– Asel S
21 mins ago
$begingroup$
I re-titled the question. I hope that's better.
$endgroup$
– Asel S
1 min ago
$begingroup$
Welcome to Code Review! Titling your question is important: State what your code does in your title, not your main concerns about it.
$endgroup$
– greybeard
1 hour ago
$begingroup$
Welcome to Code Review! Titling your question is important: State what your code does in your title, not your main concerns about it.
$endgroup$
– greybeard
1 hour ago
$begingroup$
Thank you. Is there a way to edit my question's title? If not, I'll keep that in mind for next time.
$endgroup$
– Asel S
21 mins ago
$begingroup$
Thank you. Is there a way to edit my question's title? If not, I'll keep that in mind for next time.
$endgroup$
– Asel S
21 mins ago
$begingroup$
I re-titled the question. I hope that's better.
$endgroup$
– Asel S
1 min ago
$begingroup$
I re-titled the question. I hope that's better.
$endgroup$
– Asel S
1 min ago
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Asel S is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216088%2fc-poker-game-refactor-method-to-evaluate-poker-hands%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Asel S is a new contributor. Be nice, and check out our Code of Conduct.
Asel S is a new contributor. Be nice, and check out our Code of Conduct.
Asel S is a new contributor. Be nice, and check out our Code of Conduct.
Asel S is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216088%2fc-poker-game-refactor-method-to-evaluate-poker-hands%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Welcome to Code Review! Titling your question is important: State what your code does in your title, not your main concerns about it.
$endgroup$
– greybeard
1 hour ago
$begingroup$
Thank you. Is there a way to edit my question's title? If not, I'll keep that in mind for next time.
$endgroup$
– Asel S
21 mins ago
$begingroup$
I re-titled the question. I hope that's better.
$endgroup$
– Asel S
1 min ago