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(); }
/// <summary> /// Resets game to starting values /// </summary> private void ResetGame() { playerOneScore = 0; playerTwoScore = 0; currentPlayerTurn = PlayersTurn.PlayerOne; gameOver = false; }
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")); }
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); }
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>(); } }
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); }
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); }
/// <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; }
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); }
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])); } } }
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")); }
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()); }
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>(); }
// 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, }); }