小球怎么一直循环啊!

zhoujg77 2014-06-26 12:37:35
import java.awt.*;
import java.lang.Thread;

public class Test2 {

public static void main(String[] args) {
Frame w = new Frame();
w.setSize(300, 400);
MyPanel mp = new MyPanel();
w.add(mp);

Thread t = new Thread(mp);
t.start();

w.show();

}

}

class MyPanel extends Panel implements Runnable {
int x = 30;
int y = 30;
int att=0;
public void paint(Graphics g) {

g.fillOval(x, y, 20, 20);

}

public void run() {

while (true) {


x++;y++;




try {
Thread.sleep(30);
} catch (Exception e) {
}
repaint();

}

}

}
怎么能让求一直循环撞墙啊!
...全文
180 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujg77 2014-06-26
  • 打赏
  • 举报
回复
自己顶一下!书上用4种状态表示球的路线(右下,左下,左上,右上)完全看不懂啊!
lliiqiang 2014-06-26
  • 打赏
  • 举报
回复
撞到墙就往回返到原点再撞墙.
jiabiaoli 2014-06-26
  • 打赏
  • 举报
回复
小球每移动一次 都要判断一次 x,y 点 是否在 窗口内部, 首先定义两个变量,初始值xpath=1;yPath=1; x的下一个点的位置在x+=xPath; 若x的值超过窗口右侧,则xPath=-1; x+=xPath; 同理 y+=yPath;
private int xPath=1;
    private int yPath=1;
    public void run() {
 
        while (true) {
        	if(x<0){
        		xPath=1;
        	}
        	if(x>265){
        		xPath=-1;
        	}
        	x+=xPath;
        	if(y<0){
        		yPath=1;
        	}
        	if(y>350){
        		yPath=-1;
        	}
        	y+=yPath;
            try {
                Thread.sleep(10);
            } catch (Exception e) {
            }
            repaint();
 
        }
 
    }

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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