//-------------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); } } }
//-------------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; } }