Skip to main content

从第一篇开始,我们带领同学们从0开始,认识C++的基础语法《从0到第一个小游戏,C++ 游戏开发超详细指南

这一篇开始将使用项目模板。这个模板只是一个目录,其中包含你需要的所有文件,所有设置都已针对我们在本系列中要构建的程序类型进行了调整。该模板还包含一些大多数项目所需的代码,因此无需自行输入。

这些代码旨在为你省去平台相关的麻烦;例如,它会打开一个窗口,让你在其中绘图,并更新窗口。听起来简单,但实际上并非如此。Windows 操作系统可能难以妥善处理,而且由于这并非游戏开发的核心,我们认为最好一劳永逸地解决这个问题就是模版。文章评论“模板”,拿最新模板包吧!

👇️将软件包解压到(或在第一个教程C:\Projects\template中用于项目的任何文件夹)。然后,双击目录中的文件打开项目。 .sln

如果您看到下图所示的安全警告,只需单击“确定”按钮即可加载项目。 您收到此警告是因为 Visual Studio 之前从未见过此项目(它不是在您的计算机上创建的)。下次打开同一个解决方案文件时,您将不会再收到此警告。

你现在应该在解决方案资源管理器中看到该项目:

应该看到项目中的文件:game.hgame.cppsurface.h以及surface.cpp模板代码文件夹中的template.h和。template.cpp

点击“本地 Windows 调试器”按钮(F5),你将看到一个漂亮的窗口,左上角会显示“HELLO WORLD”字样。为了强调这一成就的伟大,屏幕上还绘制了一个旋转的炮塔。

“本地 Windows 调试器”按钮

你现在应该感兴趣的代码在game.cpp中。其内容如下:

记住这个代码,它将成为快速教程所有章节的起点。

基本要素

虽然这只是一个小程序,但有很多内容可以讲。本系列教程将讲解其中的大部分内容,现在,我们先来简单介绍一下:

  • #include程序开头的行基本上将另一个文件中的某些源代码粘贴到当前文件中。
  • 每当需要绘制某些内容时,都会以 开头一条线screen->。我们可以做的事情screen在 中指定surface.h,从第 37 行( )开始class Surface
  • 有些事情只会发生一次。我们在void Game::Init()函数中指定它们。
  • 这个特定的程序在功能上基本上不做任何事情Init
  • 每帧都会进行其他操作:这些都列在了 中void Game::Tick( float deltaTime )
  • 还有一个Shutdown函数只执行一次:当您终止程序时(例如按 ESC)。
  • 以 开头的行//仅仅是注释。即使删除或修改它们,程序仍然可以运行。

还有更多内容,当你探索其他源文件(例如)时,会发现更多template.cpp。请随意操作;如果您弄乱了任何东西,只需从本教程开始时下载的 zip 文件中提取模板即可。

实验

让我们用这个程序尝试一些随机的事情:

  1. 0第30行的数值改成其他数字。让它变成一个大数字。
  2. 0xffffff将第 32 行的改为0xff0000。然后,将其改为0x00ff00,最后改为0x0000ff。会发生什么?
  3. 2, 2将第 32 行的改为100, 20。现在将其改为640, 20。会发生什么?
  4. 在第30行改为(小写)。现在有问题吗Clearclear
  5. 将第 37 行附加到第 36 行的末尾(不要删除第 36 行末尾的分号)。第 36 行现在应如下所示:
  6. 将第 29-34 行从Tick函数移到Init函数(它们对每一帧都做同样的事情,对吧?)。这样做的结果是什么?

一个重要的概念是屏幕坐标系。屏幕上的每个像素都有一个位置:水平位置称为X,垂直位置称为Y。默认情况下,模板会打开一个像素800512窗口,因此如果你在绘制某些内容,它将X = 820;无法容纳,并会绕回到屏幕左侧(尽管会低一个像素!)。

最后,还有数字:(0xffffff 或大写:0xFFFFFF)也是一个数字。实际上,0x0000FF等于255。我们稍后会更详细地讨论这一点。

控制台窗口

你可能注意到了,仍然有一个控制台窗口。现在我们可以生成合适的图形了,这似乎没什么用,但以后可能会派上用场。我们将用它来打印一些不应该被最终用户看到的信息。这对于调试很有用。

任务

拿一张A4纸,在上面画一个8×8的网格。垂直线从上到下依次为:0、80、160、240、320、400、480、560、640。水平线从左到右依次为:0、60、120、180、240、300、360、420、480。现在,用穿过网格交叉点的直线在这张纸上画出单词“CODE”。尽量少用直线;因为你的每一行都会被转换成程序中的一行,所以不要给自己太大的难度。

然后,对于每条直线:

  1. 确定线的起点X和坐标( ,)。YX1Y1
  2. 确定线的终点的X和坐标( ,)。YX2Y2
  3. Tick使用该方法向函数添加一行screen->Line( X1, Y1, X2, Y2, 0xffffff );

加分项:将X&Y坐标存储在数组中,并循环遍历该数组来绘制线条。

最后:

  • 使C变为红色;
  • 使O变为绿色;
  • D设为蓝色,然后
  • 使E变为黄色。

文章评论“模板”,拿最新模板包吧!文章图片来源于:https://www.3dgep.com/cpp-fast-track-2-template/

翻译:马克笔设计留学

0 0 vote
Article Rating
订阅
提醒
guest
0 评论
Inline Feedbacks
View all comments