我正试图在(beta)Trackmania 2游戏中制作一个剧本.(这是JavaScript,HTML,C和......在我最糟糕的噩梦中无法想象的其他东西之间的丑陋混合).
脚本引擎似乎不知道"和"或"&&"(如果我尝试myVar && 16提出了很好的错误是"布尔操作等待一个布尔")
我想做点什么:
if (Var && 1) {
// Bit North => trace north
}
if (Var && 2) {
// Bit East => trace east
}
if (Var && 4) {
// Bit South => trace south
}
if (Var && 8) {
// Bit West => trace West
}
Run Code Online (Sandbox Code Playgroud)
如果编译器不知道位域操作,我知道如何才能做到这一点?
"按位和"通常是&,而不是&&.(&&通常是"逻辑和".)"Bitwise和"是&C和JavaScript,你提到的两种语言.实际上,&&对于您收到的错误消息,似乎是"逻辑"和"低音".解决方案可能只是使用
if (Var & 1)
Run Code Online (Sandbox Code Playgroud)
如果你真的没有按位操作,它仍然可以完成.请记住,4位数字可表示为:
b3 * 2**3 + b2 * 2**2 + b1 * 2**1 + b0 * 2**0
Run Code Online (Sandbox Code Playgroud)
如果你有取幂,除法,整数截断和模数,你可以使用以下内容来查看是否找出是否x设置了位:
int( i / (2**x) ) % 2
Run Code Online (Sandbox Code Playgroud)
如果没有取幂,可以用查找表替换它.
如果没有模数,i % 2可以换成( (i/2) - int(i/2) )*2
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |