嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 10 元微信扫码支付:10 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
飞机大战源码
刚开始学习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