移动广场冻结标签

时间:2017-03-03 21:38:02

标签: java

对于我的项目,我们必须有四个方形移动并从侧面反弹,当它撞到一侧时它会改变颜色。当你点击其中一个方块时,它会冻结并变为红色。到目前为止,我有四个正方形,当我点击它们时,它说它冻结了它们。但是,如果让他们移动并从侧面反弹,我并不乐观。下面是我到目前为止编写的代码。

MAIN:

import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        StationarySquare[] squares = new StationarySquare[4];
        Random rng = new Random();

        for (int i = 0; i < squares.length; i++) {
            squares[i] = new StationarySquare(rng.nextDouble(), rng.nextDouble());
        }

        while (true) {
            StdDraw.clear();

            int count = 0;

            for (int i = 0; i < squares.length; i++) {
                squares[i].draw();

                if (StdDraw.mousePressed()
                        && squares[i].containsPoint(StdDraw.mouseX(), StdDraw.mouseY())) {
                    squares[i].freeze();
                }

                if (squares[i].isFrozen()) {
                    count++;
                }
            }
            StdDraw.text(0.5, 0.5, "Frozen: " + count);

            StdDraw.show(25);
        }
    }
}

我的其他课程

import java.util.Random;

public class StationarySquare {
    private double x;
    private double y;
    private double halfLength;
    private int red;
    private int green;
    private int blue;
    private boolean isFrozen;

    public StationarySquare(double x, double y) {
        this.x = x;
        this.y = y;
        halfLength = 0.1;
        isFrozen = false;
        randomColor();
    }

    public void draw() {
        if (isFrozen) {
            StdDraw.setPenColor(StdDraw.RED);
        } else {
            StdDraw.setPenColor(red, green, blue);
        }
        StdDraw.filledSquare(x, y, halfLength);
    }

    public void randomColor() {
        Random rng = new Random();

        red = rng.nextInt(256);
        green = rng.nextInt(256);
        blue = rng.nextInt(256);
    }

    public void freeze() {
        isFrozen = true;
    }

    public boolean containsPoint(double a, double b) {
        return a > x - halfLength &&
                a < x + halfLength &&
                b > y - halfLength &&
                b < y + halfLength;
    }

    public boolean isFrozen() {
        return isFrozen;
    }
}

0 个答案:

没有答案