什么是编程

前一节中,我们概述了如何使用 GameMaker 来创建您的游戏,但无论您添加了什么精灵、物体或房间,除非您已将其设置为程序,否则什么都不会发生。但是,什么是程序呢?

在一般意义上,程序只是一组指令(或语句),您向计算机发出指令,告诉它执行某些任务。这些任务可能有很大的不同,从简单地告诉计算机在屏幕上画一些东西,到根据一些用户输入计算一个值,然后对它做出反应,但在所有情况下,它都是一个逻辑结构,会给出一些结果。在上一页中,我们讨论了将对象的实例向右移动2个像素,因此让我们来看看实现这一点的实际程序:

GML 可视化中,它将如下所示:

GML VisualExample

使用 GML 代码,它将如下所示:

x = x + 2;

为了理解上面所发生的事情,我们必须首先讨论变量,然后我们将继续讨论函数,最后是条件,因为这三件事通常构成任何程序的主体。

 

变量变量

变量是编程的基石,还有函数(我们稍后将简要介绍)。变量只是一个名为 Value 的值,在上面的例子中,变量称为 "x"。现在,"x" 可以是任何值,如 -126、583、甚至 1.56378,但 "x" 的实际值是不相关的,因为它可以变化 (因此称为 " 变量 ")。重要的是,我们取 "x" 并将其加 2。值得注意的是,在本例中 "x" 是一个 内置变量 ,这意味着它是由 GameMaker 为所有对象创建的变量,但您也可以创建自己的变量。

要创建变量,必须先将其声明,然后才能使用。声明一个变量就是告诉 GameMaker 这个新变量存在,并且它有一个初始值。要取消变量的取值,只需执行如下操作:

Declare GML VisualVariables

或:

points = 0;

一旦声明了变量,就可以在进一步的编程代码或操作中使用它。变量的伟大之处在于,它允许您在多个位置 " 重用 " 一个值,而不必真正担心值是什么。例如,假设你有一个 "damage" 变量,你在不同的地方使用它来告诉 GameMaker 对游戏中的其他物体造成一定数量的伤害。我们可能会将 "damage" 声明为 20,但稍后会认为这个值太大,并希望将其更改为 10。如果我们使用值 20 而不是变量,则需要遍历所有代码或操作并将 20 更改为 10,这既耗时又容易出错。然而,使用变量意味着我们只需在声明它时将更改为 10,并且其余的代码或操作将使用这个新值。

值得注意的是,有许多不同类型的变量,每一种变量的使用方法都略有不同。我们不会在这里讨论这一点,但你可以在手册的 GameMaker 语言概述 部分找到更多信息。

然而,变量只是故事的第一部分。下一部分是函数的使用。

 

函数函数

编程的下一个主要重要部分是使用函数和变量。函数只是一条指令,让计算机做一些事情,它既可以有输入值,也可以有输出值(即:你可以给它一个值,它会进行一些操作,然后返回一个不同的值),尽管并不是所有的函数都需要输入,也不是所有的函数都有输出。为了更好地理解这一点,让我们来看看 GameMaker 中的一个内置函数。

我们将看到的函数是 instance_number(),它在 GML 可视化中是获取实例计数 操作。此函数/操作将检索游戏室中给定对象的实例数,您可以这样使用它:

Get Instance Count GML VisualAction

或:

number = instance_number(obj_Enemy);

在上述两个示例中,该函数将对象 ID 作为其输入值(参数范围),并将提供输出值(返回值),这是调用函数/操作时给定对象在房间中存在的实例数。请注意,我们使用一个变量来存储返回值,即变量 "number"。可以在运行此代码之前声明此变量,也可以将其视为在代码运行时声明的变量,并将函数/操作的返回值分配给它。

值得注意的是,您不仅可以使用内置的 GameMaker 语言或 GML 可视化操作,您还可以构造自己的函数来扩展编程时可能的功能 (您可以在这里可以找到更多关于 GML 的信息,这里可以找到 GML 可视化的更多信息)。

