跳转到内容

维基少年:数学能做什么?/电子游戏

来自维基教科书,开放世界的开放书籍
两个女孩在街机玩电子游戏。

当人们玩电子游戏时,他们通常不会想到数字。无论游戏是什么,他们的大部分思考都是逻辑,或者试图决定最好的选择。玩游戏并不一定需要如此随意。对于每个游戏,都有人对最佳的玩游戏方式感兴趣;这可以通过使用数学来找到。更重要的是,无论何时一个人在电子游戏中对抗或与“电脑”合作,电脑都必须了解游戏的规则以及如何获胜(以及如何为不同的玩家调整难度)。但电脑无法在没有人类教导的情况下做任何事情。这就是数学发挥作用的地方;数学是计算机的语言,它是告诉它们如何玩游戏的唯一方法。

就像科幻小说中的机器人一样,计算机只能按照它们的指令进行操作。这可能会让人认为,我们最好自己做他们的工作,但计算机可以比任何人类都快地执行它们的指令。它们也不局限于简单的任务;如果一个人能告诉计算机如何思考(这不是一件容易的事,但正在开发中),计算机将能够思考。为计算机编写指令的过程称为编程,这是当今一个非常庞大且流行的职业。

每个电子游戏都必须进行编程,但如今它们编写的并非都是数字。有些是人类语言、逻辑和数学混合在一起的东西,被称为代码,但数学仍然是这个过程必不可少的。电子游戏开发者必须为游戏制作音乐和图形,但他们还必须告诉游戏如何运作。例如,在 3D 游戏中,开发者必须告诉计算机如何从不同的角度显示事物,以及如何使物体不会相互穿透。所有这些都是巨大的挑战,但可能最大的挑战是制造人工智能,也称为 AI。虽然电子游戏中的 AI 并非像人类那样拥有真正的智能,但它在玩游戏时仍然可能看起来像是人类。

每个游戏都可以用数学分解,并以某种方式用数字表达。为了说明这一点,我们可以从一个简单的游戏开始,比如跳棋。棋盘有 8 行 8 列,总共 64 个方格。每个方格可以是 0 个棋子,也可以是 1 个棋子,而这个棋子可以是红色或黑色。因此,我们可以将任何时刻的棋盘描述为 64 个不同的数字,排列成一个正方形(称为矩阵)。对于每个数字,我们可以说 0 表示没有棋子,1 表示红色棋子,2 表示黑色棋子。我们也可以通过为每个棋子分配一个数字来做到这一点:它在棋盘上的位置。对于跳棋来说,这非常简单,但并不总是如此。如果我们要用数字定义一个 2D 区域,我们将不得不使用许多非常小的正方形,并使一些东西能够同时出现在多个正方形中。这样一来,玩家就可以一点点地移动,而不是大跳跃。如果世界是 3D 的,则需要更多关于事物位置的信息。

回到跳棋,定义游戏的最佳方法是给每个棋子两个数字:它的行和它的列。为了开始定义移动,我们可以说棋子只能斜着移动,也就是说它必须同时改变行和列,并且它每次只能移动一格。用数学来表达,如果你给行加 1 或减 1,你必须给列加 1 或减 1。为了防止玩家走出棋盘,重要的是要说棋子永远不能移动到第 8 行或第 8 列以上,也不能移动到第 1 行或第 1 列以下。

华夏公益教科书