java疑惑

Android- 2011-11-08 08:07:12
我写的一个小代码想实现小球沿着frame的对角线来回碰撞,可运行情况并非如此,求解。。
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;

public class Ex4_2_1 extends Frame
implements Runnable
{

int x=0,y=0,dx=5,dy=5;

public static void main(String args[])
{
new Ex4_2_1();

}

public Ex4_2_1()
{

setSize(640,640);
setVisible(true);
new Thread(this).start();

}

public void run()
{
while(true){

x=x+dx;
y=y+dy;
repaint();
if(x<=0)
dx=5;
else if((x+80)>=getWidth()) dx=-5;

if(y<=50)
dy=5;
else if ((y+80)>=getHeight()) dy=-5;
try{Thread.sleep(250);}
catch(InterruptedException e)
{
;
}
}
}

public void paint(Graphics g)
{
g.setColor(Color.red);
g.fillOval(x,y,80,80);

}
}


...全文
137 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Android- 2011-11-09
  • 打赏
  • 举报
回复
谢谢,问题解决啦。
风尘中国 2011-11-08
  • 打赏
  • 举报
回复
你改一下程序当中具体的参数,就是因为这个参数导致的无法来会碰撞

还有需要隐藏标题栏,这样碰撞看的才完整,以下是我执行的代码


package csdn.p41;

import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;

public class Ex4_2_1 extends Frame
implements Runnable
{

int x=0,y=0,dx=5,dy=5;

public static void main(String args[])
{
new Ex4_2_1();

}
@Override
public Insets getInsets()
{
return new Insets(1, 1, 1, 1);
}

public Ex4_2_1()
{
this.setUndecorated(true); //去掉边框
setSize(640,640);
setVisible(true);
new Thread(this).start();
this.addWindowListener(new WindowAdapter(){

@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

}

public void run()
{
while(true){

x=x+dx;
y=y+dy;
System.out.println("x="+x+",y="+y);
repaint();
if(x<=5) //保证跟y的阈值一致
dx=5;
else if((x+80)>=getWidth()) dx=-5;

if(y<=5) //这里调整了一下参数,保证跟x的阈值一致
dy=5;
else if ((y+80)>=getHeight()) dy=-5;
try{
Thread.sleep(50);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
@Override
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.red);
g.fillOval(x,y,80,80);

}
}


51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