Exemplo n.º 1
0
        public static void PlayGame()
        {
            Console.Write("How many players? ");
            int numberOfPlayers = Convert.ToInt32(Console.ReadLine());

            for (int i = 0; i < numberOfPlayers; i++)
            {
                Console.Write($"Enter player {i + 1}'s name: ");
                string playerName = Console.ReadLine();
                AddPlayer(playerName);
            }

            Console.WriteLine("Play darts!");
            foreach (DartPlayer name in dartsPlayers)
            {
                Console.WriteLine(name + ", it is your turn!");

                Console.WriteLine("First dart:");
                int score1 = Int32.Parse(Console.ReadLine());

                Console.WriteLine("Second dart:");
                int score2 = Int32.Parse(Console.ReadLine());

                Console.WriteLine("Third dart:");
                int score3 = Int32.Parse(Console.ReadLine());

                PlayersTurn result = new PlayersTurn(score1, score2, score3);
                Console.WriteLine(result.CalculateScore());
            }
            Console.ReadKey();
        }
Exemplo n.º 2
0
 /// <summary>
 /// Resets game to starting values
 /// </summary>
 private void ResetGame()
 {
     playerOneScore    = 0;
     playerTwoScore    = 0;
     currentPlayerTurn = PlayersTurn.PlayerOne;
     gameOver          = false;
 }
Exemplo n.º 3
0
        public ActionResult Save(int index)
        {
            var lines = (List <Save>)Session["SaveLines"];
            var line  = lines[index];
            var Set   = new Settings();

            Set.BoardSize = line.Board_size;
            Set.CanTouch  = line.CanTouch;
            var Gb        = new GameBoard(Set.BoardSize);
            var Rules     = new Rules(Gb, Set);
            var Shown     = new GameBoard(Set.BoardSize);
            var enemyRule = new Rules(new GameBoard(Set.BoardSize), Set);
            var Pt        = new PlayersTurn(enemyRule.gameBoard, Gb, Shown, Set);
            var enemy     = new AI(Gb, Set);

            var simulator   = new GameSimulation();
            var playerShips = line.Player_Board.Substring(0, line.Player_Board.Length - 1).Split('|');
            var aiShips     = line.AI_Board.Substring(0, line.AI_Board.Length - 1).Split('|');

            simulator.PutShips(Rules, playerShips);
            simulator.PutShips(enemyRule, aiShips);
            var moves = line.Moves.Substring(0, line.Moves.Length - 1).Split('|');

            simulator.Simulate(moves, Pt, enemy, Gb, Shown);

            Session["Rules"]    = Rules;
            Session["Set"]      = Set;
            Session["ships"]    = Rules.Ships;
            Session["Enemy"]    = enemyRule.gameBoard;
            Session["Shown"]    = Shown;
            Session["AI"]       = enemy;
            ViewData["message"] = "Your turn";
            return(View("Game"));
        }
Exemplo n.º 4
0
 public Play(GameBoard gameBoard, GameBoard hidden, GameBoard shown, bool canTouch, int boardSize)
 {
     Set           = new Settings();
     Set.CanTouch  = canTouch;
     Set.BoardSize = boardSize;
     GameBoard     = gameBoard;
     hiden         = hidden;
     Shown         = shown;
     enemy         = new AI(gameBoard, Set);
     pt            = new PlayersTurn(hiden, gameBoard, Shown, Set);
 }
Exemplo n.º 5
0
    Rigidbody[] rigidBody;              // Reference to the dice's rigid body.


    // Start is called before the first frame update
    void Start()
    {
        playersTurn = GameObject.Find("PlayersTurn").GetComponent <PlayersTurn>();

        // Get the RigidBody components of the dice.
        rigidBody = new Rigidbody[dice.Length];
        for (int i = 0; i < rigidBody.Length; i++)
        {
            rigidBody[i] = dice[i].GetComponent <Rigidbody>();
        }
    }
Exemplo n.º 6
0
        public Play(GameBoard gameBoard, Settings set)
        {
            Set       = set;
            GameBoard = gameBoard;
            hiden     = new GameBoard(set.BoardSize);
            Shown     = new GameBoard(set.BoardSize);
            enemy     = new AI(gameBoard, set);
            Rules hidRules = new Rules(hiden, Set);

            hidRules.RandomPlace(hidRules.Ships);
            pt = new PlayersTurn(hiden, gameBoard, Shown, set);
        }
