基本信息
源码名称:c#GUI飞机大战(雷电)
源码大小:153.81M
文件格式:.zip
开发语言:C#
更新时间:2016-03-09
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
c#winfrom写的,用绘图技术画的
c#winfrom写的,用绘图技术画的
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Windows.Forms; using Game_Fly.Code; using System.IO; using Game_Fly.GameSound; namespace Game_Fly { public partial class GameUI : Form { //游戏全局 public static int elapsedFrames = 0;//累计帧数 public static Timer Time_Run;//游戏跑起的总线程 public static BackGround GameBackGround;//背景 public static Plane GamePlane;//战机 public static List<Bullet> ListBullets;//子弹 public static List<BulletTwo> ListBulletsTwo;//升级子弹 public static List<Enemy1> ListEnemy1;//敌机1 public static List<Enemy2> ListEnemy2;//敌机2 public static List<EnemyBoss> ListEnemyBoss;//敌机Boss public static List<BulletTwoPrize> ListBulletTwoPrize;//奖励子弹 public static List<LifePrize> ListLifePrize;//奖励生命 public static GameUI GameForm; /// <summary> /// 游戏初始化 /// </summary> public GameUI() { //采用双缓冲,解决角色移动屏幕闪烁 //this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.OptimizedDoubleBuffer, true); InitializeComponent(); //游戏组件初始化 Time_Run = Time_Game;//总线程 GameForm = this; GameBackGround = new BackGround(); GamePlane = new Plane(); ListBullets = new List<Bullet>(); ListEnemy1 = new List<Enemy1>(); ListEnemy2 = new List<Enemy2>(); ListEnemyBoss = new List<EnemyBoss>(); ListBulletsTwo = new List<BulletTwo>(); ListBulletTwoPrize = new List<BulletTwoPrize>(); ListLifePrize = new List<LifePrize>(); #region 随机播放音乐 //随机产生游戏音乐 Random randmon = new Random(); List<Stream> list_Music = new List<Stream>() { GameMusic.Bj_Music1, GameMusic.Bj_Music2, GameMusic.Bj_Music3 }; //游戏效果音乐启动 GameSound.GameSound.BackSoundPlay(list_Music[randmon.Next(0, list_Music.Count)]); #endregion } /// <summary> /// 绘制图形 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { //获得绘画设备(画笔,画板) Graphics g = e.Graphics; //绘制图像-游戏背景 GameBackGround.Draw(g); //绘制图像-游戏战机 GamePlane.Draw(g); //绘制泛型中的子弹 foreach (Bullet item in ListBullets) item.Draw(g); //绘制泛型中的子弹2 foreach (BulletTwo item in ListBulletsTwo) item.Draw(g); //敌机1 foreach (Enemy1 item in ListEnemy1) item.Draw(g); //敌机2 foreach (Enemy2 item in ListEnemy2) item.Draw(g); //敌机Boss foreach (EnemyBoss item in ListEnemyBoss) item.Draw(g); //子弹奖品 foreach (BulletTwoPrize item in ListBulletTwoPrize) item.Draw(g); //生命奖励 foreach (LifePrize item in ListLifePrize) item.Draw(g); //游戏是否结束 if (GamePlane.IsOver) { GamePlane.Life = 0; g.DrawString("等级:" GameUI.GamePlane.Grade "\n分数:" GameUI.GamePlane.HitNumber "\nGameOver 重玩[Enter]?", new Font("微软雅黑", 20), Brushes.Red, new PointF((GameUI.GameForm.ClientSize.Width - GameUI.GameBackGround.Width) / 2 GameUI.GameBackGround.Width / 3, GameUI.GameForm.ClientSize.Height / 2)); GameUI.Time_Run.Stop(); } } /// <summary> /// 修改某一帧的数据 /// </summary> /// <param name="elapsedFrames">计数帧</param> private void Update(int elapsedFrames) { //修改数据-游戏背景往下移动 GameBackGround.Update(elapsedFrames); //修改数据-修改战机数据 GamePlane.Update(elapsedFrames); //修改数据-修改所有子弹数据 for (int i = ListBullets.Count - 1; i >= 0; i--) { ListBullets[i].Update(elapsedFrames); } //修改数据-修改所有子弹2数据 for (int i = ListBulletsTwo.Count - 1; i >= 0; i--) { ListBulletsTwo[i].Update(elapsedFrames); } //修改数据-修改所有敌机1的数据 for (int i = ListEnemy1.Count - 1; i >= 0; i--) { ListEnemy1[i].Update(elapsedFrames); } //修改数据-修改所有敌机Boss的数据 for (int i = ListEnemy2.Count - 1; i >= 0; i--) { ListEnemy2[i].Update(elapsedFrames); } //修改数据-修改所有敌机2的数据 for (int i = ListEnemyBoss.Count - 1; i >= 0; i--) { ListEnemyBoss[i].Update(elapsedFrames); } //修改数据-修改所有子弹奖励的数据 for (int i = ListBulletTwoPrize.Count - 1; i >= 0; i--) { ListBulletTwoPrize[i].Update(elapsedFrames); } //修改数据-修改所有生命奖励的数据 for (int i = ListLifePrize.Count - 1; i >= 0; i--) { ListLifePrize[i].Update(elapsedFrames); } } private void Time_Game_Tick(object sender, EventArgs e) { //累计帧数 elapsedFrames ; //修改第几帧数据 Update(elapsedFrames); //刷屏重绘 //this.Refresh(); //重绘窗体,只重新绘制变化的部分 this.Invalidate(new Rectangle(0, 0, this.Width, this.Height), true); } } }