예제 #1
0
        public Direction moveRobot(Direction direction)
        {
            switch (direction)
            {
            case Direction.RIGHT:
                if (RobotX + 1 <= room.GetLength(0) && room[RobotX + 1, RobotY] != FieldType.OBSTACLE)
                {
                    RobotX += 1;
                }
                break;

            case Direction.LEFT:
                if (RobotX - 1 >= 0 && room[RobotX - 1, RobotY] != FieldType.OBSTACLE)
                {
                    RobotX -= 1;
                }
                break;

            case Direction.DOWN:
                if (RobotY + 1 <= room.GetLength(1) && room[RobotX, RobotY + 1] != FieldType.OBSTACLE)
                {
                    RobotY += 1;
                }
                break;

            case Direction.UP:
                if (RobotX - 1 >= 0 && room[RobotX, RobotY - 1] != FieldType.OBSTACLE)
                {
                    RobotY -= 1;
                }
                break;
            }
            return(direction);
        }
예제 #2
0
        public void Render(FieldType[,] changedRenderFields)
        {
            unsafe
            {
                for (int x = 0; x < changedRenderFields.GetLength(0); x++)
                {
                    for (int y = 0; y < changedRenderFields.GetLength(1); y++)
                    {
                        var f = changedRenderFields[x, y];

                        var rect = new Rect();
                        rect.Height = this.blockSize;
                        rect.Width  = this.blockSize;
                        rect.X      = this.blockSize * x;
                        rect.Y      = this.blockSize * y;

                        switch (f)
                        {
                        case FieldType.None:
                        {
                            SDL.SetRenderDrawColor(_renderer, 230, 230, 230, 205);
                            SDL.RenderFillRect(_renderer, &rect);
                            break;
                        }

                        case FieldType.Fruit1:
                        {
                            SDL.SetRenderDrawColor(_renderer, 255, 255, 0, 205);
                            SDL.RenderFillRect(_renderer, &rect);
                            break;
                        }

                        case FieldType.Border:
                        {
                            SDL.SetRenderDrawColor(_renderer, 0, 255, 0, 205);
                            SDL.RenderFillRect(_renderer, &rect);
                            break;
                        }

                        case FieldType.Snake1:
                        {
                            SDL.SetRenderDrawColor(_renderer, 255, 0, 0, 205);
                            SDL.RenderFillRect(_renderer, &rect);
                            break;
                        }

                        case FieldType.Snake2:
                        {
                            SDL.SetRenderDrawColor(_renderer, 0, 0, 255, 205);
                            SDL.RenderFillRect(_renderer, &rect);
                            break;
                        }
                        }
                    }
                }
                SDL.RenderPresent(_renderer);
            }
        }
예제 #3
0
        public void Render(IRenderer renderer)
        {
            renderer.Render(_changedData);

            for (int x = 0; x < _changedData.GetLength(0); x++)
            {
                for (int y = 0; y < _changedData.GetLength(1); y++)
                {
                    _changedData[x, y] = FieldType.NoChange;
                }
            }
        }
예제 #4
0
        private void TestResult(FieldType[,] solution, FieldType[,] solved)
        {
            Assert.AreEqual(solution.GetLength(0), solved.GetLength(0), "Diff Lengths: Rows");
            Assert.AreEqual(solution.GetLength(1), solved.GetLength(1), "Diff Lengths: Columns");

            for (int i = 0; i < solution.GetLength(0); i++)
            {
                for (int j = 0; j < solution.GetLength(1); j++)
                {
                    Assert.AreEqual(solution[i, j], solved[i, j], "Matrix Value diff: " + "[" + i + ", " + j + "]");
                }
            }
        }
예제 #5
0
    // Declare member variables here. Examples:

    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        world = new FieldType[worldSizeX, worldSizeY];

        for (int x = 0; x < world.GetLength(0); x++)
        {
            for (int y = 0; y < world.GetLength(0); y++)
            {
                world[x, y] = FieldType.Empty;
            }
        }


        timer = (Timer)GetNode("Timer");
        timer.Connect("timeout", this, nameof(onTick));

        player = (PlayerLogic)GetNode("/root/Main/LogicWorld/PlayerLogic");
        player.Connect(nameof(PlayerLogic.ChangedPosition), this, nameof(newPlayerPosition));


        state = GameState.Running;
    }
예제 #6
0
 public bool IsInBounds(Point point) =>
 point.X >= 0 &&
 point.Y >= 0 &&
 point.X < _grid.GetLength(0) &&
 point.Y < _grid.GetLength(1);