Example #1
0
        public void Action()
        {
            switch (step)
            {
            //遊戲開始
            case 0:

                Thread.Sleep(100);
                dragon.Action();

                if (dragon.Center.X <= 850)
                {
                    dragon.Move(7, 0);
                }

                // SuperDragon Logo
                if (dragon.Center.X >= 500)
                {
                    if (superragonLogo.Center.Y <= 0)
                    {
                        superragonLogo.Move(0, 500);
                    }
                    else if (superragonLogo.Center.Y == 300 && (super_count == 0 || super_count == 1))
                    {
                        superragonLogo.Move(0, -30);
                    }
                    else if (superragonLogo.Center.Y == 270 && (super_count == 0))
                    {
                        superragonLogo.Move(0, 30); super_count++;
                    }
                }

                if (!mainPageisStart)
                {
                    step = 1;
                }
                break;

            //遊戲進場
            case 1:
                turn.TurnWin(pageName.turntablePage);
                break;
            }
        }
Example #2
0
        public void Action()
        {
            switch (step)
            {
            //遊戲進場說明
            case 0:
                Thread.Sleep(100);
                river.Action();
                river2.AntiAction();
                // 說明頁切換
                switch (explainPage)
                {
                case 0:
                    mainCharacter.Action();
                    // mainCharater 動作
                    if (mainCanJump)
                    {
                        if (mainCharacter.Center.Y >= 280 && touch == 0)
                        {
                            mainCharacter.Move(0, -3 * jumpt);
                            jumpt++;
                        }
                        else if (mainCharacter.Center.Y <= 430)
                        {
                            touch = -1;
                            mainCharacter.Move(0, 3 * jumpt);
                            jumpt--;
                            if (mainCharacter.Center.Y > 430)
                            {
                                mainCanJump = false;
                                jumpt       = 0;
                                touch       = 0;
                            }
                        }
                    }

                    break;

                case 1:
                    mainCharacter.Action();
                    break;

                case 2:
                    // yellowDragon 動作
                    yellowDragon[0].Action();
                    if (yellowDragon[0].Center.Y <= 350)
                    {
                        isUp = false;
                    }
                    else if (yellowDragon[0].Center.Y >= 600)
                    {
                        isUp = true;
                    }
                    if (isUp)
                    {
                        yellowDragon[0].Move(0, -20);
                    }
                    else if (!isUp)
                    {
                        yellowDragon[0].Move(0, 20);
                    }
                    break;
                }


                break;

            //遊戲開始
            case 1:
                countTime.StartT();
                Thread.Sleep(90);
                music.PlayMusic(4);
                if (yellowDragon[0].Enemys == 0 && yellowDragon[1].Enemys == 0)
                {
                    if (winroad.Center.X < 520)
                    {
                        pinkDragon.Action();
                        pinkDragon.Move(-4, 0);
                        if (pinkDragon.isClick(mainCharacter.Center.X + 50, mainCharacter.Center.Y))
                        {
                            step = 4;
                        }
                    }
                    else
                    {
                        winroad.Move(-10, 0);
                        pinkDragon.Move(-10, 0);
                    }
                }

                // 所有圖片動畫
                if (winroad.Center.X > 520)
                {
                    river.Action();
                    river2.AntiAction();
                    grid.Action(-160, new Point(1900, 700), -10, 0);
                    background.Action(-440, new Point(1700, 340), -3, 0);
                }
                mainCharacter.Action();

                //---------------- Enemys
                for (int i = 0; i < yellow_NUM; i++)
                {
                    if (yellowDragon[i] != null)
                    {
                        yellowDragon[i].Action();
                        yellowDragon[i].Jump(grid.continuousActors[grid.continuousActors.Count - 1].Center, i);
                        if (yellowDragon[i].isClick(mainCharacter.Center.X, mainCharacter.Center.Y))
                        {
                            Global.HP -= 1;
                            music.PlayMusic(1);
                            if (Global.HP <= 0)
                            {
                                step = 3;
                            }
                            mainCharacter.Motion(2);
                        }
                        healthPts[i].Center = new Point(yellowDragon[i].Center.X, yellowDragon[i].Center.Y - 120);
                        healthPts[i].Health(yellowDragon[i].HP, 5);
                    }
                }

                // 恐龍是否走在路上
                touch = 0;
                for (int i = 0; i < grid.continuousActors.Count; i++)
                {
                    if (grid.continuousActors[i].isClick(mainCharacter.Center.X - 15, mainCharacter.Center.Y + 60))
                    {
                        touch++;
                    }
                }

                // 恐龍動作(跳/墜落)
                if (ispower && jumpt > -10)
                {
                    jumpt--;
                }
                if (isjump)
                {
                    if (jumpt < 2)
                    {
                        mainCharacter.Move(0, -30 + jumpt);
                    }
                    else
                    {
                        isjump = false;
                        jumpt  = 0;
                    }

                    jumpt++;
                }
                else if (winroad.Center.X <= 750)
                {
                    mainCharacter.Center = new Point(mainCharacter.Center.X + 4, 550);
                }
                else if (touch == 0)
                {
                    mainCharacter.GMove(0, 3);
                }

                // 恐龍扣血
                if (mainCharacter.Center.Y > 950)
                {
                    Global.HP -= 1;
                    music.ContiPlayMusic("drop.wav");
                    if (Global.HP <= 0)
                    {
                        step = 3;
                    }
                    mainCharacter.Motion(2);
                    mainCharacter.Center = new Point(190, 190);
                    mainCharacter.t      = 0;
                    isjump = false;
                }

                // 計時直到碰見粉紅
                if (!pinkDragon.isClick(mainCharacter.Center.X, mainCharacter.Center.Y))
                {
                    countTime.EndT();
                }
                break;

            //遊戲勝場
            case 2:
                music.StopMusic("cave2.wav");
                turn.Turn(pageName.mainPage);
                break;

            //遊戲敗場
            case 3:
                music.StopMusic("cave2.wav");
                turn.Turn(pageName.mainPage);
                break;

            case 4:
                music.PlayMusic("Pass.mp3");
                Ranker ranker = new Ranker();
                ranker.Load();
                ranker.Clear();
                ranker.ShowRank(0);
                step = 2;
                break;
            }
        }
