我已经学习了2个月的Java,并且我正在尝试根据每3秒出现在屏幕中间的许多proyectiles的创建来编写游戏。 我想知道是否有人可以检查我的代码中发生了什么,因为我真的不知道该怎么做,而且我无法在其他类似的问题中找到解决问题的方法。
[编辑1]:我更新了循环的退出。
int num_proyect_act = 0;
float [] proyectil = new float [3];
float [] posX = new float [num_proyect_act];
float [] posY = new float [num_proyect_act];
float [] vX = new float [num_proyect_act];
float [] vY = new float [num_proyect_act];
int [] radix = new int [num_proyect_act];
int tiempo;
int intervalo = 3;
void setup () {
tiempo = millis()/1000;
}
void draw () {
if (((millis()-tiempo)/1000) > intervalo) {
posX[num_proyect_act] = width/2;
posY[num_proyect_act] = height/2;
vY[num_proyect_act] = mouseY-height/2;
vX[num_proyect_act] = mouseX-width/2;
radix[num_proyect_act] =int(random(10, 60));
num_proyect_act++;
}
println (millis()/1000);
//meter aqui el calculo del tipo de proyectil
for (int i= 0; i> num_proyect_act; i++) {
dibujar_proyectil(i);
comprovar_lim(i);
modificar_pos(i);
}
}
void dibujar_proyectil(int _i){
float r= random (10, 40);
ellipse(posX[_i], posY[_i], r, r);
}
答案 0 :(得分:0)
您可能正在创建长度为0的数组。
int num_proyect_act = 0;
int [] radix = new int [num_proyect_act];
这似乎也令人怀疑。
for (int i= 0; i> num_proyect_act; i++) {
你可能意味着:
for (int i= 0; i < num_proyect_act; i++) {
答案 1 :(得分:0)
此代码可能存在问题:
for (int i= 0; i> num_proyect_act; i++) {
dibujar_proyectil(i);
comprovar_lim(i);
modificar_pos(i);
}
除非num_proyect_act小于零,否则不会超出此范围。如果它确实执行它将永远运行或直到你退出它或抛出异常,因为如果我大于num_provect_act并且你每循环增加一个,它将始终大于num_provect_act(直到你至少溢出)
但你的阵列超出范围的例外可能来自这里:
posX[num_proyect_act] = width/2;
posY[num_proyect_act] = height/2;
vY[num_proyect_act] = mouseY-height/2;
vX[num_proyect_act] = mouseX-width/2;
radix[num_proyect_act] =int(random(10, 60));
您已将这些数组创建为size_proyect_act。 Java中的数组索引从0开始并转到size-1。所以这些都超出了数组的范围。
答案 2 :(得分:-1)
检查for循环的退出条件:
for (int i= 0; i> num_proyect_act; i++) {
// ...
}