示例#1
0
        private void gameLoop_Tick(object sender, EventArgs e)
        {
            //move hero
            if (leftArrowDown)
            {
                hero.Move("left");

                //adds to moveCount
                moveCount++;
            }
            if (rightArrowDown)
            {
                hero.Move("right");
                moveCount++;
            }
            if (upArrowDown)
            {
                hero.Move("up");
                moveCount++;
            }
            if (downArrowDown)
            {
                hero.Move("down");
                moveCount++;
            }


            //how to make sure hero cannot move diagonally?

            /*if (upArrowDown && rightArrowDown)
             * {
             *  upArrowDown = false;
             * }
             * /* if (upArrowDown && leftArrowDown)
             * {
             *  hero.x = hero.x + 0;
             * }
             * if (downArrowDown && rightArrowDown)
             * {
             *  hero.x = hero.x + 0;
             * }
             * if (downArrowDown && leftArrowDown)
             * {
             *  hero.x = hero.x + 0;
             * }*/


            //collision between hero box and boxes
            foreach (Box b in boxes)
            {
                if (b.Collision(hero))
                {
                    if (leftArrowDown)
                    {
                        b.Move("left");
                    }
                    else if (upArrowDown)
                    {
                        b.Move("up");
                    }
                    else if (rightArrowDown)
                    {
                        b.Move("right");
                    }
                    else if (downArrowDown)
                    {
                        b.Move("down");
                    }
                }
            }

            //collision between boxes and boxes
            //tried to make it so boxes cannot overlap
            foreach (Box b in boxes)
            {
                if (b.Collision(b) && leftArrowDown)
                {
                    if (leftArrowDown)
                    {
                        leftArrowDown = false;
                    }
                    else if (upArrowDown)
                    {
                        b.y = b.y + 0;
                    }
                    else if (rightArrowDown)
                    {
                        b.x = b.x + 0;
                    }
                    else if (downArrowDown)
                    {
                        b.y = b.y + 0;
                    }
                }
            }

            //by setting the bools to false after pressing button,
            //we stop the hero from reaching mach speed in an instant
            leftArrowDown = rightArrowDown = upArrowDown = downArrowDown = false;

            //move counter increases with every move made by the hero
            moveCounter.Text = "Moves: " + moveCount;


            //Collision between dots and boxes
            //foreach dot in dots if a box is colliding increase a counter. If counter is 5, stop game

            foreach (Dot d in dots)
            {
                if (d.Collision(Box))
                {
                    dotCovered++;
                }
                else
                {
                    dotCovered = 0;
                }
            }

            if (dotCovered == 5)
            {
                ResultsScreen rs = new ResultsScreen();
                this.Controls.Add(rs);
            }

            Refresh();
        }