使用sdl.net在c#中编程游戏教程一

开源的一个问题是,项目有时似乎半途而废,或者轮流进行令人困惑的工作。以SDL.NET为例。忽略该网站的销售,在网上搜索发现cs-sdl.sourceforge.net项目似乎已于2010年11月停止。我们不认为它已经停止了,但看起来它已经停止了。...

开源的一个问题是,项目有时似乎半途而废,或者轮流进行令人困惑的工作。以SDL.NET为例。忽略该网站的销售,在网上搜索发现cs-sdl.sourceforge.net项目似乎已于2010年11月停止。我们不认为它已经停止了,但看起来它已经停止了。

如果你不懂C语言,你首先需要学习如何用C语言编程。在别处,我们看到Mono网站上链接的Tao框架似乎涵盖了相同的领域,并增加了对声音等的支持。但在sourceforge上(再次!),它已被OpenTK取代,但重点是OpenGL。然而,它也包括OpenAL,因此安装这两个(cs sdl和OpenTK)似乎是前进的方向。

部分OpenTk安装失败;NS(着色器),因为我们没有安装VS 2008!不过,其余的都还可以。我们创建了一个C#控制台项目,并开始使用SDL.NET。在线文档可以在这里找到。

回顾过去,我们可以看到OpenTK框架本身并不需要,SDL.NET安装了所有东西,但当时还不清楚。它仍然使用Tao框架,尽管其开发已被OpenTK取代。这有点令人困惑,我们希望SDL.NET团队将来会推出一个与OpenTk兼容的版本。

SDL.NET到底是什么?

正如我们所想,它不仅仅是一个薄薄的SDL包装器,而是增加了相当多的额外功能。提供了许多类来提供以下内容:

  • 计时器
  • 提供精灵,包括动画和文本
  • 为2D和OpenGl提供曲面
  • 提供对电影加载和播放的支持
  • 提供对音频的支持
  • 提供Bezier、多边形(和纹理)、正方形、圆形、直线和饼图
  • 使用发射器、精灵和操纵器提供粒子支持。
  • 通过带有surface的共享PictureBox提供与Windows窗体的接口。

准备工作

你必须做几件事才能把它设置好。这是:

找到两个SDL.NET dll(SdlDotNet.dll和Tao.SDL.dll)以及OpenTK dll,并将它们添加到项目引用中。安装后,DLL位于Program Files\SdlDotNet\bin(在32位Windows上)和Program Files(x86)中\SdlDotNet\bin(在64位Windows上)。右键单击解决方案资源管理器中的“引用”部分,然后单击“添加引用”并选择“浏览”选项卡。这样会打开一个资源管理器对话框,找到DLL后,选择“确定”。

SDL.NET使用SDL DLL集并将其安装在lib文件夹下。不要删除它们!

最后,单击View\Properties打开属性页,并在第一个选项卡(应用程序)上将输出类型从Console应用程序更改为Windows应用程序。如果在程序首次运行并打开SDL主窗口时不这样做,它也会打开一个控制台窗口。

我们现在可以开始了,我在下面创建了一个简短的应用程序。这将以每秒1700帧的速度,以每秒50帧的帧速率在窗口表面上随机绘制大小和位置的矩形和圆形。

1700来自将每帧绘制的数字设置为17,并使用Video.WindowCaption在窗口标题中显示每秒的帧数。每帧绘制17个填充圆和矩形,17 x 2 x 50=1700。这个数字取决于视频卡、CPU等。这是一个令人印象深刻的速度。

//大卫·博尔顿,http://cplus.about.comusing 系统使用系统图;使用SdlDotNet.Graphics;使用SdlDotNet.Core;使用SdlDotNet.Graphics.Primitives;public类ex1{private const int wwidth=1024;private const int wheight=768;private static Surface Screen;private static Random r=new Random();public static void Main(string[]args){Screen=Video.SetVideoMode(wwidth,wheight,32,false,false,false,false,true);Events.TargetFps=50;Events.Quit+=(quitEvents.Tick+)=(TickEventHandler);Events.Run();}私有静态void QuitEventHandler(对象发送方,QuitEventArgs参数){Events.QuitApplication();}私有静态void TickEventHandler(对象发送方,TickEventArgs参数){for(var i=0;i<17;i++){var rect=new Rectangle(新点(r.Next(wwidth-100),r.Next(wheight-100)),新大小(10+r.Next(wwidth-90),10+r.Next(wheight-90));var Col=Color.FromArgb(r.Next(255),r.Next(255),r.Next(255),r.Next(255),r.Next(255));短半径=(短)(10+r.Next(wheight-90));var Circ=新圆(新点(r.Next(wwidth-100),r.Next(wheight-100)),半径);屏幕填充(rect,Col);画圈(Screen,CircCol,false,true);Screen.Update();Video.WindowCaption=Events.Fps.ToString();}

