コード例 #1
0
        public void DirectionU2RTest()
        {
            var snake = new SnakeObject(6, 6);

            snake.Direction = SnakeDirection.Down;
            for (var i = 0; i < 15; i++)
            {
                snake.Movement();
            }

            snake.Direction = SnakeDirection.Left;
            for (var i = 0; i < 15; i++)
            {
                snake.Movement();
            }

            snake.Direction = SnakeDirection.Up;
            for (var i = 0; i < 15; i++)
            {
                snake.Movement();
            }

            snake.Direction = SnakeDirection.Right;
            for (var i = 0; i < 15; i++)
            {
                snake.Movement();
            }

            Assert.AreEqual(SnakeDirection.Right, snake.Direction, "Snake failed to turn right");
        }
コード例 #2
0
        private static void DrawSnake(SnakeObject s)
        {
            foreach (var parts in s.SnakePos)
            {
                SwinGame.FillRectangle(S_CLR, parts.Item1 * _snake_part_length + _snake_offset_x + OFFSET * 2,
                                       parts.Item2 * _snake_part_length + _snake_offset_y, _snake_part_length, _snake_part_length);
                SwinGame.DrawRectangle(BG_CLR, parts.Item1 * _snake_part_length + _snake_offset_x + OFFSET * 2,
                                       parts.Item2 * _snake_part_length + _snake_offset_y, _snake_part_length, _snake_part_length);
            }
            foreach (var itm in _grid.Items)
            {
                SwinGame.FillRectangle(S_CLR, itm.X * _snake_part_length + _snake_offset_x + OFFSET * 2,
                                       itm.Y * _snake_part_length + _snake_offset_y, _snake_part_length, _snake_part_length);
            }

            SwinGame.FillRectangle(Color.Black, _snake_offset_x - _snake_part_length + OFFSET * 2,
                                   _snake_offset_y - _snake_part_length, (_grid.Width + 2) * _snake_part_length, _snake_part_length);
            SwinGame.FillRectangle(Color.Black, _snake_offset_x - _snake_part_length + OFFSET * 2,
                                   _snake_offset_y - _snake_part_length, _snake_part_length, (_grid.Height + 2) * _snake_part_length);
            SwinGame.FillRectangle(Color.Black, _snake_offset_x - _snake_part_length + OFFSET * 2,
                                   _grid.Height * _snake_part_length + _snake_offset_y, (_grid.Width + 2) * _snake_part_length,
                                   _snake_part_length);
            SwinGame.FillRectangle(Color.Black, _grid.Width * _snake_part_length + _snake_offset_x + OFFSET * 2,
                                   _snake_offset_y - _snake_part_length, _snake_part_length, (_grid.Height + 2) * _snake_part_length);
            SwinGame.DrawText("SCORE", FONT_CLR, N_FONT, 30, _winY - 210);
            SwinGame.DrawText(_grid.Score_String, FONT_CLR, T_FONT, 30, _winY - 200);
        }
コード例 #3
0
ファイル: Sensors.cs プロジェクト: 110mat110/Snake
 private static List <double> TransferToDirectional(SnakeObject snake, List <double> outputs)
 {
     for (int i = (int)snake.Orientation; i >= 0; i--)
     {
         Shift(outputs);
     }
     return(outputs);
 }
コード例 #4
0
        public void RestrictedDirectionR2LTest()
        {
            var snake = new SnakeObject(6, 6);

            snake.Direction = SnakeDirection.Left;

            Assert.AreNotEqual(SnakeDirection.Left, snake.Direction, "Snake accidentally turned into itself");
        }
コード例 #5
0
ファイル: Sensors.cs プロジェクト: 110mat110/Snake
 public static List <double> FindSnakeOrientation(SnakeObject snake)
 {
     return(new double[] {
         snake.Orientation == Orientation.Top ? 1 :0,
         snake.Orientation == Orientation.Down ? 1 :0,
         snake.Orientation == Orientation.Left ? 1 :0,
         snake.Orientation == Orientation.Right ? 1 :0
     }.ToList());
 }
コード例 #6
0
 public TailSegment(SnakeObject parent)
     : base(parent.position, parent.GameInstance)
 {
     Parent       = parent;
     Facing       = parent.Facing;
     DrawColor    = GameInstance.SnakeColor;
     parent.Child = this;
     AdjustPosition();
     DrawTexture = GameInstance.SpriteSheet;
 }
