}  // Gizli altınları açan fonksiyon

        #endregion PlayerMechanics

        #region GlobalFunctions

        private Cordinant FindCordinant(int buttonNumber)
        {
            Cordinant map = new Cordinant
            {
                row = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(buttonNumber) / Convert.ToDouble(areaXSize)))
            };
            int rowLimit = map.row * areaXSize;

            map.column = areaXSize - (rowLimit - buttonNumber);
            return(map);
        }  // Numarası verilen butonun satır ve stun bilgisini veriyor.
        } // En kãrlı hedefi bulmak için kullanılan fonksiyon

        private int FindTheClosestGold(Cordinant playerLocation)
        {
            int         closestLocation = 0;
            int         range           = 9999990;
            List <Gold> tempList        = goldList.Where(p => p.isSecret == false && p.isTaken == false).ToList();

            foreach (var item in tempList)
            {
                int tempRange = Math.Abs(playerLocation.row - item.goldLocation.row) + Math.Abs(playerLocation.column - item.goldLocation.column);
                if (tempRange < range)
                {
                    range           = tempRange;
                    closestLocation = item.buttonNum;
                }
            }

            return(closestLocation);
        }   // Oyuncuya en yakın altını bulan fonksiyon
        }    // Sonra ki oyuncunun oynama türünü tutan case yapısı

        private bool IsItClosestAccordingToOthers(int targetButton, int rangeD)
        {
            List <Player> tempTargets  = playerList.Where(p => p.target == targetButton).ToList();
            Cordinant     goldLocation = FindCordinant(targetButton);
            int           turnCountD   = Convert.ToInt32(Math.Ceiling((decimal)rangeD / (turnMoveMAX - 1)));

            foreach (var item in tempTargets)
            {
                int tempRange     = Math.Abs(item.playerLocation.row - goldLocation.row) + Math.Abs(item.playerLocation.column - goldLocation.column);
                int tempTurnCount = Convert.ToInt32(Math.Ceiling((decimal)tempRange / (turnMoveMAX - 1)));

                if (turnCountD > tempTurnCount - 1)
                {
                    return(false);
                }
            }

            return(true);
        }  // D oyuncusuna özel, hedefine rakiplerinden önce ulaşup ulaşamıycağını döndüren fonksiyon
        } // D Oyuncusuna özel en kãrlı hedefi bulmayı sağlayan fonksiyon

        private int FindTheMostProfitableGold(Cordinant playerLocation)
        {
            int MostProfitableLocation = 0;
            int totalProfit            = -9999999;

            List <Gold> tempList = goldList.Where(p => p.isSecret == false && p.isTaken == false).ToList();

            foreach (var item in tempList)
            {
                int tempRange       = Math.Abs(playerLocation.row - item.goldLocation.row) + Math.Abs(playerLocation.column - item.goldLocation.column);
                int tempTotalproFit = item.value - Convert.ToInt32(Math.Ceiling((double)tempRange / (turnMoveMAX - 1)) * turnCost[playerTurn - 1]);
                if (tempTotalproFit > totalProfit)
                {
                    totalProfit            = tempTotalproFit;
                    MostProfitableLocation = item.buttonNum;
                }
            }

            return(MostProfitableLocation);
        } // En kãrlı hedefi bulmak için kullanılan fonksiyon
        }  // D oyuncusuna özel, hedefine rakiplerinden önce ulaşup ulaşamıycağını döndüren fonksiyon

        private int FindTheMostProfitableGoldForD(Cordinant playerLocation)
        {
            int MostProfitableLocation = 0;
            int totalProfit            = -9999999;

            List <Gold> tempList = goldList.Where(p => p.isSecret == false && p.isTaken == false).ToList();

            foreach (var item in tempList)
            {
                int           tempRange         = Math.Abs(playerLocation.row - item.goldLocation.row) + Math.Abs(playerLocation.column - item.goldLocation.column);
                int           tempTotalproFit   = item.value - Convert.ToInt32(Math.Ceiling((double)tempRange / (turnMoveMAX - 1)) * turnCost[playerTurn - 1]);
                List <Player> tempPlayerControl = playerList.Where(p => p.target == item.buttonNum).ToList();

                if (tempPlayerControl.Select(p => p.target).Contains(item.buttonNum))
                {
                    foreach (var player in tempPlayerControl)
                    {
                        if (IsItClosestAccordingToOthers(player.target, tempRange))
                        {
                            if (tempTotalproFit > totalProfit)
                            {
                                totalProfit            = tempTotalproFit;
                                MostProfitableLocation = item.buttonNum;
                            }
                        }
                    }
                }
                else
                {
                    if (tempTotalproFit > totalProfit)
                    {
                        totalProfit            = tempTotalproFit;
                        MostProfitableLocation = item.buttonNum;
                    }
                }
            }

            return(MostProfitableLocation);
        } // D Oyuncusuna özel en kãrlı hedefi bulmayı sağlayan fonksiyon
        }   // Oyuncuya en yakın altını bulan fonksiyon

        private void OpenTheClosestSecretGold(Cordinant playerLocation)
        {
            int closestLocation = 0;
            int range           = 9999990;

            for (int i = 0; i < 2; i++)
            {
                List <Gold> tempList = goldList.Where(p => p.isSecret == true).ToList();
                range = 9999990;
                foreach (var item in tempList)
                {
                    int tempRange = Math.Abs(playerLocation.row - item.goldLocation.row) + Math.Abs(playerLocation.column - item.goldLocation.column);
                    if (tempRange < range)
                    {
                        range           = tempRange;
                        closestLocation = item.buttonNum;
                    }
                }

                OpenSecret(closestLocation);
            }
        }    // Oyuncuya en yakın gizli altınlardan 2 tanesinin gizliliğini kaldıran fonksiyon
        }  // Gelen stringleri log listesine ekleyen fonksiyon

        #endregion GlobalFunctions

        #region GameDynamics

        private void moveTo()
        {
            Player    player = playerList.Where(p => p.playerdID == playerTurn).SingleOrDefault();
            Cordinant startSpot = player.playerLocation, endSpot = FindCordinant(player.target);
            Button    playerButton = (pnlBoard.Controls["player" + player.playerName] as Button);

            if (startSpot.row < endSpot.row)
            {
                startSpot.row++;
                playerButton.Location   = (pnlBoard.Controls["btn" + (player.buttonNum + areaXSize)] as Button).Location;
                player.playerLocation   = startSpot;
                player.buttonNum       += areaXSize;
                player.playerButtonName = "btn" + player.buttonNum.ToString();
                OpenSecret(player.buttonNum);
                player.StepCount++;
                addLog(player.playerName + " Oyuncusu " + player.StepCount + ". adımında " + player.buttonNum + ". kareye ilerledi");
            }
            else if (startSpot.row > endSpot.row)
            {
                startSpot.row--;
                playerButton.Location   = (pnlBoard.Controls["btn" + (player.buttonNum - areaXSize)] as Button).Location;
                player.playerLocation   = startSpot;
                player.buttonNum       -= areaXSize;
                player.playerButtonName = "btn" + player.buttonNum.ToString();
                OpenSecret(player.buttonNum);
                player.StepCount++;
                addLog(player.playerName + " Oyuncusu " + player.StepCount + ". adımında " + player.buttonNum + ". kareye ilerledi");
            }
            else if (startSpot.column < endSpot.column)
            {
                startSpot.column++;
                playerButton.Location   = (pnlBoard.Controls["btn" + (player.buttonNum + 1)] as Button).Location;
                player.playerLocation   = startSpot;
                player.buttonNum       += 1;
                player.playerButtonName = "btn" + player.buttonNum.ToString();
                OpenSecret(player.buttonNum);
                player.StepCount++;
                addLog(player.playerName + " Oyuncusu " + player.StepCount + ". adımında " + player.buttonNum + ". kareye ilerledi");
            }
            else if (startSpot.column > endSpot.column)
            {
                startSpot.column--;
                playerButton.Location   = (pnlBoard.Controls["btn" + (player.buttonNum - 1)] as Button).Location;
                player.playerLocation   = startSpot;
                player.buttonNum       -= 1;
                player.playerButtonName = "btn" + player.buttonNum.ToString();
                OpenSecret(player.buttonNum);
                player.StepCount++;
                addLog(player.playerName + " Oyuncusu " + player.StepCount + ". adımında " + player.buttonNum + ". kareye ilerledi");
            }

            if (player.buttonNum == player.target)
            {
                playerTurn++;
                MoveTimer.Stop();
                Gold takenGold = goldList.Where(p => p.buttonNum == player.target).SingleOrDefault();
                addLog(player.playerName + " Oyuncusu kare numarası " + player.target + " olan hedefine ulaştı ve " + takenGold.value + " altın kazanadı ");
                takenGold.isTaken = true;
                (pnlBoard.Controls[takenGold.button] as Button).BackgroundImage = Properties.Resources.Dirt;
                List <Player> playerLoseTargetList = playerList.Where(p => p.target == player.target).ToList();
                foreach (var item in playerLoseTargetList)
                {
                    item.target = 0;
                    if (item.playerdID != player.playerdID)
                    {
                        addLog(player.playerName + " Oyuncusu " + item.playerName + " oyuncusunun hedefini çaldı");
                    }
                }
                player.playerGold    += takenGold.value;
                player.collectedGold += takenGold.value;
                (pictureBox2.Controls["textPlayer" + player.playerName + "Coin"] as Label).Text = player.playerGold.ToString();
            }
        } // Sonraki hamleyi gerçekleştiren fonksiyon