在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 飞机大战源码

飞机大战源码

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:218.22M
  • 下载次数:23
  • 浏览次数:201
  • 发布时间:2022-01-09
  • 实例类别:C#语言基础
  • 发 布 人:zlzfc
  • 文件格式:.rar
  • 所需积分:10
 相关标签: 飞机大战 大战 飞机

实例介绍

【实例简介】飞机大战源码

 刚开始学习c#,从网上下载了个飞机大战游戏。研究后做了许多改进。各种对象都继承了接口。规范了了继承结构。应用了C#中类的思想。代码 结构合理,易读性提高。

【实例截图】

【核心代码】

 protected override void OnPaint(PaintEventArgs e)
        {
            //获得绘画设备(画笔,画板)
            Graphics g = e.Graphics;
            //绘制图像-游戏背景
            GameBackGround.Draw(g);
            //绘制图像-游戏战机
           // GameUI.Time_Run.Stop();
            foreach(IMyEntity b in gameobjecj)
            {
                b.draw(g);
            }
          //  GamePlane.draw(g);

        }
      
       
        /// 修改某一帧的数据
       
        private void Update(int elapsedFrames)
        {
            //修改数据-游戏背景往下移动

         
            GameBackGround.Update(elapsedFrames);
            for(int i = 0;i<gameobjecj.Count; i )
            {
               gameobjecj[i].Update();
            }
            for(int i = 0; i<gameobjecj.Count; i )  //碰撞检测
            {
                if(gameobjecj[i] is Enemy)
                {
                    ((Enemy) gameobjecj[i]).Iscollision();
                }
                
                else if(gameobjecj[i] is Bullet)
                {
                    ((Bullet)gameobjecj[i]).Iscollision();
                }
                else if(gameobjecj[i] is Supply)
                {
                    ((Supply)gameobjecj[i]).Iscollision();
                }
            }


            for(int i = 0; i<gameobjecj.Count; i )  //回收物体
            {
                if( gameobjecj[i].state ==State.死亡 && !(gameobjecj[i] is Player))
                {
                    gameobjecj.RemoveAt(i);
                    i--;
                    if(i<0) break;
                }
            }
           


            小飞机.ticktime ; 大飞机.ticktime ; Boss.ticktime ; 瓶子.ticktime ;
            if(小飞机.ticktime >小飞机.quency)
            {
                小飞机.ticktime=0;
                gameobjecj.Add(new 小飞机());
            }
 
            if(大飞机.ticktime>大飞机.quency)
            {
                大飞机.ticktime=0;
                gameobjecj.Add(new 大飞机());
            }

            if(Boss.ticktime>Boss.quency)
            {
                Boss.ticktime=0;
                gameobjecj.Add(new Boss());
            }
            if(瓶子.ticktime>瓶子.quency)
            {
                瓶子.ticktime=0;
                gameobjecj.Add(new 瓶子());
            }

        }

