爪哇Contotal框似乎变得越来越大

问题描述:

我正在写一个弹跳球类(我刚刚开始使用Java),它的工作原理,但它看起来像每当球碰到一个边缘的包含框变得更大爪哇Contotal框似乎变得越来越大

代码反弹触发

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

对不起,我无法对你的帖子做任何事情......只要你不说明你的代码片段与你的感知问题有什么关系,那么你的代码片段就毫无用处。哪些变量是你的边界框?你如何看待它变大?什么是j,k,x,y? –

+0

对不起,'thisEye'是弹跳盒,'x'和'y'是弹跳盒'j'的X,Y,'k'只是'0'或'1',这是'而'循环。 – webLacky3rdClass

+0

万一它很重要我使用那里进口,导入java.awt.Color; //添加要使用的颜色。 import acm.graphics。*; import acm.program。*; – webLacky3rdClass

问题可能是(尽管不太可能)与您的theEye.getX()和Eye.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; 
} 

改变你的边界条件检查,

if(x > 400){ 
    j = 1; 
} 
if(x < 0) { 
    j = 0; 
} 
if(y > 200){ 
    k = 1; 
} 
if(y < 0) { 
    k = 0; 
} 

否则,请发表完整的源代码,所以我们可以看到其他人可能这个问题会。