Exemplo n.º 1
0
        //-------------Form 呼叫的 Paint-------------//
        public void Paint(Graphics g)
        {
            Background.Paint(g);

            //------ 遊戲開始
            if (step == 1)
            {
                RainBow.Paint(g);
                if (WingL != null)
                {
                    WingL.Paint(g);
                }
                if (WingR != null)
                {
                    WingR.Paint(g);
                }
                Cloud.Paint(g);
                mainCharactor.Paint(g);
                stone.Paint(g);
                yellowBird.Paint(g);
            }

            //------ 換頁效果
            if (step == 5 || step == 2 || step == 3)
            {
                turn.Paint(g);
            }

            //------ 說明頁
            if (explain != null && ExplainPlayBtn != null)
            {
                explain.Paint(g);
                ExplainPlayBtn.Paint(g);
                if (Global.Mode != 0)
                {
                    rNextBtn.Paint(g);
                    lNextBtn.Paint(g);
                }
                if (explainPage == 1)
                {
                    WingL.Paint(g);
                    WingR.Paint(g);
                }
            }
        }
Exemplo n.º 2
0
        //-------------Thread 裡面的 動作-------------//
        public void Move()
        {
            switch (step)
            {
            //遊戲進場
            case 0:
                Thread.Sleep(70);
                if (WingL != null)
                {
                    WingL.Action();
                }
                if (WingR != null)
                {
                    WingR.Action();
                }
                break;

            //遊戲開始
            case 1:
                //在Thread裡面的動作記得要睡覺。
                countTime.StartT();
                Thread.Sleep(70);

                //角色的翻轉動作。
                if (Cloud._Angle >= 0)
                {
                    mainCharactor.Action();
                }
                else
                {
                    mainCharactor.ReAction();
                }

                //角色的動態圖
                if (WingL != null)
                {
                    WingL.Action();
                }
                if (WingR != null)
                {
                    WingR.Action();
                }
                yellowBird.Action();

                //翅膀是否碰到
                if (WingL != null)
                {
                    if (WingL.isClick(mainCharactor.Center.X, mainCharactor.Center.Y))
                    {
                        music.ContiPlayMusic("getWings.mp3");
                        Global.target -= 1;
                        WingL          = null;
                    }
                }
                if (WingR != null)
                {
                    if (WingR.isClick(mainCharactor.Center.X, mainCharactor.Center.Y))
                    {
                        music.ContiPlayMusic("getWings.mp3");
                        Global.target -= 1;
                        WingR          = null;
                    }
                }

                if (WingL == null && WingR == null)
                {
                    music.PlayMusic("change.wav");
                    mainCharactor.Motion(3);
                    if (Global.Mode == 1)
                    {
                        step = 4;
                    }
                    else
                    {
                        step = 2;
                    }
                }

                // 黃色小鳥移動與刷新
                if (yellowBird.Center.X < 0 && (stone.Center.Y > 500))
                {
                    yellowBird.HP = 2;
                    yellowBird.Motion(0);
                    yellowBird.Center = new Point(1300, 100);
                    stone.t           = 0;
                    stone.Center      = yellowBird.Center;
                }
                else
                {
                    yellowBird.Move(-20, 0);
                }

                // 黃色小鳥丟石頭與否
                if (stone.Center.Y <= yellowBird.Center.Y + 100)
                {
                    //當小鳥超過主角會自動釋放物體
                    if (yellowBird.Center.X <= mainCharactor.Center.X && stone.Center.X > 0)
                    {
                        if (!countTime.Sec(1))
                        {
                            music.ContiPlayMusic("Stonrfalling.mp3");
                        }
                        stone.GMove(0, 1);
                    }
                    else
                    {
                        //石頭沒超過主角,和鳥一起移動
                        stone.Center = new Point(yellowBird.Center.X, yellowBird.Center.Y + 50);
                    }
                }
                else
                {
                    //石頭自然釋出
                    if (stone.isClick(mainCharactor.Center.X, mainCharactor.Center.Y - 50))
                    {
                        if (countTime.MilSec(500))
                        {
                            Global.HP -= 2;
                            music.PlayMusic(1);
                        }
                        music.StopMusic("Stonrfalling.mp3");

                        if (Global.HP <= 0)
                        {
                            step = 3;
                        }
                    }
                    if (Cloud.isClick(stone.Center.X, stone.Center.Y - 50))
                    {
                        music.PlayMusic("punch.mp3");
                        if (stone.Center.X > Cloud.Center.X)
                        {
                            Cloud._Angle += Convert.ToInt32(Math.Sqrt(Math.Pow(stone.Center.X - Cloud.Center.X, 2) + Math.Pow(stone.Center.Y - Cloud.Center.Y, 2)) / 60);
                        }
                        else
                        {
                            Cloud._Angle += -Convert.ToInt32(Math.Sqrt(Math.Pow(stone.Center.X - Cloud.Center.X, 2) + Math.Pow(stone.Center.Y - Cloud.Center.Y, 2)) / 50);
                        }
                    }

                    stone.GMove(0, 1);
                }

                if (mainCharactor.Center.Y + Convert.ToInt32(-a * Math.Tan(mainCharactor.Sita)) > 900)
                {
                    Global.HP--;
                    if (Global.HP <= 0)
                    {
                        step = 3;
                    }
                    a  = 0;
                    t1 = t2 = 0;
                }

                //當板子開始有角度的時候
                if (Cloud._Angle > 0)
                {
                    //角色在板子上的(加)速度
                    a -= Convert.ToInt32(10 * Math.Sin(mainCharactor.Sita)) * t1 / 2;
                    //角色的速度為零時,時間參數歸零,避免角色暴衝
                    if (Convert.ToInt32(10 * Math.Sin(mainCharactor.Sita)) * t1 / 2 == 0)
                    {
                        t1 = 0;
                    }
                    //另一側的時間參數歸零
                    t2 = 0;
                    //時間參數是隨著執行次數而增加的
                    t1++;

                    //角色在斜面上移動,y的位置利用角度去算出確實位置,以保證角色維持在斜面上移動。
                    mainCharactor.CloudMove(Cloud.Center, -a, Convert.ToInt32(-a * Math.Tan(mainCharactor.Sita)));
                    //角色和斜面同角度。
                    mainCharactor._Angle = Cloud._Angle;
                }
                else if (Cloud._Angle < 0)
                {
                    a -= Convert.ToInt32(10 * Math.Sin(mainCharactor.Sita)) * t2 / 2;
                    if (Convert.ToInt32(10 * Math.Sin(mainCharactor.Sita)) * t2 / 2 == 0)
                    {
                        t2 = 0;
                    }

                    t1 = 0;
                    t2++;
                    mainCharactor.CloudMove(Cloud.Center, -a, Convert.ToInt32(-a * Math.Tan(mainCharactor.Sita)));
                    mainCharactor._Angle = Cloud._Angle;
                }
                else if (Cloud._Angle == 0)
                {
                    mainCharactor._Angle = Cloud._Angle;
                    mainCharactor.CloudMove(Cloud.Center, -a, Convert.ToInt32(-a * Math.Tan(mainCharactor.Sita)));
                    t1 = t2 = 0;
                }
                countTime.EndT();
                break;

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

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

            //遊戲過關
            case 4:
                music.PlayMusic("Pass.mp3");
                Ranker ranker = new Ranker();
                ranker.Load();
                ranker.Clear();
                ranker.ShowRank(1);
                step = 5;
                break;

            case 5:
                turn.TurnWin(pageName.mainPage);
                break;
            }
        }