实例介绍
【实例简介】飞机大战源码
刚开始学习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
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论