面向对象开发

SDL.NET非常面向对象,每个SDL.NET应用程序都使用两个预定义的对象。

视频提供了设置视频模式、创建视频表面、隐藏和显示鼠标光标以及与OpenGL交互的方法。我们暂时不会使用OpenGL。

Events类包含可附加到以读取用户输入和其他杂项事件的事件。

这里,视频对象用于设置游戏窗口的大小和分辨率(全屏是一个选项)。SetVideoMode的参数允许您更改这些参数,13个重载提供了丰富的多样性。doc文件夹中有一个.chm文件(Windows html帮助格式),用于记录所有类和成员。

Events对象有一个Quit Events处理程序,允许您添加关闭逻辑,您应该调用Events.QuitApplication()使其响应用户关闭应用程序。Tick可能是最重要的事件处理程序。它在每个帧调用指定的事件处理程序。这是所有SDL.NET开发的模型。

你可以设置你想要的帧速率,我把循环减少到5,把Targetfps改为150,我们让它以每秒164帧的速度运行。TargetFps是一个大概的数字;为了让你接近这个数字,它会带来延迟,但是事件。Fps是交付的。

表面

与SDL的原始非窗口版本一样,SDL.NET使用曲面渲染到屏幕。可以从图形文件构造曲面。有大量的属性和方法可以读取或写入像素以及绘制图形原语、blit其他曲面,甚至可以将曲面转储到磁盘文件中以拍摄屏幕截图。

SDL>NET提供了几乎所有可以让您创建游戏的功能。在接下来的几个教程中,我们将介绍各种功能,然后使用它创建游戏。

  • 发表于 2021-10-17 03:57
  • 阅读 ( 189 )
  • 分类:数学

你可能感兴趣的文章

寻找最好的编程语言?从这里开始!

...个很好的开始)。现在,浏览器端和服务器端逻辑都可以使用JavaScript,使用Meteor或React这样的框架很容易做到。 Python:Python用于服务器端逻辑,这意味着您将需要HTML、CSS和JavaScript作为您创建的任何web应用的浏览器...

  • 发布于 2021-03-12 12:24
  • 阅读 ( 297 )

用unity编写游戏:初学者指南

...uper Meat Boy,即使你不需要技能来**这样的游戏,你也可以使用Buildbox来**游戏。 ...

  • 发布于 2021-03-13 11:55
  • 阅读 ( 233 )

初学者最容易学习的6种编程语言

... 使用 ...

  • 发布于 2021-03-16 10:37
  • 阅读 ( 276 )

9个最好的代码游戏,以建立你的编程技能

...你的工作是编写驱动你的机器人走向成功的人工智能——使用Java、Scala、C#等真正的语言。要开始学习,请查看Robocode基础知识和教程。 ...

  • 发布于 2021-03-17 21:19
  • 阅读 ( 440 )

minecraft一小时的代码教孩子们编程的基础知识

...前为止,有四种Minecraft小时代码工具可供未来的编码人员使用: ...

  • 发布于 2021-03-20 09:22
  • 阅读 ( 334 )

适合初学者的最佳unity 3d教程

...您可以从Unity网站下载2D游戏工具包,该网站提供了一个使用指南。 ...

  • 发布于 2021-03-21 15:28
  • 阅读 ( 331 )

7统一游戏开发语言学习:哪种最好?

...ity对小型开发人员是免费的,并且有大量关于如何最好地使用编辑器来创建您的想法原型的教程。 ...

  • 发布于 2021-03-21 18:18
  • 阅读 ( 253 )

学习c#编程的7个实际原因

...了巨资进行开发。在C语言和C++语言之上,但设计更易于使用,它有大量的库来执行不同的任务。 ...

  • 发布于 2021-03-21 18:41
  • 阅读 ( 376 )

为什么python不是适合您的编程语言

...读性使它成为初学者的完美编码语言。考虑到Python的广泛使用,认为学习Python是必要的是可以原谅的。 ...

  • 发布于 2021-03-23 11:47
  • 阅读 ( 351 )

c级#(c#)和JAVA(java)的区别

...持面向对象编程,这有助于轻松地对真实场景建模。通过使用C#和Java,程序员可以实现多线程来提高应用程序的性能。它们还具有自动垃圾收集器以实现高效的内存管理。而且,这两种语言都是基于C语言的。请进一步阅读本文...

  • 发布于 2021-07-01 21:30
  • 阅读 ( 246 )
王123wx
王123wx

0 篇文章

相关推荐