我正在写一个弹跳球类(我刚刚开始使用Java)并且它有效但看起来每次球击中边缘时包含的盒子变大了
反弹触发器的代码
int i = 0;
int j = 0;
int k = 0;
double x = 3;
double y = 3;
while(i < 200){
if(j == 0){
x += 2;
} else {
x -= 2;
}
if(k == 0){
y += 4;
} else {
y -= 4;
}
if(thisEye.getX() > 400){
j = 1;
}
if(thisEye.getX() < 0) {
j = 0;
}
if(thisEye.getY() > 200){
k = 1;
}
if(thisEye.getY() < 0) {
k = 0;
}
Color someShade = rGen.nextColor(); // var for the color of the eyes
Color someOtherShade = rGen.nextColor();// var for the color of the pupules
moveThis(thisEye,x,y,someShade); // Go over all the shapes with the same X,Y offset - var x,y
moveThis(thisPupul,x,y,someOtherShade);
moveThis(thisEye2,x,y,someShade);
moveThis(thisPupul2,x,y,someOtherShade);
moveThis(face,x,y,rGen.nextColor());
moveThis(nose,x,y,rGen.nextColor());
pause(150.0); // wait for next cycle to slow down the images
//i++; this was to see if it just got farther off with each loop, it dose.
}
}
private void moveThis(GOval subject, double x, double y, Color newShade){
subject.setFillColor(newShade);
subject.move(x, y);
}
'面部'会从正确的位置弹回一次然后每次弹跳它越走越远离屏幕告诉到目前为止它只是在屏幕上短时间然后离开另一边告诉它来回到屏幕上一点。
我把它标记为家庭作业,但我当天是html / php编码器,我只是在晚上使用iTunesU Stanford视频。 但我正在努力学习,所以指针会很棒。
答案 0 :(得分:0)
问题可能是(虽然非常不可能)使用theEye.getX()和theEye.getY()方法。如果您从
更改边界条件检查怎么办?if(thisEye.getX() > 400){
j = 1;
}
if(thisEye.getX() < 0) {
j = 0;
}
if(thisEye.getY() > 200){
k = 1;
}
if(thisEye.getY() < 0) {
k = 0;
}
TO
if(x > 400){
j = 1;
}
if(x < 0) {
j = 0;
}
if(y > 200){
k = 1;
}
if(y < 0) {
k = 0;
}
否则,请发布完整的源代码,以便我们可以看到问题所在。