gpt4 book ai didi

java - 这条线是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:58 24 4
gpt4 key购买 nike

我正在查看示例游戏项目。你能解释一下这些行吗:

public static final int GAMEPAD_UP = 0x0040;

0x0040;有什么用?

完整代码:

package com.androidemu;

public class Emulator {
public static final int VIDEO_W = 240;
public static final int VIDEO_H = 160;

public static final int GAMEPAD_UP = 0x0040;
public static final int GAMEPAD_DOWN = 0x0080;
public static final int GAMEPAD_LEFT = 0x0020;
public static final int GAMEPAD_RIGHT = 0x0010;
public static final int GAMEPAD_A = 0x0001;
public static final int GAMEPAD_B = 0x0002;
public static final int GAMEPAD_SELECT = 0x0004;
public static final int GAMEPAD_START = 0x0008;
public static final int GAMEPAD_TL = 0x0200;
public static final int GAMEPAD_TR = 0x0100;

public static final int GAMEPAD_A_TURBO = (GAMEPAD_A << 16);
public static final int GAMEPAD_B_TURBO = (GAMEPAD_B << 16);

public static final int GAMEPAD_UP_LEFT = (GAMEPAD_UP | GAMEPAD_LEFT);
public static final int GAMEPAD_UP_RIGHT = (GAMEPAD_UP | GAMEPAD_RIGHT);
public static final int GAMEPAD_DOWN_LEFT = (GAMEPAD_DOWN | GAMEPAD_LEFT);
public static final int GAMEPAD_DOWN_RIGHT = (GAMEPAD_DOWN | GAMEPAD_RIGHT);

public native void setRenderSurface(EmulatorView surface,
int width, int height);
public native void setKeyStates(int states);
public native void setOption(String name, String value);

public native boolean initialize(String libdir, String datadir);
public native void cleanUp();
public native void reset();
public native void power();
public native boolean loadBIOS(String file);
public native boolean loadROM(String file);
public native void unloadROM();
public native void pause();
public native void resume();
public native void run();
public native boolean saveState(String file);
public native boolean loadState(String file);

public void setOption(String name, boolean value) {
setOption(name, value ? "true" : "false");
}

static {
System.loadLibrary("gba");
}
}

这些值的用途是什么?

最佳答案

这是一个只有一位设置的值:

00000000000000000000000001000000

所以你也可以有,比方说,GAMEPAD_RIGHT=0x0010,你可以通过 AND'ing 对它们中的任何一个分别进行 OR 值和测试。它在游戏中很常见,尤其是在移动设备上。

这样编码的目的是为了优化空间,并且能够在一行中测试各种情况。

例如,通过对每个可能的游戏 handle 键使用一位,您可以在一个 int 上表示(即使在旧的 8 位控制台时代,控制台只有很少的键,也可以在一个字节上表示)每个键的状态(它是“开”或“关”)。

UP + RIGHT,同时按下两个键,给出:

00000000000000000000000001000000

OR

00000000000000000000000000010000

=

00000000000000000000000001010000

关于java - 这条线是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5152372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com