/////////////////////////////////////////////////////////

 public interface weapon   //武器
    {
        int X { get; set; }
        int Y { get; set; }
        int ticktime { get; set; }
        int Frequency { get; set; } //子弹发射频率
        int BulletType { get; set; }//发射的子弹种类
        int 耐久度 { get; set; }
        void fire(int x,int y, ref Box owner); //这里传入的是玩家的坐标
    }
    
    public interface IMyEntity   //实体
    {
        int X { get; set; }
        int Y { get; set; }
        int Speed { get; set; }
        int Width { get; set; }
        int Height { get; set; }
        int 最大血量 { get; set; } //最大血量(杀伤力)
        int 剩余血量 { get; set; } //剩余血量(杀伤力)
        int Drawindex { get; set; }
        State state { get; set; }
        void Update();
        bool IsoverBround();
        void draw(Graphics g);
       // void PlayDXSound();

    }
    public interface  Box : IMyEntity      //
    {
        int 阵营 { get; set; }
    }

    public interface Supply : IMyEntity      //资源
    {
        Direction Direction { get; set; }//方向
        int SupplyType { get; set; }//资源种类
        bool Iscollision();  //碰撞检测
      

    }
    public interface Bullet : IMyEntity      //子弹
    {
        Direction Direction { get; set; }//方向
        int BulletType { get; set; }//子弹种类
        Box Owner { get; set; }
        bool Iscollision();  //碰撞检测


    }

    public interface Enemy : Box     //敌人
    {
  
        string Enemyname { get; }
        int Frequency { get; } //多久产生一个频率

        Direction Direction { get; set; }//方向
        bool Iscollision();  //碰撞检测

    }

    public interface Player : Box    //玩家
    {
        List<weapon> weapons { get; set; }
        Direction Direction { get; set; }//方向
        int grade { get;}//等级

    }
    #endregion

    ////////////////////class//////////////////////////


    #region class子弹
    public class 子弹 : Bullet
    {
        public Direction Direction { get; set; }
        public int BulletType { get; set; }
        public int X { get; set; }
        public int Y { get; set; }
        public int Speed { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
        public int 最大血量 { get; set; }
        public int 剩余血量 { get; set; }
        public int Drawindex { get; set; }
        public Box Owner { get; set; }
        public State state { get; set; }

        public 子弹(int x, int y, int bullettype, ref Box owner)   //构造函数
        {
            X=x; Y=y;
            BulletType=bullettype;
            Owner=owner;
            state=State.正常;
            switch(BulletType)
            {
            case 0: //普通子弹
            Speed=10;
            最大血量=1;
            剩余血量=1;
            Width=GameImage.ZiDan.Width;
            Height=GameImage.ZiDan.Height;
            //播放声音
            new GameSound.GameSoundDX(GameMusic.Zd_Music1).Play();
            break;
            case 1:    //双倍子弹
            Speed=20;
            最大血量=2;
            剩余血量=2;
            Width=GameImage.ZiDan1.Width;
            Height=GameImage.ZiDan1.Height;
            new GameSound.GameSoundDX(GameMusic.Zd_Music1).Play();
            break;    //激光子弹
            case 2:
            Speed=30;
            最大血量=3;
            剩余血量=3;
            Width=GameImage.ZiDan.Width;
            Height=GameImage.ZiDan.Height;
            new GameSound.GameSoundDX(GameMusic.Zd_Music1).Play();
            break;

            }


        }


.
├── 3ba1990841c4274f9b08bb5291992d74_haolizi.rar
├── App.config
├── DLL
│   ├── Microsoft.DirectX.DirectSound.dll
│   └── Microsoft.DirectX.dll
├── GameImage.Designer.cs
├── GameImage.resx
├── GameMusic.Designer.cs
├── GameMusic.resx
├── GameSound
│   ├── GameSound.cs
│   ├── GameSoundDX.cs
│   └── MCIPlay.cs
├── GameUi.Designer.cs
├── GameUi.cs
├── GameUi.resx
├── IMyEntity.cs
├── Program.cs
├── Properties
│   ├── AssemblyInfo.cs
│   ├── Resources.Designer.cs
│   ├── Resources.resx
│   ├── Settings.Designer.cs
│   └── Settings.settings
├── Resources
│   ├── BJ2.jpg
│   ├── Bj_Music1.wav
│   ├── Bj_Music2.wav
│   ├── Bj_Music3.wav
│   ├── Bz_Music1.wav
│   ├── DiJi1.png
│   ├── DiJi2.png
│   ├── LifePrize.wav
│   ├── Zd_Music1.wav
│   ├── ZiDan.png
│   ├── ZiDan1.png
│   ├── again.png
│   ├── bomb_supply.png
│   ├── bullet.wav
│   ├── bullet_supply.png
│   ├── button.wav
│   ├── enemy1.png
│   ├── enemy1_down.wav
│   ├── enemy1_down1.png
│   ├── enemy1_down2.png
│   ├── enemy1_down3.png
│   ├── enemy1_down4.png
│   ├── enemy2.png
│   ├── enemy2_down.wav
│   ├── enemy2_down1.png
│   ├── enemy2_down2.png
│   ├── enemy2_down3.png
│   ├── enemy2_down4.png
│   ├── enemy2_hit.png
│   ├── enemy3_down.wav
│   ├── enemy3_down1.png
│   ├── enemy3_down2.png
│   ├── enemy3_down3.png
│   ├── enemy3_down4.png
│   ├── enemy3_down5.png
│   ├── enemy3_down6.png
│   ├── enemy3_flying.wav
│   ├── enemy3_hit.png
│   ├── enemy3_n1.png
│   ├── enemy3_n2.png
│   ├── font.ttf
│   ├── gameover.png
│   ├── get_bomb.wav
│   ├── get_bullet.wav
│   ├── hit.wav
│   ├── life.png
│   ├── me1.png
│   ├── me2.png
│   ├── me_destroy_1.png
│   ├── me_destroy_2.png
│   ├── me_destroy_3.png
│   ├── me_destroy_4.png
│   ├── me_down.wav
│   ├── pause_nor.png
│   ├── pause_pressed.png
│   ├── resume_nor.png
│   ├── resume_pressed.png
│   ├── supply.wav
│   ├── upgrade.wav
│   └── use_bomb.wav
├── bin
│   ├── Debug
│   │   ├── Microsoft.DirectX.DirectSound.dll
│   │   ├── Microsoft.DirectX.dll
│   │   ├── Newtonsoft.Json.dll
│   │   ├── Newtonsoft.Json.xml
│   │   ├── 自编雷电.exe
│   │   ├── 自编雷电.exe.config
│   │   └── 自编雷电.pdb
│   └── Release
│       ├── Microsoft.DirectX.DirectSound.dll
│       ├── Microsoft.DirectX.dll
│       ├── Newtonsoft.Json.dll
│       ├── Newtonsoft.Json.xml
│       ├── 自编雷电.exe
│       ├── 飞机大战.exe
│       ├── 自编雷电.exe.config
│       ├── 飞机大战.exe.config
│       ├── 自编雷电.pdb
│       └── 飞机大战.rar
├── obj
│   ├── Debug
│   │   ├── DesignTimeResolveAssemblyReferences.cache
│   │   ├── DesignTimeResolveAssemblyReferencesInput.cache
│   │   ├── TempPE
│   │   │   ├── GameImage.Designer.cs.dll
│   │   │   ├── GameMusic.Designer.cs.dll
│   │   │   ├── Resource1.Designer.cs.dll
│   │   │   └── font.Designer.cs.dll
│   │   ├── 自编雷电.GameImage.resources
│   │   ├── 自编雷电.GameMusic.resources
│   │   ├── 自编雷电.GameUI.resources
│   │   ├── 自编雷电.Properties.Resources.resources
│   │   ├── 自编雷电.csproj.CopyComplete
│   │   ├── 自编雷电.csproj.CoreCompileInputs.cache
│   │   ├── 自编雷电.csproj.FileListAbsolute.txt
│   │   ├── 自编雷电.csproj.GenerateResource.cache
│   │   ├── 自编雷电.csprojAssemblyReference.cache
│   │   ├── 自编雷电.exe
│   │   └── 自编雷电.pdb
│   └── Release
│       ├── DesignTimeResolveAssemblyReferences.cache
│       ├── DesignTimeResolveAssemblyReferencesInput.cache
│       ├── TempPE
│       │   ├── GameImage.Designer.cs.dll
│       │   └── GameMusic.Designer.cs.dll
│       ├── 自编雷电.GameImage.resources
│       ├── 自编雷电.GameMusic.resources
│       ├── 自编雷电.GameUI.resources
│       ├── 自编雷电.Properties.Resources.resources
│       ├── 自编雷电.csproj.CopyComplete
│       ├── 自编雷电.csproj.CoreCompileInputs.cache
│       ├── 自编雷电.csproj.FileListAbsolute.txt
│       ├── 自编雷电.csproj.GenerateResource.cache
│       ├── 自编雷电.csprojAssemblyReference.cache
│       ├── 自编雷电.exe
│       └── 自编雷电.pdb
├── tools.cs
├── 自编雷电.csproj
└── 自编雷电.sln

12 directories, 133 files



实例下载地址

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警