예제 #1
0
        private Point SetLocationHead(FrmMain.laws law)
        {
            Point location = NextLocation(locationHead);

            switch (law)
            {
            case FrmMain.laws.Overfly:
                location = LowOverfly(location);
                break;

            case FrmMain.laws.CuttingSnake:
                location = LowCuttingSnake(location);
                location = LowOverfly(location);
                break;

            case FrmMain.laws.NoCuttingSnake:
                location = LowNoCuttingSnake(location);
                location = LowOverfly(location);
                break;

            case FrmMain.laws.ReturnOnSnake:
                location = LowReturnOnSnake(location);
                location = NextLocation(locationHead);
                break;
            }
            return(location);
        }
예제 #2
0
        public void AddBody(FrmMain.laws law, bool wall = false)
        {
            _locationHead = SetLocationHead(law);
            if (wall)
            {
                LowWall(_locationHead);
            }

            if (frmMain.gameOver)
            {
                return;
            }

            PictureBox tail = new PictureBox();

            tail.Size      = size;
            tail.BackColor = Color.Gray;
            tail.Location  = locationHead;
            if (body.Count != 0)
            {
                body[body.Count - 1].BackColor = color;
            }
            body.Add(tail);
            frmMain.Controls.Add(tail);
        }
예제 #3
0
        public void MoveSnake(FrmMain.laws law, bool wall = false)
        {
            AddBody(law, wall);

            if (frmMain.gameOver)
            {
                return;
            }

            frmMain.Controls.Remove(body[0]);

            body.RemoveAt(0);

            if (body.Count != 0)
            {
                body[body.Count - 1].BackColor = Color.Gray;
            }
        }