static void Main(string[] args) { int[] stats = new int[3]; string input = ""; int bet = 0; Console.OutputEncoding = System.Text.Encoding.Unicode; CreateMenu(out MenuItem[] menu); bool nextGame = true; bool inputTest = true; BlackJack bj = new BlackJack(17); do { while (true) { // Žádá uživatele o zadání sázky Console.WriteLine("Tvůj kredit je: ${0} Kolik sázíš? (minimální sázka je ${1})", bj.Player.Credit, MINBET); try { bet = int.Parse(Console.ReadLine()); if (bet > bj.Player.Credit) { throw new Exception("Nemáš dostatečný kredit na tuto sázku"); } if (bet < MINBET) { throw new Exception("Sázka je menší než minimální sázka."); } break; } catch (FormatException e) { Console.WriteLine("Nebylo zadáno číslo."); } catch (Exception e) { Console.WriteLine(e.Message); } } while (bj.Result == GameResult.Pending) { // kontrola zda má hráč blackjack a zda může hrát double if (bj.Player.Hand.deck.Count < 3 && bj.Player.Hand.Value() < 21 && bj.Player.Credit >= (bet * 2)) { menu[(int)MenuKey.Double].IsActive = true; } else { menu[(int)MenuKey.Double].IsActive = false; if (!BlackJackRules.HasBlackJack(bj.Dealer.Hand) && BlackJackRules.HasBlackJack(bj.Player.Hand)) { bj.Stand(); bj.Result = GameResult.BlackJack; break; } } if (!BlackJackRules.CanPlayerHit(bj.Player.Hand)) { bj.Stand(); break; } ShowStats(bj); do { Console.Write("Jsi na řadě. "); foreach (MenuItem item in menu) { if (item.IsActive) { Console.Write("{0}:{1}; ", item.Key, item.Caption); } } Console.Write(Environment.NewLine); input = Console.ReadLine(); MenuItem result = Array.Find(menu, k => k.Key == input.ToLower()); //v případě, že uživatel zadá volbu, která sice může být v menu, ale není aktivní, nastaví výslednou klávesu na null, čímž spustí default switch if (!result.IsActive) { result.Key = null; } switch (result.Key) { case "h": bj.Hit(); inputTest = true; break; case "s": bj.Stand(); inputTest = true; break; case "d": bet *= 2; bj.Double(); inputTest = true; break; default: Console.Write("Nesprávná volba. "); inputTest = false; break; } } while (!inputTest); } ShowStats(bj); switch (bj.Result) { case GameResult.Win: bj.Player.Credit += bet; stats[(int)GameResult.Win] += 1; break; case GameResult.Lose: bj.Player.Credit -= bet; stats[(int)GameResult.Lose] += 1; break; case GameResult.BlackJack: bj.Player.Credit += (int)(bet * 1.5); stats[(int)GameResult.Win] += 1; break; default: stats[(int)GameResult.Draw] += 1; break; } Console.WriteLine(bj.Result); if (bj.Player.Credit < MINBET) { ShowStatistic(stats); Console.WriteLine("Konec hry..."); Console.ReadLine(); break; } while (true) { Console.WriteLine("Další hra? A/N"); input = Console.ReadLine(); try { switch (input.ToLower()) { case "a": nextGame = true; bj.Reset(); break; case "n": nextGame = false; ShowStatistic(stats); Console.WriteLine("Konec hry..."); Console.ReadLine(); break; default: throw new Exception("Nesprávná volba. "); } break; } catch (Exception e) { Console.Write(e.Message); } } } while (nextGame); }