Exemplo n.º 7
0
        public bool SimulateOneTurn(string move, bool playerTurn, PlayersTurn pt, AI enemy)
        {
            var pos = move.Split(':');

            if (playerTurn)
            {
                playerTurn = pt.Shoot(int.Parse(pos[0]), int.Parse(pos[1]));
            }
            else
            {
                playerTurn = !enemy.AI_shoot(int.Parse(pos[0]), int.Parse(pos[1]));
            }

            return(playerTurn);
        }
Exemplo n.º 8
0
    /// <summary>
    /// This function will roll 2 dice, and then calculate overall player score.
    /// </summary>
    private void RollDice()
    {
        if (currentPlayerTurn == PlayersTurn.PlayerOne)
        {
            playerOneScore += ReturnBackgammonDiceRollsResult(ReturnDiceRoll(), ReturnDiceRoll());
        }
        else
        {
            playerTwoScore += ReturnBackgammonDiceRollsResult(ReturnDiceRoll(), ReturnDiceRoll());
        }

        CheckGameStatus();
        // An example of a short hand if statement.
        currentPlayerTurn = currentPlayerTurn == PlayersTurn.PlayerOne ? PlayersTurn.PlayerTwo : PlayersTurn.PlayerOne;
    }
Exemplo n.º 9
0
        public PlayersTurn GetNextTurn(Board _board)
        {
            var unwantedCells = _board.Triplets.GroupBy(_triplet => _triplet.UnwantedCell);

            var tryRotate = new List <Triplet>();

            foreach (var group in unwantedCells)
            {
                if (group.Key == null)
                {
                    //not matched
                    continue;
                }
                tryRotate.AddRange(group);
                tryRotate.AddRange(_board.Triplets.Where(_triplet => _triplet.Cells.Contains(group.Key)));
            }

            Debug.WriteLine(tryRotate.Distinct().Count());

            var         maxPoints = 0;
            PlayersTurn result    = null;

            foreach (var triplet in tryRotate.Distinct())
            {
                foreach (var clockwise in new[] { false, true })
                {
                    BeginAnalyze(_board);
                    for (var i = 0; i < 2; ++i)
                    {
                        triplet.Rotate(clockwise);
                        var points = _board.FindAndRemoveMatchesTotal();
                        if (points > 0)
                        {
                            if (points > maxPoints)
                            {
                                maxPoints = points;
                                result    = new PlayersTurn(triplet, clockwise);
                            }
                            break;
                        }
                    }
                }
            }

            EndAnalyze(_board);
            return(result);
        }
Exemplo n.º 10
0
        public void Simulate(string[] moves, PlayersTurn pt, AI enemy, GameBoard gb, GameBoard shown)
        {
            bool playersTurn = true;

            foreach (var move in moves)
            {
                var pos = move.Split(':');
                if (playersTurn)
                {
                    playersTurn = pt.Shoot(int.Parse(pos[0]), int.Parse(pos[1]));
                }
                else
                {
                    playersTurn = !enemy.AI_shoot(int.Parse(pos[0]), int.Parse(pos[1]));
                }
            }
        }
Exemplo n.º 11
0
        public ActionResult Replay(int index)
        {
            var lines     = (List <Save>)Session["SaveLines"];
            var line      = lines[index];
            var simulator = new GameSimulation();


            var Set = new Settings();

            Set.BoardSize = line.Board_size;
            Set.CanTouch  = line.CanTouch;
            var Gb        = new GameBoard(Set.BoardSize);
            var Rules     = new Rules(Gb, Set);
            var Shown     = new GameBoard(Set.BoardSize);
            var enemyRule = new Rules(new GameBoard(Set.BoardSize), Set);
            var Pt        = new PlayersTurn(enemyRule.gameBoard, Gb, Shown, Set);
            var enemy     = new AI(Gb, Set);

            var playerShips = line.Player_Board.Substring(0, line.Player_Board.Length - 1).Split('|');
            var aiShips     = line.AI_Board.Substring(0, line.AI_Board.Length - 1).Split('|');

            simulator.PutShips(Rules, playerShips);
            simulator.PutShips(enemyRule, aiShips);

            var moves = line.Moves.Substring(0, line.Moves.Length - 1).Split('|');


            Session["Count"]    = 1;
            Session["Moves"]    = moves;
            Session["Rules"]    = Rules;
            Session["ships"]    = Rules.Ships;
            Session["Enemy"]    = enemy;
            Session["Pt"]       = Pt;
            Session["Shown"]    = Shown;
            ViewData["message"] = "Your turn";
            return(RedirectPermanent("/Home/Show"));
        }
