我正在用libgdx(java)制作游戏,正方形追逐主要玩家.我无法弄清楚如何使方块以恒定速度直线移动到玩家.这意味着我希望广场每秒都行进相同的距离.我创建一个变量并将其设置为等于chasePattern1.saidvariable[0]被添加到敌人的x值,并被saidvariable[1]添加到敌人的y值.
private float[] chasePattern1(float enemy_x,float enemy_y,float speed){
float[] returnvalue={0,0};
if(enemy_x>mainsquare.getX()){
returnvalue[0]=-1*speed;
}
if(enemy_x<mainsquare.getX()){
returnvalue[0]=speed;///does float work?no
}
if(enemy_y>mousey){
returnvalue[1]=-1*speed;
}
if(enemy_y<mousey){
returnvalue[1]=speed;
}
return returnvalue;
}
Run Code Online (Sandbox Code Playgroud) 当我说0b11111111是java中的一个字节时,它说"无法将int转换为byte",这是因为据我所知,11111111 = 256,java中的字节是有符号的,从-128到127.但是,如果一个字节只是8位数据,那么不是11111111 8位?我知道11111111可能是一个整数,但在我的情况下,它必须表示为一个字节,因为它必须以字节形式发送到一个文件.那么如何将一个带有位11111111的字节发送到一个文件(顺便说一句,这是我的问题)?当我尝试打印二进制值-1时,我得到11111111111111111111111111111111,为什么?我真的不明白签名字节是如何工作的.
我有一个jcharArray通过Java传递到C程序,我需要知道如何在C程序中使用该数组.如何将我的jcharArray位转换为可以使用的东西(char bits[])?
我尝试使用JNI编写此代码
JNIEXPORT jint JNICALL Java_ex_NistStatisticalTestSuite_frequency
(JNIEnv *env, jclass cls, jcharArray bits, jint jn)
{
printf("running frequency test");
int i;
double f, s_obs, p_value, sum, sqrt2 = 1.41421356237309504880;
int n=jn;
char deletethis=(char)bits[0];
sum = 0.0;
for ( i=0; i<n; i++ )
sum += 2*1-1;
s_obs = fabs(sum)/sqrt(n);
f = s_obs/sqrt2;
p_value = erfc(f);
return (jint)p_value;
}
Run Code Online (Sandbox Code Playgroud)
但它无法编译,说:
Run Code Online (Sandbox Code Playgroud)frequency.c:19:2: error: invalid use of undefined type ‘struct _jobject’ char deletethis=(char)bits[0]; ^~~~ frequency.c:19:28: error: dereferencing pointer …