Example #3
0
        //---------------- 加在 Form1.Thread 裡 ----------------//
        public void Move()
        {
            switch (step)
            {
            //遊戲進場說明
            case 0:
                Thread.Sleep(80);
                if (explainPage == 1 && Global.Mode > 0)
                {
                    mainCharactor.Action();

                    //敵人的動作
                    if (!isAttackOrange)
                    {
                        orangeDragon.Action();
                        if (newt.MilSec(500))
                        {
                            orangeDragon.Motion(1);
                        }
                    }
                    //敵人丟骨頭
                    bone._Angle += 9;
                    bone.Move(-15 - speed, 0);

                    if (mainCharactor.isClick(bone.Center.X, bone.Center.Y))
                    {
                        //如果沒防禦
                        if (!escaption)
                        {
                            music.PlayMusic(1);
                            mainCharactor.Motion(2);
                            canPaintHp01 = true;
                        }
                        bone.Center = new Point(orangeDragon.Center.X - 50, orangeDragon.Center.Y - 20);
                        music.PlayMusic(3);
                    }
                }
                break;

            //遊戲開始
            case 1:

                newt.StartT();
                Thread.Sleep(50);

                //----------------  背景移動
                mountains.Action(-200, new Point(1800, 600), -3, 0);
                grasses.Action(-150, new Point(1200, 658), -3 - speed, 0);
                clouds.Action(-150, new Point(1300, 150 + 80 * randomizer.Next(1, 5)), -3, 0);

                if (orangeDragon.Enemys > 0)
                {
                    // 黃色小鳥 : 會丟石頭或生命蛋
                    yellowBird.Action();
                    // 黃色小鳥移動與刷新
                    if (yellowBird.Center.X < 0 && (stone.Center.X < 0))
                    {
                        yellowBird.HP = 2;
                        yellowBird.Motion(0);
                        yellowBird.Center = new Point(1300, 100);
                        stone.Center      = yellowBird.Center;
                    }
                    else
                    {
                        yellowBird.Move(-8 - speed, 0);
                    }

                    // 黃色小鳥丟石頭與否
                    if (yellowBird.HP > 0)
                    {
                        //當小鳥超過主角會自動釋放物體
                        if (yellowBird.Center.X <= mainCharactor.Center.X - (-3 - speed) * (20 + speed))
                        {
                            //當石頭砸到主角
                            if (stone.isClick(mainCharactor.Center.X, mainCharactor.Center.Y - 50))
                            {
                                mainCharactor._Angle += 5;
                                Global.HP            -= 2;
                                music.PlayMusic(6);
                                stone.Center = new Point(-100, 0);
                                stone.t      = 0;
                                if (Global.HP <= 0)
                                {
                                    step = 3;
                                }
                            }
                            //石頭落下狀態
                            if (stone.Center.Y < 700)
                            {
                                music.ContiPlayMusic("Stonrfalling.mp3");
                                stone.GMove(-3 - speed, 1);
                            }
                            else
                            {
                                stone.Move(-5 - speed, 0);
                            }
                        }
                        else
                        {
                            //石頭沒超過主角,和鳥一起移動
                            stone.Center = new Point(yellowBird.Center.X, yellowBird.Center.Y + 70);
                        }
                    }
                    else
                    {
                        //小鳥被點到,石頭自然釋出
                        if (stone.isClick(orangeDragon.Center.X, orangeDragon.Center.Y))
                        {
                            music.PlayMusic(1);
                            orangeDragon.HP -= 4;
                            orangeDragon.Life();
                        }
                        if (stone.Center.Y < 700)
                        {
                            music.ContiPlayMusic("Stonrfalling.mp3");
                            stone.GMove(-3 - speed, 1);
                            if (stone.Center.Y > 680)
                            {
                                music.PlayMusic(6);
                            }
                        }
                        else
                        {
                            music.StopMusic("Stonrfalling.mp3");
                            stone.Move(-5 - speed, 0);
                        }
                    }
                }

                //主角的動作
                mainCharactor.Action();
                if (mainCharactor._Angle > 0)
                {
                    mainCharactor._Angle -= 1;
                }
                if (orangeDragon.Enemys <= 0 && rainbow.isClick(mainCharactor.Center.X - 250, mainCharactor.Center.Y))
                {
                    mainCharactor.Move(-2 - speed, -5 - speed);
                    if (mainCharactor.Center.Y <= 100)
                    {
                        step = 2;
                    }
                }

                if (orangeDragon.Enemys > 0)
                {
                    //敵人的動作
                    orangeDragon.Action();
                    orangeDragon.Move(-5 - speed, 0);
                    bone._Angle += 9;
                    bone.Move(-20 - speed, 0);

                    if (orangeDragon.Center.X <= 0)
                    {
                        orangeDragon.Center = new Point(1200, 600);
                        bone.Center         = new Point(orangeDragon.Center.X - 50, orangeDragon.Center.Y - 20);
                    }

                    //點主角防禦骨頭攻擊
                    if (mainCharactor.isClick(bone.Center.X, bone.Center.Y))
                    {
                        //如果沒防禦
                        if (!escaption)
                        {
                            music.PlayMusic(1);
                            Global.HP -= 1;
                            if (Global.HP <= 0)
                            {
                                step = 3;
                            }
                            mainCharactor.Motion(2);
                        }
                        bone.Center = new Point(orangeDragon.Center.X - 50, orangeDragon.Center.Y - 20);
                        music.PlayMusic(3);
                        orangeDragon.Motion(1);
                    }
                    else if (!orangeDragon.isClick(bone.Center.X, bone.Center.Y) && orangeDragon.images.Count == 3)
                    {
                        orangeDragon.Motion(0);
                    }

                    healthyellow.Health(yellowBird.HP, 2);
                    healthorange.Health(orangeDragon.HP, 10);
                    healthyellow.Center = new Point(yellowBird.Center.X, yellowBird.Center.Y - 100);
                    healthorange.Center = new Point(orangeDragon.Center.X, orangeDragon.Center.Y - 100);
                }

                //怪物打完一定數量啟動換關卡機制
                if (orangeDragon.Enemys <= 0)
                {
                    Form1.labelx.Invoke((Action) delegate { Form1.labelx.Text = Global.TIME.ToString("000.0") + " Sec            " + "              X " + Global.target; });
                    Thread.Sleep(25);
                    rainbow.Move(-4 - speed, 0);
                    mainCharactor.Move(4 + speed, 0);
                }
                else
                {
                    newt.EndT();
                }
                speed = 9 - orangeDragon.Enemys;
                break;

            //遊戲勝場
            case 2:
                turn.TurnWin(pageName.level01);
                break;

            //遊戲敗場
            case 3:
                turn.TurnGameOver(pageName.mainPage);
                break;
            }
        }