有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java移动方块冻结标记

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

主要内容:

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) 个答案