0
我正在完成一个编码任务,需要我设置一组运动中的块,弹出窗口和对方,但不幸的是,我完全失去了接下来要去的地方。任何帮助将不胜感激(仍然得到编码的吊,,所以我正在寻找所有可能的帮助)。具体来说,我需要首先出现矩形,然后排除移动故障,最后帮助进行碰撞检测。块碰撞代码故障排除
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Driver implements ActionListener
{
private JFrame window;
private Timer timer;
private ChaseBlock[] blocks = new ChaseBlock[15];
// constants for graphics
private final int windowSize = 500;
private final int blockSize = 20;
/**
* Simple initiating main().
*
* @param args Not used.
*/
public static void main(String[] args)
{
Driver d = new Driver();
d.createWindow();
}
/**
* Set up the basic graphical objects.
*/
private void createWindow()
{
// create the window
window = new JFrame("The Great Chase");
window.setVisible(true);
window.setLayout(null);
window.getContentPane().setBackground(Color.white);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocation(50, 50);
window.setSize(
windowSize + window.getInsets().left + window.getInsets().right,
windowSize + window.getInsets().top + window.getInsets().bottom);
window.setResizable(false);
window.repaint();
timer = new Timer(10, this);
timer.start();
blocks[1].setBackground(Color.blue);
window.repaint();
addBlocks();
}
private void addBlocks() {
for (int i = 0; i < blocks.length; i++) {
int x = i * blockSize + 10 * (i +1);
blocks[i] = new ChaseBlock(x, windowSize/x - blockSize/2, blockSize, windowSize);
}
for (int i = 0; i < blocks.length; i++) {
window.add(blocks[i]);
}
}
private void animate() {
for (int i = 0; i < blocks.length; i++) {
blocks[i].move();
for (int b1 = 0; b1 < blocks.length; b1++)
for (int b2 = 0; b2 < blocks.length; b2++)
if (b1 != b2)
blocks[b1].checkCollision(blocks[b2]);
}
}
public void actionPerformed (ActionEvent e) {
animate();
}
}
这是我们使用的驱动类,还有一个Rectangle类。接近底部的目标是添加矩形并使其移动。我的问题在于矩形不显示任何内容或移动。
import java.awt.Color;
public class ChaseBlock extends Rectangle {
private int dX, dY;
private int windowWidth = 500;
private int windowHeight = 500;
public ChaseBlock(int x, int y, int w, int h) {
super(x, y, w, h);
if (Math.random() < 0.5) {
dX = -1;
dY = -1;
setBackground(Color.green);
} else
dX = 1;
dY = 1;
setBackground(Color.blue);
}
public void move() {
setLocation(getX(), getY() + 5);
if(getX() < 0 || getY() + getWidth() >= windowWidth) {
dX = dX * -1;
}
if (getY() < 0 || getY() + getHeight() >= windowHeight) {
dY = dY * -1;
}
}
public void checkCollision(ChaseBlock blocks) {
boolean up = false;
boolean down = false;
boolean left = false;
boolean right = false;
boolean hit = false;
}
}
这是我的班级来定义运动和其他一切。我的问题在于,我需要使用checkCollision方法来管理块本身和窗口之间的碰撞,并为所有块设置颜色。
试着问一个具体的问题,这将有助于你解决你的问题。仔细想想你遇到了什么问题,然后问一个关于那件事情的问题。这个问题太广泛了。也可以尝试只包含尽可能多的代码来说明问题,而不是倾销整个项目......这将帮助您获得更有用的答案。 – PeteB