科罗拉多大学 C#游戏编程课程总结

为期八周的游戏编程课程今天完成了所有8个编程作业,一个Project,以及期末考试。证书要过一段时间发下来。

教授这门课的是Dr.T ,他曾经从事游戏开发5年并执教多年。

为什么使用XNA开发?

XNA是微软的跨平台游戏开发平台,支持PC和XBOX的同时开发。

在Linux平台上有Monogame作为其开源实现。并且,MonoGame 支持 “iOS, Android, Windows (both OpenGL and DirectX), Mac OS X, Linux, Windows 8 Store, Windows Phone 8, PlayStation Mobile, and the OUYA console”多种平台

微软已经决定不再对XNA提供支持了,但这门课仍然选用了XNA。T认为所有游戏开发平台其基本的思路都是不变的。对于这一点,我十分赞成。在另一门课Interactive Python中,方法也是一样的。比如一样的update、draw方法,canvas概念等等。

C#

课程以游戏编程为主,选择C#据Dr.T说是因为其简单。由于之前对OOP已经很熟悉了,这门新的编程语言并没有带来多大困扰。

关于C#,唯一感到惊奇的是class里面除了field与method之外还有一种叫做property的用法:

class TimePeriod
{
    private double seconds;

    public double Hours
    {
        get { return seconds / 3600; }
        set { seconds = value * 3600; }
    }
}
Property使用set和get访问器实现的,这样更灵活,也更安全。

另外,C#和C++一样,类中都需要析构函数,但在课程中没有看到这一点。C#也有List等等模板。

说说XNA

XNA框架下需要一个继承Microsoft.Xna.Framework.Game的类,初始化后调用run方法即可。
在这个类中,首先定义全局变量,如Texture2D类型的图片、Soundtrack类型的声音,之后在构造方法中初始化GraphicsDeviceManager和窗口大小、鼠标是否可见等等。XACT作为跨平台音乐创作工具很方便。
之后,LoadContent方法内部要初始化这些音视频资源以及调用的类。
在Update方法中完成位置、速度等的更新,GameTime可以得到上一帧到这一帧的时间。Draw方法中要显示场景。python课程中是限定每秒60帧,但这个使用GameTime控制,更加灵活。

编程作业

作业相对来说还是比较简单的。前几次是基本的人机交互,最后两次有使用渲染的图片在素材图片中截取方框的移动实现了动画,这一点上来说和python课程的深度是一样的。
VS对于XNA游戏有很方便的打包发布功能,最后的大作业我打包成了一个ISO光盘镜像:GuessNumGame.iso。解压或者加载到虚拟光驱之后可以安装。
不过很奇怪VS没有实现相应的卸载功能,要到控制面板中才能卸载。
下载链接在 这里,可以稍微玩一玩。

你可能感兴趣的:(科罗拉多大学 C#游戏编程课程总结)