Java小球移动,下落碰到边缘向上返回。

importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassQiuextendsJFra... import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Qiu extends JFrame{
Xiao mb=null;
public static void main(String[] args){
Qiu lx=new Qiu();
}
public Qiu(){
mb=new Xiao();
this.add(mb);
this.addKeyListener(mb);
this.setSize(500,500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
class Xiao extends JPanel implements KeyListener{
int x=250, y=250;
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.RED);
g.fillOval(x,y,20,20);
}
public void keyTyped(KeyEvent e){//当键盘按下的时候 会调用

}
public void keyPressed(KeyEvent e) {
else if(e.getKeyCode()==KeyEvent.VK_SPACE){

Thread t = new Thread() {
public void run() {
while (true) {
repaint();
try {
Thread.sleep(100);
y+=10;
} catch (Exception e) {
e.printStackTrace();
}
}
}
};

t.start();

}
this.repaint();
}
public void keyReleased(KeyEvent e){ //按键抬起
}
}
现在是按下空格自动下落。
要把它变成按下空格下落,碰到壁时 向上走。返回。
求改下!
展开
 我来答
hitzsf
2014-09-03 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1169万
展开全部
try {
Thread.sleep(50);
if (y + 20 >= getHeight() || y <= 0) 
moveY = -moveY;
y += moveY;

} catch (Exception e) {
e.printStackTrace();
}
更多追问追答
追问
具体点。解释下。
追答
在定义一个变量 moveY = 10就行了
判断到达边界是,y移动的方向就相反,同理还可以设置一个moveX,
arrow7880
2014-09-03 · TA获得超过100个赞
知道答主
回答量:140
采纳率:100%
帮助的人:117万
展开全部
给个思路吧,先判断是否碰壁,或者说专门设一个方法使其在没碰壁的情况下一直走,碰壁了就对相应的速度乘以-1,还用原来的方法,貌似叫递归吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式