基本词汇和语法
变量:就是“小盒子”
你想计算机记住一个东西,比如玩家的名字、血量,就得找个“盒子”装起来。
比如:var 名字 = "小明" 或 var 血量 = 100var就是声明“我要用一个盒子了”,名字自己起,值(=后面的东西)随便放。
数据类型:盒子里能装啥?
比如玩家的名字、血量,我们知道,名字是一串文本,血量是一个数值,这里的文本和数值就是数据类型。
- 数字(Number):
var 攻击力 = 5 - 字符串“文字”(String):
var 名字 = "火焰剑"(文字得用引号"或'括起来) - 布尔值“是否”(Boolean):
var 是否发光 = true或var 是否损坏 = false(true是“是”,false是“否”) - 数组(Array):一串小盒子:
var 背包 = ["苹果", "木剑", "药水"]你可以通过背包[0]拿到第一个东西("苹果") - 对象(Object):一个大工具箱,里面分好多格子:这是最重要的!游戏里几乎所有东西都是“对象”。里面的格子里面放了盒子(变量)或按钮(函数)。
对象:大工具箱
假如有一个叫 玩家 的“对象”,里面有一个名为 血量 的盒子和一个名为 打招呼 的按钮,你可以用 玩家.血量 看血量,用 玩家.打招呼() 让他说话。
.:的
你可以用
玩家.血量看血量
玩家.血量 就是:“玩家这个大工具箱里,那个叫‘血量’的格子”
它的作用就是连接,告诉你:“嘿,别只看‘玩家’这个整体,我要找的是它‘里面’的那个具体东西。”
其他好记的叫法:
“取”:玩家.血量 = “取玩家的血量”。
“的”:玩家.背包.头盔 = “玩家的背包里面的头盔”。
():按一下或 “执行”
用
玩家.打招呼()让他说话
在“玩家”这个大工具箱上,除了小格子,还贴着几个按钮。打招呼 就是其中一个按钮的名字。玩家.打招呼() 就是:“找到‘玩家’工具箱,找到上面写着‘打招呼’的按钮,然后——用力按下去!”
你光看按钮(玩家.打招呼)是没用的,只有按了(加上 ()),它才会“叮咚!”一声响起来,执行打招呼的动作。
区别
非按钮:玩家.血量 后面不带 (),他不是一个按钮
按钮:玩家.打招呼() 后面带 (),他是按钮,打招呼 是按钮名字
其他好记的叫法:
“执行”:玩家.打招呼() = “执行打招呼这个动作”。
“跑起来”:玩家.打招呼() = “让打招呼这个程序跑起来”。
函数:就是“按钮”或“动作”
把一连串操作打包起来,起个名字,以后想用就喊一声。
function 给玩家加血(玩家对象, 加多少) {
玩家对象.血量 = 玩家对象.血量 + 加多少;
print(玩家对象.名字 + "回复了" + 加多少 + "点血!");
}
// 用的时候:
给玩家加血(玩家, 20); // 给“玩家”这个对象加20血function 就是说“我要自己动手做个新按钮了”
写一个函数
function 全服超级补给() {
所有玩家.设置血量(20);
所有玩家.发信息("补给已送达!");
// 用的时候:
全服超级补给();
}全服超级补给:是你给这个新做的按钮起的名字。():括号表示这个按钮不需要你额外提供信息就能按(就像电灯开关,按就亮)。{ ... }:这是代表按钮按下后计算机要执行的内容。你把想要执行的那一连串操作(设置血量, 发信息),像零件一样装进去,以后处理的时候直接用。
带参数的函数
function 超级补给(玩家) {
玩家.设置血量(20);
玩家.发信息("补给已送达!");
}
// 假设我们给玩家 小明 超级补给
var 小明 = ...; // 获取玩家 小明 省略
超级补给(小明);(玩家):这就是按钮的“投递口”(我们假装这个按钮是自动售货机或公共电话的按钮)。
它的意思是:“每次有人按这个按钮时,必须从这个口子里塞进来一个‘玩家对象’!”
带多个参数的函数
function 超级补给(玩家, 血量, 信息) {
玩家.设置血量(血量);
玩家.发信息(信息);
}
// 假设我们给玩家 小明 超级补给
var 小明 = ...; // 获取玩家 小明 省略
超级补给(小明, 20, "补给已送达!");(玩家, 血量, 信息):这就是按钮的“投递口”需要一次性“投递”三样东西。
条件判断:让游戏“做选择”
if 就是“如果...就...”。
var 玩家血量 = 15;
if (玩家血量 < 20) {
print("警告!血量过低,请注意!");
}if...else... 语句就是“如果...就...,否则就...”
var 玩家血量 = 5;
if (玩家血量 > 0) {
print("玩家还活着,可以继续战斗!");
} else {
print("玩家已阵亡,游戏结束!");
}var 玩家血量 = 20;
if (玩家血量 > 10) {
print("玩家状态良好!");
} else if (玩家血量 > 0) {
print("玩家还活着,可以继续战斗!");
} else {
print("玩家已阵亡,游戏结束!");
}循环:让游戏“重复做”
for 循环,比如给背包里每个物品都检查一遍:
for (var i = 0; i < 背包.length; i++) { // i 从 0 开始,一直到背包最后一个
print("背包里有:" + 背包[i]);
}返回:“吐出结果”
记得我们刚刚说的,假装按钮是自动售货机或公共电话的按钮吗?
想象一下:我们点击自动售货机的按钮时,自动售货机应该突出我们购买的物品。return 的作用就是:当自动贩卖机完成工作后,把最终的“货物”吐出来,交给你!
function 获得超级补给包(补给包id) {
var 超极补给包 = 游戏系统.获取一个超极补给包(补给包id);
return 超级补给包;
}return 超级补给包;:这句话的意思就是:“好了,购买完成了!现在把‘超极补给包’这个值,从这个自动贩卖机里拿出来,交给外面使用这个函数的人。”
怎么用这个“获得超级补给包”
var 超级补给包 = 获得超极补给包("HP补给包"); // 调用函数return 的核心作用:把函数内部计算出的值,“返回”给调用它的地方。
例子
// 判断玩家是否可以进入某个区域
function 可以进入城堡(玩家) {
if (玩家.等级 >= 10 && 玩家.持有钥匙) {
return true; // 可以进入!返回 true
} else {
return false; // 不可以进入!返回 false
}
}
// 使用
if (可以进入城堡(当前玩家)) { // 这里直接用函数的返回值做判断
当前玩家.传送(城堡坐标);
print("欢迎来到城堡!");
} else {
print("你的等级不够或没有钥匙,无法进入。");
}