Ejemplo n.º 1
0
        private async Task <bool> UpdateMazeState(MazeState state = null)
        {
            var waitBmp = MazePainter.MazePainter.GetWaitBmp();

            pictureBox1.Image = waitBmp;

            if (state == null)
            {
                try
                {
                    state = await _client.GetMazeCurrentState(_mazeId);
                }
                catch (PonyClientException ex)
                {
                    DoLog(ex.Message);
                    return(false);
                }
                catch (Exception ex)
                {
                    DoLog("CRITICAL: " + ex.Message);
                    return(false);
                }
            }

            if (!string.IsNullOrEmpty(state.HiddenImageUrl))
            {
                try
                {
                    var imgData = await _client.LoadImage(state.HiddenImageUrl);

                    var ms = new MemoryStream(imgData);
                    pictureBox1.Image = Image.FromStream(ms);
                }
                catch (Exception ex)
                {
                    DoLog(ex.Message);
                }
            }
            else
            {
                _solver = MazeSolver.Load(state);
                // paint a maze
                var bmp = MazePainter.MazePainter.RepresentMaze(_solver.Field,
                                                                state.MazeWidth, state.MazeHeight,
                                                                _solver.PonyLocation.x, _solver.PonyLocation.y,
                                                                _solver.ExitLocation.x, _solver.ExitLocation.y,
                                                                _solver.DomokunLocation.x, _solver.DomokunLocation.y);
                pictureBox1.Image = bmp;
            }

            if (state.State == "over" || state.State == "won")
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 2
0
        private async void btnLoadMaze_Click(object sender, EventArgs e)
        {
            txtSequence.Text = "";
            if (!Guid.TryParse(edtMazeId.Text, out _mazeId))
            {
                edtMazeId.Text = "";
                DoLog("Error: Maze ID guid is not valid.");
            }

            // load
            try
            {
                var state = await _client.GetMazeCurrentState(_mazeId);

                _solver = MazeSolver.Load(state);
                DoLog($"Maze with ID = {_mazeId} loaded.");
                DoLog("Maze State: " + state.State);
                DoLog("Maze Result State: " + state.MazeStateResult);
                if (!string.IsNullOrEmpty(state.HiddenImageUrl))
                {
                    DoLog("Hidden Image Url: " + state.HiddenImageUrl);
                }

                await UpdateMazeState(state);
            }
            catch (PonyClientException ex)
            {
                DoLog(ex.Message);
                return;
            }
            catch (Exception ex)
            {
                DoLog("CRITICAL: " + ex.Message);
                return;
            }
        }