コード例 #7
0
ファイル: GameForm.cs プロジェクト: mktpratt/NSCC-Public
 // Check if the snake hit itself
 public bool SnakeHitsItself(SnakeObject head)
 {
     for (int i = 1; i < head.snake.Length; i++)
     {
         if (head.snake[0].X == head.snake[i].X && head.snake[0].Y == head.snake[i].Y)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #8
0
ファイル: GameControllerTest.cs プロジェクト: Chris-SG/Snake
        public void StartGameTest()
        {
            var grid = new Grid(new Tuple <int, int>(10, 10));

            grid.CommenceGame(15);
            var snake = new SnakeObject(5, 5);

            Assert.IsNotNull(grid.SnakeObj, "Where's the snake?");
            Assert.IsTrue(grid.Items.Count > 0, "No items here");

            Assert.IsTrue(grid.SnakeObj.X == 5 && grid.SnakeObj.Y == 5);
        }
コード例 #9
0
        public override void CollideWith(SnakeObject obj)
        {
            if (obj is SnakesHead sh)
            {
                sh.AddNewTailSegment();
                sh.score += 10;
                Game1.playSound("coin");
            }

            Destroy();
            GameInstance.Board.SpawnCollectible();
        }
コード例 #10
0
        public void LengthTest()
        {
            var snake = new SnakeObject(6, 6);

            snake.Grow = true;

            for (var i = 0; i < 60; i++)
            {
                snake.Movement();
            }

            Assert.AreEqual(4, snake.Length);
        }
コード例 #11
0
        public void DirectionR2DTest()
        {
            var snake = new SnakeObject(6, 6);


            snake.Direction = SnakeDirection.Down;

            for (var i = 0; i < 15; i++)
            {
                snake.Movement();
            }

            Assert.AreEqual(SnakeDirection.Down, snake.Direction, "Snake failed to turn down");
        }
コード例 #12
0
        public void MovementTest()
        {
            var snake = new SnakeObject(6, 6);

            snake.Direction = SnakeDirection.Down;


            for (var i = 0; i < 15; i++)
            {
                snake.Movement();
            }

            Assert.IsTrue(snake.X == 3 && snake.Y == 4);
        }
コード例 #13
0
        public void RestrictedDirectionD2UTest()
        {
            var snake = new SnakeObject(6, 6);

            snake.Direction = SnakeDirection.Down;
            for (var i = 0; i < 15; i++)
            {
                snake.Movement();
            }

            snake.Direction = SnakeDirection.Up;

            Assert.AreNotEqual(SnakeDirection.Up, snake.Direction, "Snake accidentally turned into itself");
        }
コード例 #14
0
ファイル: GameForm.cs プロジェクト: mktpratt/NSCC-Public
        public GameForm()
        {
            InitializeComponent();
            AdjustGame();

            // Create new head object
            do
            {
                // Make sure the head is on the screen
                head = new SnakeObject(STARTINGTOTAL);
            } while (head.snake[0].X < 0);

            food = new Food(randomFood);
            do
            {
                // Create the new food an make sure it doesn't overlap
                food.randomizeLocation(randomFood);
            } while (head.snake[0].X == Food.FoodBlock.X || head.snake[0].X == Food.FoodBlock.X);
            gameArea = new Rectangle(0, 0, screenWidth, screenHeight);
        }
コード例 #15
0
ファイル: Sensors.cs プロジェクト: 110mat110/Snake
 public static List <double> FindWallDirectionaly(SnakeObject snake)
 {
     return(TransferToDirectional(snake, FindWallIn4Directions(snake.CurrentSnakeBlocks[0])));
 }
コード例 #16
0
 public bool IsColliding(SnakeObject o)
 {
     return(Math.Abs(position.X - o.position.X) < 1 && Math.Abs(position.Y - o.position.Y) < 1);
 }
コード例 #17
0
ファイル: Grid.cs プロジェクト: Chris-SG/Snake
 public void CommenceGame(int aSpeed = 15)
 {
     SnakeObj = new SnakeObject(_gridSize, aSpeed);
     CreateNewItem();
 }
コード例 #18
0
ファイル: GameForm.cs プロジェクト: mktpratt/NSCC-Public
 // Snake hits right ball
 public bool SnakeHitsRightWall(SnakeObject head, int w)
 {
     return(head.snake[0].X + 25 >= w);
 }
コード例 #19
0
ファイル: Board.cs プロジェクト: D0n-A/Stardew-Valley-Mods-1
 public double getDistanceFromOrigin(SnakeObject s)
 {
     return(getDistance(Vector2.Zero, s.position));
 }
コード例 #20
0
ファイル: Sensors.cs プロジェクト: 110mat110/Snake
 public static List <double> FindAppleDirectionaly(List <Apple> apples, SnakeObject snake)
 {
     return(TransferToDirectional(snake, FindAppleIn4Directions(apples, snake.CurrentSnakeBlocks[0])));
 }
コード例 #21
0
ファイル: GameForm.cs プロジェクト: mktpratt/NSCC-Public
 // Snake hits bottom ball
 public bool SnakeHitsBottomWall(SnakeObject head, int h)
 {
     return(head.snake[0].Y + 50 > h);
 }
コード例 #22
0
ファイル: GameForm.cs プロジェクト: mktpratt/NSCC-Public
        // Keydown method
        public void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            // Check for change of direction
            switch (e.KeyData.ToString())
            {
            case "Space":
            {
                // BELOW ARE CURRENTLY USED AS FEATURE TESTING
                //food.randomizeLocation(randomFood);
                //head.addTail(1);

                if (boolGameOver)
                {
                    head = new SnakeObject(STARTINGTOTAL);
                    food = new Food(randomFood);
                    if (head.snake[0].X == Food.FoodBlock.X)
                    {
                        food.randomizeLocation(randomFood);
                    }
                    boolGameOver   = false;
                    this.Text      = this.titleText + 0;
                    this.tailCount = 0;
                }
                else
                {
                    animationTimer.Start();
                }
                // TODO: Add level scaling with increased speed.
                if (boolLevelComplete)
                {
                }
                break;
            }

            case "Left":
            {
                if (rightDirection == false)
                {
                    leftDirection  = true;
                    rightDirection = false;
                    upDirection    = false;
                    downDirection  = false;
                }
                break;
            }

            case "Right":
            {
                if (animationTimer.Enabled == false)
                {
                    animationTimer.Start();
                }
                if (leftDirection == false)
                {
                    rightDirection = true;
                    leftDirection  = false;
                    upDirection    = false;
                    downDirection  = false;
                }
                break;
            }

            case "Up":
            {
                if (animationTimer.Enabled == false)
                {
                    animationTimer.Start();
                }
                if (downDirection == false)
                {
                    upDirection    = true;
                    downDirection  = false;
                    leftDirection  = false;
                    rightDirection = false;
                }
                break;
            }

            case "Down":
            {
                if (animationTimer.Enabled == false)
                {
                    animationTimer.Start();
                }
                if (upDirection == false)
                {
                    downDirection  = true;
                    upDirection    = false;
                    rightDirection = false;
                    leftDirection  = false;
                }
                break;
            }
            }

            // Repaint
            Invalidate();
        }
コード例 #23
0
ファイル: GameForm.cs プロジェクト: mktpratt/NSCC-Public
 // Snake hits left ball
 public bool SnakeHitsLeftWall(SnakeObject head, int w)
 {
     return(head.snake[0].X < 0);
 }
コード例 #24
0
        public void SpawnTest()
        {
            var snake = new SnakeObject(6, 6);

            Assert.IsTrue(snake.X == 3 && snake.Y == 3);
        }
コード例 #25
0
ファイル: Board.cs プロジェクト: D0n-A/Stardew-Valley-Mods-1
 public void Add(SnakeObject obj)
 {
     Objects.Add(obj);
 }
コード例 #26
0
        public void DirectionDefaultTest()
        {
            var snake = new SnakeObject(6, 6);

            Assert.AreEqual(SnakeDirection.Right, snake.Direction, "Default direction is not working");
        }
コード例 #27
0
ファイル: Board.cs プロジェクト: D0n-A/Stardew-Valley-Mods-1
 public void Remove(SnakeObject obj)
 {
     Objects.Remove(obj);
 }
コード例 #28
0
 public virtual void CollideWith(SnakeObject obj)
 {
     /*if (obj != this && obj is SnakesHead && Child != obj)
      *  GameInstance.SetupBoard();*/
 }
コード例 #29
0
ファイル: GameForm.cs プロジェクト: mktpratt/NSCC-Public
 // Snake hits top ball
 public bool SnakeHitsTopWall(SnakeObject head, int h)
 {
     return(head.snake[0].Y < 0);
 }