public async Task <IActionResult> FreeCard([FromBody] Items.Player player) { if (player != null) { // Autorizacia hraca pomocou generovaneho tokenu var playerDb = await context.Players.Where(p => p.Nickname == player.Nickname && p.Token == player.Token) .Include(p => p.Cards) .ToArrayAsync(); // Ak existuje if (playerDb[0] != null) { foreach (var card in playerDb[0].Cards) { card.PlayerId = null; } // Prida zaznam do Db await context.SaveChangesAsync(); // Bez obsahu v odpovedi return(NoContent()); } return(NotFound()); } // Zla poziadavka return(BadRequest()); }
private async Task CroupierGame(Items.Player croupier) { // Hra krupiera (asynchronna uloha) await Task.Run(async() => { // Krupier si taha karty do suctu 17 a viac do { // Tahaj karty dokym nemas aspon 17 var Csum = croupier.CardSum; if (Csum >= 17) { // Krupier ukoncil hru idu sa vyplacat vyhry croupier.Action = Items.Player.EActions.STAND; // Prida zaznam do Db await context.SaveChangesAsync(); // Koniec break; } // Prirad nahodnu kartu await RandomCard(croupier); // Krupier ukoncil hru idu sa vyplacat vyhry croupier.Action = Items.Player.EActions.HIT; // Uloz do Db await context.SaveChangesAsync(); } while (true); }); }
public async Task <IActionResult> UpdatePlayer([FromBody] Items.Player player) { if (player != null) { var playerDb = await context.Players.Where(p => p.Nickname == player.Nickname) .Include(p => p.Cards) .ToArrayAsync(); // Autorizacia hraca pomocou generovaneho tokenu if (playerDb[0] != null && playerDb[0].Token == player.Token) { // Aktualizuje nasledovne polozky playerDb[0].Action = player.Action; playerDb[0].Bet = player.Bet; playerDb[0].GameId = player.GameId; playerDb[0].State = player.State; playerDb[0].Wallet = player.Wallet; // Prida zaznam do Db await context.SaveChangesAsync(); // Bez obsahu v odpovedi return(NoContent()); } return(NotFound()); } // Zla poziadavka return(BadRequest()); }
public async Task <IActionResult> GetPlayer([FromBody] Items.Player player) { if (player != null) { var playerDb = await context.Players.Where(p => p.Nickname == player.Nickname) .Include(p => p.Cards) .ToArrayAsync(); // Autorizacia hraca pomocou generovaneho tokenu if (playerDb[0] != null && playerDb[0].Token == player.Token) { return(Ok(playerDb[0])); } return(NotFound()); } return(BadRequest()); }
// Vyber nahodnu kartu private async Task RandomCard(Items.Player player) { // Nahodny vyber volnej karty z balicku var randGen = new Random((int)DateTime.Now.Ticks); var CardsNotUsed = await context.Cards.Where(c => (c.PlayerId == null)).ToArrayAsync(); if (CardsNotUsed.Length > 0) { var cardId = randGen.Next(0, CardsNotUsed.Length); // Prirad karte ID hraca CardsNotUsed[cardId].PlayerId = player.Nickname; Console.WriteLine($"Zostalo {CardsNotUsed.Length} volnych kariet"); } else { Console.WriteLine("No cards in deck."); } Console.WriteLine($"Player cards = {player.CardSum}"); }
public async Task <IActionResult> CreatePlayer([FromBody] Items.Player player) { if (!await context.Players.ContainsAsync(player)) { // Novy hrac nehra este ziadnu hru player.GameId = "Nothing"; // Novy hraci dostanu 10.000$ if (player.Wallet <= 0) { player.Wallet = 10000; } // Prida zaznam do Db context.Players.Add(player); await context.SaveChangesAsync(); // Vytvoreny uspesne, vrati profil return(CreatedAtAction(nameof(GetPlayer), player)); } // Zla poziadavka return(BadRequest()); }
// Vypis stolu na konzolu private void Print(List <Items.Player> players, Items.Player croupier) { const int MAX_WIDTH = 25; int height; string sumS; Console.Clear(); Console.CursorLeft = ((players.Count * MAX_WIDTH) >> 1) + ((MAX_WIDTH >> 1) - (croupier.Nickname.Length >> 1)); Console.WriteLine($"{croupier.Nickname}"); // Sucet kariet hraca sumS = croupier.CardSum.ToString(); Console.CursorLeft = ((players.Count * MAX_WIDTH) >> 1) + ((MAX_WIDTH >> 1) - (sumS.Length >> 1)); Console.WriteLine(sumS); Console.CursorLeft = ((players.Count * MAX_WIDTH) >> 1) + ((MAX_WIDTH >> 1) - (croupier.Cards.Count() << 1)); foreach (var c in croupier.Cards) { c.Print(); Console.Write(" "); } Console.Write("\n\n\n\n\n\n\n"); height = 0; for (int i = 0; i < players.Count; i++) { // Karty hraca if (players[i].Cards.Any()) { foreach (var c in players[i].Cards) { Console.CursorLeft = (i * MAX_WIDTH) + (MAX_WIDTH >> 1) - 1; c.Print(); Console.WriteLine(); height++; } } // Vyska stavky hraca var betS = $"{players[i].Bet}$"; Console.CursorLeft = (i * MAX_WIDTH) + ((MAX_WIDTH >> 1) - (betS.Length >> 1)); Console.WriteLine(betS); height++; // Ak ide o mojho hraca vypis stav penazenky if (players[i].Nickname == Program.myPlayer.Nickname) { var walletS = $"{Program.myPlayer.Wallet}$"; Console.CursorLeft = (i * MAX_WIDTH) + ((MAX_WIDTH >> 1) - (walletS.Length >> 1)); Console.WriteLine(walletS); height++; } // Meno hraca Console.CursorLeft = (i * MAX_WIDTH) + ((MAX_WIDTH >> 1) - (players[i].Nickname.Length >> 1)); Console.WriteLine(players[i].Nickname); height++; // Sucet kariet hraca sumS = players[i].CardSum.ToString(); Console.CursorLeft = (i * MAX_WIDTH) + ((MAX_WIDTH >> 1) - (sumS.Length >> 1)); Console.WriteLine(sumS); height++; // Vysledny stav hry var stateS = players[i].State.ToString(); Console.CursorLeft = (i * MAX_WIDTH) + ((MAX_WIDTH >> 1) - (stateS.Length >> 1)); switch (players[i].State) { case Items.Player.EState.WIN: { Console.ForegroundColor = ConsoleColor.Green; Console.BackgroundColor = ConsoleColor.Black; Console.Write(stateS); Console.ResetColor(); Console.WriteLine(); break; } case Items.Player.EState.LOSE: { Program.ShowError(stateS); Console.WriteLine(); break; } case Items.Player.EState.DRAW: { Program.ShowWarning(stateS); Console.WriteLine(); break; } default: { Console.WriteLine(stateS); break; } } height++; if (i < (players.Count - 1)) { Console.CursorTop -= height; height = 0; } } Console.WriteLine("\n"); }