Exemplo n.º 12
0
        public ActionResult Game(int x, int y)
        {
            ViewBag.Message = "Your extra turn";
            var         Shown = (GameBoard)Session["Shown"];
            var         Hiden = (GameBoard)Session["Enemy"];
            var         Rules = (Rules)Session["Rules"];
            var         Set   = (Settings)Session["Set"];
            var         AI    = (AI)Session["AI"];
            PlayersTurn pt    = new PlayersTurn(Hiden, Rules.gameBoard, Shown, Set);

            if (!pt.Shoot(x, y))
            {
                var str = new StringBuilder();
                var tup = AI.AI_turn();
                str.Append(tup.Item1 + " " + tup.Item2 + " ");
                while (tup.Item2)
                {
                    tup = AI.AI_turn();
                    str.Append(tup.Item1 + " " + tup.Item2 + " ");
                }

                ViewData["message"] = str.ToString();
            }

            int playerHp = Rules.gameBoard.GetHp();
            int AiHp     = Hiden.GetHp();

            Session["playerHP"] = playerHp;
            Session["AiHP"]     = AiHp;
            if (playerHp == 0 || AiHp == 0)
            {
                return(View("Ended"));
            }

            return(View());
        }
Exemplo n.º 13
0
 public void ChangeTurn()
 {
     playersTurn    = playersTurn == PlayersTurn.O ? PlayersTurn.X : PlayersTurn.O;
     _playerChanged = true;
 }
 // Start is called before the first frame update
 void Start()
 {
     playersTurn = GameObject.Find("PlayersTurn").GetComponent <PlayersTurn>();
 }
Exemplo n.º 15
0
        // todo: restructure this function since it currently changes the state of the object after running
        public GameResults Run() // yield, async, parallel, task.run() ?
        {
            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();

            if (rules.LoggingSettings.logTime)
            {
                watch.Start();
            }

            List <Player> activePlayers = null;

            // allow each player to make a move, checking for end state or limit
            for (CurrentBoard.TurnNumber = 1; CurrentBoard.TurnNumber <= rules.MaxPhysicalTurns; CurrentBoard.TurnNumber++)
            {
                // have the player decide on a move
                Move playersMove = PlayersTurn.chooseMove(this);

                // automatic forfeit if player is unable to make a move
                if (playersMove == null)
                {
                    rules.PlayerOrder.Remove(PlayersTurn);
                }
                else
                {
                    CurrentBoard.applyMove(playersMove, rules); // apply the move

                    // add the move to the current game's seqence of moves
                    MoveSequence.Add(CurrentBoard.TurnNumber, playersMove);
                }


                if (rules.LoggingSettings.showMovePerTurn)
                {
                    Console.WriteLine($"#{CurrentBoard.TurnNumber} {playersMove}");
                }

                if (rules.LoggingSettings.showStatePerTurn)
                {
                    if (rules.LoggingSettings.showHiddenPieces)
                    {
                        Console.WriteLine(CurrentBoard.ToAsciiLayout());
                    }
                    else
                    {
                        Console.WriteLine(CurrentBoard.ToAsciiLayout(PlayersTurn));  // shows what that player sees
                    }
                }


                if (rules.LoggingSettings.pausePerMove)
                {
                    Console.WriteLine("Press <enter> to continue...");
                    Console.ReadLine();
                }

                // check if after the move if any players are remaning
                activePlayers = CurrentBoard.TerminalStateCheck(rules);

                if (activePlayers.Count <= 1) // no win scenario is possible, so activePlayers might be 0
                {
                    break;
                }
            }

            watch.Stop();

            if (rules.LoggingSettings.listMoveSeqenceAtEnd)
            {
                Console.WriteLine("Move Sequence:");
                foreach (KeyValuePair <int, Move> sequence in MoveSequence)
                {
                    Console.WriteLine($"Turn {sequence.Key} = {sequence.Value?.ToString() ?? "no move available"}");
                }
            }

            //if (CurrentBoard.TurnNumber < 2)
            //    return null;


            return(new GameResults()
            {
                turnsElapsed = CurrentBoard.TurnNumber,
                Winners = activePlayers,
                timeElapsed = watch.Elapsed,
            });
        }