黑马程序员技术交流社区

标题: 一张贴搞懂 使用java让小球在画布上运动 还反弹!! [打印本页]

作者: justinwww    时间: 2016-1-20 22:29
标题: 一张贴搞懂 使用java让小球在画布上运动 还反弹!!
主要是在画布上 画一个小球,然后让他运动,判断是否撞墙,撞墙后反弹。
主要代码如下:
import java.awt.*;//引入awt  画布 画图
public class MyBall {//定义小球类
        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;//定义初始坐标xy
        int y = 30;
        int att = 0;// 0就是右下,1就是左下,2就是左上,3就是右上
        public void paint(Graphics g){
                g.fillOval(x, y, 20, 20) ; //画一个小球
        }
        public void run() {
                while(true){
                        // 定义飞行姿态
                        if (att == 0) {
                                x++;
                                y++;
                        }
                        if (att == 1) {
                                x--;
                                y++;
                        }
                        if (att == 2) {
                                x--;
                                y--;
                        }
                        if (att == 3) {
                                x++;
                                y--;
                        }       
                        // 改变飞行姿态
                        if (x > 263) {//判断x是否撞右边框
                                if (att == 0) {
                                        att = 1;
                                } else {
                                        att = 2;
                                }
                        }
                        if (y > 341) {//判断y坐标是否超过下边框
                                if (att == 1) {
                                        att = 2;
                                } else {
                                        att = 3;
                                }
                        }
                        if (x < 0) {//判断x坐标是否超过做边框
                                if (att == 2) {
                                        att = 3;
                                } else {
                                        att = 0;
                                }
                        }
                        if (y < 0) {//判断y坐标是否超过上边框
                                if (att == 3) {
                                        att = 0;
                                } else {
                                        att = 1;
                                }
                        }
                        try{
                                Thread.sleep(30) ; //线程休眠 让小球运动
                        }catch(Exception e){}
                        repaint() ;  //使用线程休眠 刷新画布 实现小球动起来
                }
        }
}


以上就是主要代码 :
主要思路就是: 定义画布  画一个小球 初始xy坐标  定义小球4中飞行状态 然后判断是否撞到4个边框,撞到后反弹即改变飞行状态,利用线程休眠 配合画布刷新实现小球的运动效果。  只是很简单的实现了小球的运动,希望共同学习 继续努力。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2