Ejemplo n.º 1
0
    void Start()
    {
        _gameArchive = File.ReadAllLines(SavePath + "ArchiveData.txt").ToList();

        _games = new List <GameBehaviour>();

        var gameManagers = GameManager.LoadGamesFromFile(SavePath + "CurrentGame.txt");

        _playerUiSettings = PlayerUiSettings.Load();
        _games.Add(GameBehaviour.CreateGameBehaviour(gameObject, GuiSkin, BoardTile, Piece, Text, ((short)0).ToCartesianCoordinate(), gameManagers.First(), _gameArchive, _playerUiSettings));

        _activeGame = _games.First();

        _searchMethods = new[] { new GUIContent("NegaMax"), new GUIContent("NegaMax w/ Alpha-Beta") };
        _searchDepths  = new[]
        {
            new GUIContent("Search Depth 0"),
            new GUIContent("Search Depth 1"),
            new GUIContent("Search Depth 2"),
            new GUIContent("Search Depth 3"),
            new GUIContent("Search Depth 4"),
            new GUIContent("Search Depth 5"),
            new GUIContent("Search Depth 6"),
            new GUIContent("Search Depth 7"),
        };
        _searchComboBox.SelectedItemIndex = _playerUiSettings.SearchMethod;
        _depthComboBox.SelectedItemIndex  = _playerUiSettings.SearchDepth;

        listStyle.normal.textColor   = Color.white;
        listStyle.onHover.background = listStyle.hover.background = new Texture2D(2, 2);
        listStyle.padding.left       = listStyle.padding.right = listStyle.padding.top = listStyle.padding.bottom = 4;
    }
Ejemplo n.º 2
0
        public ComputerPlayer(PlayerUiSettings playerUiSettings)
        {
            PlayerUiSettings = playerUiSettings;

            NumberOfGamePhases = 60 / TurnsPerPhase;

            SearchDepth = new int[NumberOfGamePhases];
            Weights     = new Dictionary <string, float> [NumberOfGamePhases];
            for (var i = 0; i < NumberOfGamePhases; i++)
            {
                SearchDepth[i] = PlayerUiSettings.SearchDepth;
                Weights[i]     = new Dictionary <string, float>();
                Strategies.ForEach(x => Weights[i].Add(x, 1));
            }

            SetDefaults();

            TranspositionTable = new Dictionary <GameState, float>();
        }
Ejemplo n.º 3
0
    void Start()
    {
        GameoverPanel.SetActive(false);
        SkipTurnPanel.SetActive(false);

        _playerUiSettings = PlayerUiSettings.Load();



        BoardLocation = ((short)0).ToCartesianCoordinate();

        var archiveData = Application.streamingAssetsPath + "/ArchiveData.txt";

        GameArchive = File.Exists(archiveData)
                                ? File.ReadAllLines(archiveData).ToList()
                                : new List <string>();

        try
        {
            _gameManager = GameManager.LoadFromFile(Application.persistentDataPath + "/CurrentGame.txt");
        }
        catch (System.IO.FileNotFoundException)
        {
            _gameManager = new GameManager();
        }

        Plays = _gameManager.Plays;

        Messenger <short> .AddListener("Tile clicked", OnTileSelected);

        Messenger <short> .AddListener("Tile hover", OnTileHover);

        Messenger <float> .AddListener("Game speed changed", OnGameSpeedChanged);

        _computerPlayer = new ComputerPlayer(_playerUiSettings);

        _positionStats = new Dictionary <string, GameStateStats>();

        CreateBoard();
        CreatePieces();
        _boardCoordinates = new List <GameObject>();
        DrawBoardCoordinates();
        _tileInfo = new List <GameObject>();
        DrawStats();

        _random = new System.Random();

        var cameraX = _width / 2.0f * Spacing - (Spacing / 2);
        var cameraY = -_height / 2.0f * Spacing + (Spacing / 2);

        _cameraZ = -(_width + _height) / 2 - 1;

        transform.position = new Vector3(cameraX, cameraY, _cameraZ);

        _depthFirstSearch = new DepthFirstSearch();

        _searchTime      = new Stopwatch();
        _artificialDelay = new Stopwatch();

        NewGameButton.GetComponent <Button>().onClick.AddListener(NewGame);

        WhiteHuman.onValueChanged.AddListener(delegate { WhiteIsHuman(WhiteHuman); });
        WhiteHuman.isOn = _playerUiSettings.WhiteIsHuman;

        BlackHuman.onValueChanged.AddListener(delegate { BlackIsHuman(BlackHuman); });
        BlackHuman.isOn = _playerUiSettings.BlackIsHuman;

        ShowValidPlaysToggle.onValueChanged.AddListener(delegate { SetShowValidPlays(ShowValidPlaysToggle); });
        ShowValidPlaysToggle.isOn = _playerUiSettings.ShowValidPlays;

        ShowBoardCoordinatesToggle.onValueChanged.AddListener(delegate { SetShowBoardCoordinates(ShowBoardCoordinatesToggle); });
        ShowBoardCoordinatesToggle.isOn = _playerUiSettings.ShowBoardCoordinates;

        ShowArchiveStatsToggle.onValueChanged.AddListener(delegate { SetShowArchiveStats(ShowArchiveStatsToggle); });
        ShowArchiveStatsToggle.isOn = _playerUiSettings.ShowArchiveStats;

        SkipTurnPanel.GetComponentInChildren <Button>().onClick.AddListener(delegate { SkipTurn(); });

        var maxSearchDepth = MaxSearchDepthDropDown.GetComponent <Dropdown>();

        maxSearchDepth.value = _playerUiSettings.MaxSearchDepth - 2;
        maxSearchDepth.onValueChanged.AddListener(delegate { ChangeMaxSearchDepth(); });

        var maxSearchTime = MaxSearchTimeDropDown.GetComponent <Dropdown>();

        maxSearchTime.value = GetSearchTimeDropDownValue(_playerUiSettings.MaxSearchTime);
        maxSearchTime.onValueChanged.AddListener(delegate { ChangeMaxSearchTime(); });

        ReplayButton.onClick.AddListener(delegate { ReplayGame(); });

        _playHistory = new Dictionary <short, GameObject>();

        PlayHistory();
    }
Ejemplo n.º 4
0
    public static GameBehaviour CreateGameBehaviour(GameObject gameObject, GUISkin guiSkin, GameObject boardTile, GameObject piece, GameObject text, Point boardLocation, GameManager gameManager, List <string> gameArchive, PlayerUiSettings playerUiSettings)
    {
        var gameBehaviour = gameObject.AddComponent <GameBehaviour>();

        gameBehaviour.GuiSkin          = guiSkin;
        gameBehaviour.BoardTile        = boardTile;
        gameBehaviour.Piece            = piece;
        gameBehaviour.Text             = text;
        gameBehaviour.BoardLocation    = boardLocation;
        gameBehaviour.GameArchive      = gameArchive;
        gameBehaviour.PlayerUiSettings = playerUiSettings;

        gameBehaviour.StartGameBehavour(gameManager);

        return(gameBehaviour);
    }