2点需要注意的:
1,PUTI里的BASIC是大小写敏感的,默认状态下你敲进去的全部是大写字母,若非你确定明白你在做什么,请尽量不要大小写字母混用。
2,PUTI里的BASIC虽然不区分不同的数值类型变量,但是会区分数值和字符串变量。数值变量(即内容为一个数值)可以直接命名;字符串变量(比如S$="THIS IS A STRING"里的S$)名字必须以$符号结尾。
1,判断语句:所谓的判断语句,就是当你需要电脑根据不同情况做不同处理的时候所要用的命令。比如这个例子:
“ 如果 你今天买来的那个游戏超好玩 那么 赶紧上网发推荐帖去 否则 发帖大骂坑爹 顺便问候制作人全家”
这就是一个很典型的判断。“你今天买来的那个游戏超好玩”是一个假设条件,“赶紧上网发推荐帖去”是当前面的假设成立时需要执行的命令,“发帖大骂坑爹 顺便问候制作人全家”是当前面的假设不成立时要执行的命令。
在PUTI的BASIC中写出一个判断语句“IF U=250 THEN PAY=0 ELSE PAY=1000:BEEP”
值得一提的是在PUTI的BASIC中IF语句必须单行写完!绝对不支持分行写。所以看到上面的例子中我在ELSE后面执行的2条语句中间用一个:隔开,这个冒号是BASIC里用于分隔2条语句用的符号,像这种必须将几行语句写在同一行的时候就需要用冒号隔开。
2,循环语句:当你需要电脑重复做某一件事情的时候,就可以用到循环语句了。关于循环语句,有很多小细节可以讲,这里我只讲个最基本的例子:
FOR I = 1 TO 3
PRINT I, "TIMES"
NEXT I
注意到这是一个多行的例子了。FOR...NEXT...是在PUTI的BASIC中唯一能分行使用的一组语句。这里具体的意思是“对于变量I,第一次执行到FOR语句的时候让I的值等于1,之后每次执行到FOR语句的时候判断I的值是否比3大,如果没有,则继续执行下一行,如果比3大(即最小是4),则执行NEXT I之后的下一行;每次执行到NEXT I这行语句的时候都将他自己加1,并回到FOR语句。”
这里的执行结果就是打出以下3行字
1 TIMES
2 TIMES
3 TIMES
对于FOR语句的具体细节没啥必要深究,就记得从1开始TO的那个数字就是次数其实就可以了。
另外NEXT后面是可以省略变量I的。
而这部分只有在IDLE时才执行的代码按照前面的理论,作用就是根据玩家的输入,改变对象的状态。
注意到连着几行都是以“BTN AND XXX”为判断条件的。这里有一点要相当注意:在BASIC里“AND” “OR” “NOT” “XOR”这几个命令都是按位逻辑操作,并非真假逻辑操作,而这个BASIC里并没有真假逻辑操作符。举个例子,假设用“TAND”代表真假与运算,那么“16 TAND 3”的结果就是“1”,也就是真,因为16非0为真,3也非0为真。而“16 AND 3”的结果就是“0”了,因为16和3的按位与正好将全部1都错位开,结果就成了“0”。也就是说当你使用“A AND B”来作为判断条件的时候代表的意思绝对不是“A非0,并且B非0”,而是“用B作为掩码,判断A相应位置是否被置位”。不过如果用“==” "<"等关系判断符的话,由于其结果只有0和1,因此此时这几个位操作符也能作为真伪逻辑判断来使用,比如“A==0 AND B>3”的意思就是“A等于0,并且B大于3”
因此这里的每一行判断,都是在判断之前读到的按键为什么。如果你问为什么不把条件写作“BTN == 16”而要写作“BTN AND 16”,那就说明你已经入门了。因为BUTTON()返回的值可能并不是一个单键值,如果这时候玩家同时按了A键和B键位,那么返回值就是“16 OR 32”也就是48了。这时候如果你用“BTN==16”作为判断条件,那么系统会认为A键并没有被玩家按下,而你用“BTN AND 16”来判断,则可以很顺利的由48 AND 16 = 16,非0,来判断出A键被按了,而且还能通过“BTN AND 32”来判断出B键同时也被按下去了。这对于允许多键同时按下的游戏非常重要。
因此这4行代码分别代表着如果X,A,B,Y这4个键分别被按下的情况。当A,B,Y被按下的时候,我分别将玩家对象的当前状态值改变为1,2,3,这代表着玩家状态此时已经因为玩家的输入发生了变化。