c#游戏编程-利用SharpDX编写坦克大战游戏(1)

时间:2023-02-08 23:57:54
1.   SharpDX简介

SharpDX 是一个免费而且开源的项目,是一个托管语言对DirectX的封装库。SharpDX封装了几乎全部的DirectXAPI,而且最新版本3.0.x已经添加了对Directx12的支持,可以说功能十分的强大。利用SharpDX提供的DirectX的封装库,可以编写出绚丽的2D3D游戏。但是SharpDX的资料却是少的可怜,相比微软的XNA,与之配套的工具和资料都很少。我也是一个初学者,刚开始学习SharpDX的时候因为找不到资料而无从学起,所以想通过这个教程分享一下我在学习SharpDX中的一些经验和教训,希望对大家有所帮助。这是我第一次写教程,所以不足之处还请大家多多见谅。

另附SharpDX官网地址:http://sharpdx.org/

2.   新建一个SharpDX工程

在这个教程中,我将教大家如何利用C#SharpDX编写一个2D坦克大战游戏,当然,其他.NET语言,例如VB.NET等也可以进行编写。我用的IDEVS2013,首先打开IDE,新建一个C#工程:

新建Windows窗体应用程序,选择.NET4框架

c#游戏编程-利用SharpDX编写坦克大战游戏(1)


新建工程之后,我们将引用SharpDX的库文件。在这里,我们用的是2.6.3版本的库,大家可以去官网下载。SharpDX库包括两个部分,一是对DirectX的封装,二是编程框架Toolkit3.0版本被取消),SharpDX提供的编程框架与XNA的十分相似,用这个编程框架,能极大地减少我们的工作量,所以本教程没有采用最新的3.0版本,而是采用了2.6.3版本。新建工程后,点击项目->添加引用,将DirectX11-net40文件夹下的这几个文件添加进去:

SharpDX.dll, SharpDX.Direct3D11.dll, SharpDX.DXGI.dll, SharpDX.Toolkit.dll,SharpDX.Toolkit.Game.dll,  SharpDX.Toolkit.Graphics.dll, SharpDX.Toolkit.Input.dll

并选择复制本地。

新建工程后,IDE默认添加了一个Form1窗体,我们将其删掉,并新建一个类,起名叫做 MyGame,并继承自Game类。添加如下引用:

using System;
using SharpDX;
using SharpDX.Toolkit;
using SharpDX.Toolkit.Graphics;

并添加两个成员变量:

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

graphics用来设置与显示相关的参数,spriteBatch是一个精灵集,用来进行绘图

再添加一个MyGame的无参构造函数,来对游戏进行配置:

public MyGame()
{
graphics = new GraphicsDeviceManager(this);
//设置分辨率
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
graphics.IsFullScreen = false;
//禁用鼠标
IsMouseVisible = false;
//更改刷新率
TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 25);
//设置content根目录
Content.RootDirectory = "Assets";
}

完整代码如下所示:

    public class MyGame : Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

public MyGame()
{
graphics = new GraphicsDeviceManager(this);
//设置分辨率
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
graphics.IsFullScreen = false;
//禁用鼠标
IsMouseVisible = false;
//更改刷新率
TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 25);
//设置content根目录
Content.RootDirectory = "Assets";
}
}

添加完代码后,打开Program.cs,修改main函数为如下:

        static void Main()
{
using(MyGame game = new MyGame())
{
game.Run();

}
}
保存并运行,如果一切顺利,你应该能够看到一个背景为黑色的大小为800 * 600的窗体展现在你的眼前了,下一节,我将教大家如何向游戏中添加一个能由玩家控制的小坦克。