第三周学习总结

package org.day1214.superman;
public class Test {
public static void main(String[] args) {
Fly [] a = {new SuperMan(),
new Bird("Adsf"),
new Plan()};
for (Fly array : a) {
array.fly();
}}}
一、在对数组类型使用时两点自己容易遗忘
Fly [] array={ ....,....,...};

  1. 数组 同样需要标识符 array
    2.在{};外需要加;
    3.array.fly();使用fly方法

二、瓜货,为你的智商做鸡,运行程序包含一个main方法!!!!!!!!!!!!!!

三,小球对象

package org.day1214.ball;
import java.awt.Color;
import java.awt.Graphics;
  /**
 * 小球
 * @author 吹雪雨落
 *
 */
public class Ball {
private int r;
private int x;
private int y;
private int sx;
private int sy;
private Color color;
/**
 * 
 * @param r 小球半径
 * @param color 小球颜色
 * @param x 小球中心点横坐标
 * @param y 小球中心点纵坐标
 * @param sx 小球移动横坐标增量
 * @param sy 小球移动纵坐标增量
 */
public Ball(int r,Color color, int x, int y, int sx, int sy) {
    super();
    this.r = r;
    this.color=color;
    this.x = x;
    this.y = y;
    this.sx = sx;
    this.sy = sy;
}
/**
 * 移动小球
 */
public void move(){
    x+=sx;
    y+=sy;
    if (x<0||x>=650-r){
        sx=-sx;
    }
    if (y<0||y>=650-r){
        sy=-sy;
    }
}
/**
 * 画出小球
 * @param g 画笔
 */
public void draw(Graphics g){
    g.setColor(color);
    g.fillOval(x-r, y-r, 2*r, 2*r);
}}

四、在窗口上形成动画

package org.day1214.ball;

  import java.awt.Color;
  import java.awt.Graphics;
  import java.awt.event.MouseAdapter;
  import java.awt.event.MouseEvent;
  import java.awt.image.BufferedImage;

  import javax.swing.JFrame;
  import javax.swing.Timer;

  import org.day1214.CommonUtil;
  /**
 * 在窗口中形成小球动画
 * @author 吹雪雨落
 *
 */
@SuppressWarnings("serial")
public class BallFrame extends JFrame {
//画一张与窗口同样大小的背景
public BufferedImage image = new BufferedImage(650, 650, 1);
private Ball[] ballsArray = new Ball[100];
private int total = 0;
/**
 * 生成窗口,设置窗口
 */
public BallFrame() {
    //设置窗口标题
    this.setTitle("滚动的小球");
    //设置窗口大小
    this.setSize(650, 650);
    //窗口是否可改变大小
    this.setResizable(false);
    //窗口位置
    this.setLocationRelativeTo(null);
    //关闭窗口,关闭程序
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    //鼠标点击事件
    this.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {

            if (total < ballsArray.length) {
                int x = e.getX();
                int y =e.getY();
                int r = (int) (Math.random() * 50 + 1);
                Color color = CommonUtil.randomcolor();
                int sy =CommonUtil.randomInt(-10,10);
                int sx = CommonUtil.randomInt(-10, 10);
                Ball ball = new Ball(r, color, x - r, y - r, sx, sy);
                ballsArray[total++] = ball;
            }
        }
    });
  //计时
    Timer timer = new Timer(20, e -> {
        for (int i = 0; i < total; i++) {
            Ball ball = ballsArray[i];
            ball.move();
        }
        repaint();
    });
    timer.start();
}
  /**
   * 画图,在窗口上画出背景图,形成双缓冲
   */
@Override
public void paint(Graphics g) {
    Graphics otherGraphics = image.getGraphics();
    super.paint(otherGraphics);
    for (int i = 0; i < total; i++) {
        Ball ball = ballsArray[i];
        ball.draw(otherGraphics);
    }
    g.drawImage(image, 0, 0, null);
}
/**
 * 将构造的窗口在屏幕上显示
 * @param args
 */
public static void main(String[] args) {
    new BallFrame().setVisible(true);
}}

五、自写工具类

 package org.day1214;
import java.awt.Color;
/**
 * 自写的一个工具类
 *  - 所有的工具都应该静态方法
//  - 将构造器私有,不应许调用构造器创建对象 
//  - 工具类一般不会被继承,所以通常是final的;
 * @author 吹雪雨落
  */
public final class CommonUtil {
private CommonUtil(){throw new AssertionError();}
public static int randomInt(int min ,int max){
    return (int) (Math.random()*(max-min+1)+min);
}
public static Color randomcolor(){
    return new Color(randomInt(0, 255), randomInt(0, 255), randomInt(0, 255));
}

}

你可能感兴趣的:(第三周学习总结)