我目前正在开发一个简单的程序,该程序将根据相应的按键突出显示一个正方形(q 表示左上角,e 表示右上角等),我似乎无法让矩形从我的键事件中触发。触发键事件,并且每个事件都满足 if 语句(在颜色 if 语句中放入 system.out 并在按下键时显示),但是,对象根本没有更新。这是我的代码:
package acm;
import acm.graphics.*;
import acm.program.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class NewFinalGame extends GraphicsProgram {
private GObject redBrick, blueBrick, yellowBrick, greenBrick;
private GRectangle redBounds, blueBounds, yellowBounds, greenBounds;
Color dullRed = new Color(102, 0, 0);
Color dullBlue = new Color(0, 0, 51);
Color dullYellow = new Color(100, 100, 0);
Color dullGreen = new Color(0, 51, 0);
int level = 1;
public void init() {
addKeyListeners();
addMouseListeners();
setSize(500, 500);
setBackground(Color.black);
mainMenu();
}
public void run() {
waitForClick();
removeAll();
addSquares();
redBounds = redBrick.getBounds();
blueBounds = blueBrick.getBounds();
yellowBounds = yellowBrick.getBounds();
greenBounds = yellowBrick.getBounds();
}
public void mainMenu() {
GLabel welcome = new GLabel("Welcome to Simon.");
welcome.setColor(Color.white);
add(welcome, 100, 100);
GLabel clickToContinue = new GLabel("Click to continue...");
clickToContinue.setColor(Color.white);
add(clickToContinue, 150, 150);
}
public void addSquares() {
yellowBrick = new GRect(50, 50, 175, 175);
((GRect) yellowBrick).setFilled(true);
yellowBrick.setColor(dullYellow);
add(yellowBrick);
blueBrick = new GRect(275, 50, 175, 175);
((GRect) blueBrick).setFilled(true);
blueBrick.setColor(dullBlue);
add(blueBrick);
redBrick = new GRect(50, 275, 175, 175);
((GRect) redBrick).setFilled(true);
redBrick.setColor(dullRed);
add(redBrick);
greenBrick = new GRect(275, 275, 175, 175);
((GRect) greenBrick).setFilled(true);
greenBrick.setColor(dullGreen);
add(greenBrick);
}
public void highlight(GObject rect) {
if (rect.getColor() == dullYellow) {
System.out.println("Success!");
rect.setColor(Color.yellow);
pause(1000);
rect.setColor(dullYellow);
}
if (rect.getColor() == dullBlue) {
rect.setColor(Color.blue);
pause(1000);
rect.setColor(dullBlue);
}
if (rect.getColor() == dullRed) {
rect.setColor(Color.red);
pause(1000);
rect.setColor(dullRed);
}
if (rect.getColor() == dullGreen) {
rect.setColor(Color.green);
pause(1000);
rect.setColor(dullGreen);
}
}
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_Q:
highlight(yellowBrick);
break;
case KeyEvent.VK_W:
highlight(blueBrick);
break;
case KeyEvent.VK_A:
highlight(redBrick);
break;
case KeyEvent.VK_S:
highlight(greenBrick);
break;
}
}
}
感谢您的任何帮助。