Beispiel #1
0
        public Fragment Grow()
        {
            if (Tail == null)
                return (Head = Tail = new Fragment(true));

            return Tail = Tail.Grow();
        }
Beispiel #2
0
        public Fragment Grow()
        {
            if (this.Next != null)
                return this.Next.Grow();

            var f = new Fragment() { Direction = this.Direction };
            return (this.Next = f);
        }
Beispiel #3
0
 public void Show(Fragment previous, Fragment next)
 {
     var previousblock = registery[previous];
     var bp = previousblock.GetTailPosition(next.Direction);
     var newblock = new Block(bp);
     DisplayPanel.Show(newblock);
     registery.Add(next, newblock);
 }
Beispiel #4
0
        public void UpdatePositions()
        {
            head = head ?? registery.Keys.Single(x => x.IsHead);
            var headblock = registery[head];
            var headblockpos = headblock.Move(head.Direction);

            if (headblockpos.Column < 0 || headblockpos.Column == DisplayPanel.Columns ||
                headblockpos.Row < 0 || headblockpos.Row == DisplayPanel.Rows)
            {
                WillCollideWithWall(this, new EventArgs());
                return;
            }

            if (registery.Values.Any(x => x != headblock && x.Position.Row == headblock.Position.Row
                && x.Position.Column == headblock.Position.Column))
            {
                WillCollideWithItself(this, new EventArgs());
                return;
            }

            headblock.UndoMove();

            if (bait != null && headblock.Position.Row == bait.Position.Row
                && headblock.Position.Column == bait.Position.Column)
            {
                FoodTaken(this, new EventArgs());
            }

            foreach (var pair in registery)
            {
                var f = pair.Key;
                var block = pair.Value;
                var bp = block.Move(f.Direction);//will not move.
                DisplayPanel.UpdatePosition(block);
            }
        }
Beispiel #5
0
 public void Show(Fragment head)
 {
     var block = GetNewBlock();
     DisplayPanel.Show(block);
     registery.Add(head, block);
 }
Beispiel #6
0
 public void Clear()
 {
     DisplayPanel.Clear();
     registery.Clear();
     head = null;
 }