diff --git a/WinGreed/frmPersonRound.cs b/WinGreed/frmPersonRound.cs index c31796c..c9b8d26 100644 --- a/WinGreed/frmPersonRound.cs +++ b/WinGreed/frmPersonRound.cs @@ -161,7 +161,8 @@ namespace WinGreed } string outPut = CheckForDifferentOutCome(numbers); - + txtMaxValue.Text = outPut; + txtMaxValue.Refresh(); numbers.ForEach(x => Debug.Write($"{x}, ")); Debug.WriteLine(" -"); @@ -170,7 +171,140 @@ namespace WinGreed private string CheckForDifferentOutCome(List numbers) { - throw new NotImplementedException(); + var outPut = ""; + var sum = 0; + numbers.Sort(); + sum = CheckForDoubleTriple(numbers); + sum += CheckForTripleDouble(numbers); + sum += CheckForSerial(numbers); + sum += CheckForThreeOrMore(numbers); + outPut=sum.ToString(); + return outPut; + } + + private int CheckForSerial(List numbers) + { + for(int i = 0; i < numbers.Count; i++) + { + if(numbers[i] != i + 1) + { + return 0; + } + } + return 1500; + } + + private int CheckForThreeOrMore(List numbers) + { + var result = 0; + + var ones = 0; + var twos = 0; + var threes = 0; + var fours = 0; + var fives = 0; + var sixs = 0; + + if(numbers.Count > 2) + { + foreach(var number in numbers) + { + switch (number) + { + case 1: + { + ones++; + break; + } + case 2: + { + twos++; + break; + } + case 3: + { + threes++; + break; + } + case 4: + { + fours++; + break; + } + case 5: + { + fives++; + break; + } + case 6: + { + sixs++; + break; + } + default: + break; + } + } + + result += NumberCounts(ones, 1); + result += NumberCounts(twos, 2); + result += NumberCounts(threes, 3); + result += NumberCounts(fours, 4); + result += NumberCounts(fives, 5); + result += NumberCounts(sixs, 6); + } + + + return result; + } + + public int NumberCounts(int value,int nmbr) + { + if (value > 2) + { + var back = nmbr*(nmbr==1?1000:100); + if (value > 3) + { + back *= 2; + } + if (value > 4) + { + back *= 2; + } + if (value > 5) + { + back *= 2; + } + return back; + } + return 0; + } + + private int CheckForTripleDouble(List numbers) + { + if (numbers.Count == 6 + && numbers[0] == numbers[1] + && numbers[2] == numbers[3] + && numbers[4] == numbers[5] + && numbers[1] != numbers[2] + && numbers[3] != numbers[4] + && numbers[0] != numbers[5]) + { + return 1500; + } + return 0; + } + + private int CheckForDoubleTriple(List numbers) + { + if(numbers.Count == 6 + && numbers[0] == numbers[2] + && numbers[3] == numbers[5] + && numbers[2] != numbers[3]) + { + return 1500; + } + return 0; } private void btnDiceTmpl_Click(object sender, EventArgs e)