- 方便记录 变量计分 第一次应用
- 方便调整 变量规定 步进 上线 血量等
- 方便控制 变量控制角色属性
- 方便逻辑 计数变量遍历列表
- 方便存储 存储数据信息
变量作为几乎所有编程语言的最基础概念,是我们进入程序世界的时候最先要了解的。一般我们把变量解释为一个写了变量名的盒子,盒子里面装的东西被称之为数据,数据是可以被替换的,但是盒子还是盒子,只能装一个东西。例如装一个数字,装一个单词(字符串)等等。 在真实的计算机世界中,变量(寄存器变量除外)其实对应了内存之中的一个地址。内存就好比一个巨大无比的仓库。我们一旦命名了一个叫做a的变量,计算机就依照某种规则给我们的a分配了一个格子,然后把地址和变量名挂钩对应起来。当然地址是一串数字,我们人类不会喜欢看也记不住,我们就只要记住a就行了。 当我们把a删除掉,计算机就把分配的格子和a的对应关系忘记掉,以便下次继续分配给别的变量使用。 变量究竟有哪些作用,为什么几乎所有的编程语言都会有这个东西呢?
1. 方便记录
最直观的感觉是变量可以帮我们记录事情,例如记录游戏的得分,记录玩家的血量,记录敌人的数目,记录各种事情。说白了就是让电脑这个好脑子帮我们记住事。
2. 方便调整
我们可以用很多变量来实现各种复杂的功能,例如加分减分,规定血量上限,规定速度上限等等。这些事情往往是几个变量相互作用,一些用来记录,另一些变量则负责做出规定。在一些计算机语言之中,负责做出规定的这些不变的值,也被称之为“常量”,也即是恒常的量。 这时候我们一定很疑惑,数学之中的方程式我们很熟悉,3x+5=y,x和y是变量,5是常数量,为什么计算机里面5这种常量还要放在变量里面呢? 这里要注意:计算机和数学的概念不同,计算机所有的量本质上讲都是变量,即使是5这样的常数,即使是1000这种血量上限,即使是50这种速度上限。我们难保不会下次心血来潮给他改一个数值。所以计算机索性把所有的量都弄成了变量。请大家不要和数学的说法混淆。
3. 方便控制
我们在所有的游戏之中都会对人物做出很多属性的设定,例如血量多少,跑多快,攻击力如何等等。这时候我们经常使用一组变量来实现对人物的控制。这样的规定还有一种类似模板的功效,我们再创建别的人物也可以用这一套变量来描述。这样在设计时候会清晰不少。 在文本语言之中,我们常常听到一个说法是面向对象。究竟什么是面向对象呢?其实和刚说到的模板很类似,例如我们要给游戏设计100个怪物,他们的血量速度和攻击力都不一样。但是他们都有一些共性,因为我们用了同一套变量同一个模板来描述他们。这套模板就被称之为类(class)而每一个怪物拥有独一无二的变量数值,他们就被称之为类的一个实例。这就是面向对象的基础解释。
4. 方便逻辑
在后面的控制流中,我们常常使用变量来控制循环的逻辑。具体用法很简单,就好比用一个变量来帮我们计数,每次循环结束它就被加了1,而它从0开始就恰好是循环的一个编号。这种用法可以方便我们把数组的每一个元素按顺序拿出来。我们称这种方法为“遍历”。 也许我们会觉得这种遍历不是理所应当的,为什么还要单独的说呢?那么我们可以试验几个好玩的事情,例如把列表的所有偶数项拿出来求和,把列表的素数项求和。这时候我们就发现,一个技术的变量是多么的方便。
5. 方便存储
在计算机科学之中,我们常常把数据是如何存储的称之为“数据结构”。变量就是最简单的一个数据结构,列表是更加方便的一个数据结构,他把变量编号放在了一起,我们可以更加方便有序的使用这些变量。当然还有更加高级的一些数据结构,他们都有特定的用途。这些将在后文有所涉及。