您可以使用函数和变量做很多事情,但是,如果没有编程故事的最后一个重要部分,条件,它们将几乎毫无用处。

 

条件条件

编程的很大一部分是由提问组成的。这些问题通常都很简单,可以计算为 true 或 false,它们被称为 条件 ( 而 truefalse 的值被称为 布尔 值)。最常见和使用最广泛的条件是问题“if”,它用于检查某事是 true 还是 false,然后采取相应的行动。一个简单的例子是,如果一个角色的健康低于零,就将其从游戏中移除,这在通俗的语言中表达为:

if the character variable "hp" is less than or equal to zero, then destroy it.

要将上述代码转换为代码,我们需要以下代码:

GML VisualConditional

或:

if (hp <= 0)
{

    instance_destroy();

}

因此,上面我们问了 " 如果 hp 变量小于或等于 0" 的问题,然后如果计算结果为真,我们调用函数 instance_destroy() 或操作 销毁对象实例 。注意," 然后 "( 如果有什么.。然后发生了一些事情 ...)。是 隐式的 ,您不需要添加它,还要注意,在 GML 代码中,当 "if" 的计算结果为 true 时,我们使用大括号 { } 来 " 阻止 " 我们想要执行的代码 (在 GML 可视化中,这是通过将操作放到 "if" 操作的 右侧 来表示的)。只有当 "if" 的计算结果为 true 时,大括号之间添加的任何内容才会运行,因此您可以在一个 " 块 " 中运行多条语句。

在使用 "if" 条件时需要注意的另一件事是,我们还可以向它添加 "else" 语句,这样条件就会变成 " 如果某件事的计算结果为 true 则做一些事情,else 做一些不同的事情"。通过这种方式可以处理返回 true false 的条件表达式。让我们也举一个例子:

GML VisualIf... Else.. Example

或:

if (countdown <= 0)
{

    instance_create_layer(x, y, "Instances", obj_Bullet);

    countdown = 30;

}
else
{

    countdown = countdown - 1;

}

上述代码转换为纯语言,如下所示:

if the countdown variable is less than or equal to zero then:

    create an instance of the object "obj_Bullet" at the current x/y position on the layer "instances",

    reset the countdown variable to 30.

else:

    subtract one from the countdown variable.

不要太担心上面代码的实际实例创建部分,因为我们将在下面的小节中更详细地讨论这一点。这里需要理解的重要一点是,您可以创建条件表达式来检查某件事是 true 还是 false,并让程序以不同的方式响应。这似乎是一件非常简单的事情,但它实际上是令人难以置信的强大,并将构成您在 GameMaker 编程时所做的几乎所有事情的基础。

 

因此,为了回答"什么是编程?"的问题,我们可以说,编程是使用语句的组合 - 可以使用变量 来形成表达式,使用函数来执行任务,使用条件来提出问题-然后同时运行这些语句来实现一个目标。下面您可以看到一个用 GML 可视化和 GML 编写的稍微复杂一点的程序。你能猜到它是做什么的吗?

GML VisualFinal Code Example

或:

if (mouse_check_button_pressed(mb_left) == true)
{

    x = mouse_x

    y = mouse_y

    image_blend = c_red;

}
else
{

    if (mouse_check_button_released(mb_left) == true)
    {

        image_blend = c_white;

    }

}

剧透剧透上述代码首先检查鼠标按键是否被按下(鼠标左键是使用常量"mb_left"定义的),如果按下了鼠标按键,则将运行代码的实例移动到当前鼠标位置(使用内置变量"mouse_x"和"mouse_y"定义),并将实例混合颜色设置为red。如果没有按下鼠标按键,则它会检查鼠标按键是否已被释放,如果松开了,它会将实例混合颜色重置为白色(请再次注意,我们使用一些内置的常量-"c_red"和"c_white"-来轻松定义颜色)。

 

希望您现在对编程有了更多的了解,所以让我们继续探索 GameMaker IDE,看看如何添加像精灵对象这样的资源,以及您的游戏将需要的其他重要资源。