rd.rdlevel.cn/pages/variable.md
OLDREDSTONE 8faac81f8f 1026
2025-10-26 22:32:11 +08:00

78 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 变量
## 变量
变量顾名思义可以简单理解为可变的量类似于数学中的用字母表示量可参加一定的运算。如果你学过Python、C++等高级语言,那么恭喜你,节奏医生中变量的表达与之接近;如果没有学过也无需顾虑,本节向大家介绍变量的使用。
变量分为两种,只读变量和可写变量。
### 只读变量
只读变量多表示游戏中的即时参数,提供有关游戏当前状态的信息。它们的值随游戏进行可以发生变化,但是不可人为修改。下面提供了只读变量的变量名及其有关定义:
| 变量名 | 定义 |
| :--- | :--- |
| bpm | 当前的bpm |
| barNumber | 当前所在的小节编号 |
| numEarlyHits | 目前过早按拍的次数 |
| numLateHits | 目前过晚按拍的次数 |
| numPerfectHits | 目前完美按拍的次数 |
| numMisses | 目前错过拍子的次数(不考虑错误权重) |
| numMistakes | 目前错过拍子的次数(考虑错误权重) |
| XPress | 当X被按下的瞬间值为true其余时刻为false |
| XRelease | 当X被松开的瞬间值为true其余时刻为false |
| XIsPressed | 当X被按下时值为true否则为false |
特别地上表中后三行变量名中的X特指按键名使用时将X替换为对应的按键名分别为p1玩家1、p2玩家2、anyPlayer任意玩家、up、down、left、right
### 可写变量
可写变量与只读变量类似,其参数可以随游戏进程变化,与只读变量不同的是,可写变量的值可人为更改。可写变量大致可分为三类:
- **整型**int整型变量可以存储整数变量名写作i0、i1、...、i9。
- **浮点型**float浮点型变量可以存储浮点数也就是小数。特别地形如1.0的值为浮点数变量名写作f0、f1、...、f9。
- **布尔型**boolean/bool布尔型变量可以存储布尔值。布尔值包含且仅包含True和False。布尔型变量名写作b0、b1、...、b9。
需要注意的是上述三类变量每类有且仅有所列举的10个且无法修改变量名。一般地整形变量的值属于区间[-2147483648, 2147483647],而浮点型变量取值范围相对广泛。
特别地存在一额外的整型变量写作buttonPressCount用法与一般整型变量相同区别在于该变量的值在玩家按键时自动+1。
## 变量的运算、比较与使用
变量的运算需要使用运算符,运算符可分为三类,分别为赋值运算符、算术运算符、比较运算符。语法如下表:
| 表达式 | 含义 |
| :--- | :--- |
| ++ | 值+1 |
| \-\- | 值-1 |
| = | 赋值为 |
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 模 |
| == | 相等 |
| != | 不等 |
| < | 小于 |
| > | 大于 |
> 为了保留更高的兼容性,参与计算的数据都会转换为浮点数,也就意味着:
> - int 和 bool 实际上都会转换为 float
> - 转换为 int 的操作是四舍五入,并且偏好于最临近的偶数,例如:
> - `i0 = 2.75` => i0: 3
> - `i0 = 2.5` => i0: 2
> - `i0 = 3.5` => i0: 4
> - 转换为 bool 的操作是非 0 即为 True例如
> - `b0 = -3` => b0: True
> - `b0 = -0.0` => b0: False
变量可以在调用自定义方法;浮动文字、显示对话、显示状态牌;条件中使用。
- **调用自定义方法**
可以在调用自定义方法的表达式框里对变量进行读写、赋值,可使用赋值运算符。
例如i1++使i1的值+1i4=4将i4的值赋为4
- **浮动文字、显示对话、显示状态牌**
变量可以嵌入到这些事件的显示内容中,使用时将表达式用大括号包裹起来,可使用算数运算符连接。
例如:“武士有{i0}个朋友,洛根比武士多{i1}个朋友,所以洛根有{i0+i1}个朋友。”这句话在i0==4且i1==6时输出为“武士有4个朋友洛根比武士多6个朋友所以洛根有10个朋友。”
- **条件**
变量可用于自定义类型条件的表达式框中。通常与比较运算符结合使用。
例如i0==10i0等于10、i5\<i0i5小于i0