我对java很新,所以请原谅我可能编写的任何糟糕的代码。所以我一直试图制作一个简单的迷宫游戏,我希望有一个包含所有矩形的数组。我已经能够使用矩形数组,只要我把它放在一个方法中。一旦我将数组带到类级别,我就会收到错误"令牌上的语法错误&#34 ;;",{在此令牌之后预期"在第一个分号和错误"语法错误,插入"}"完成Block"在最后一个分号上。我想使数组类级别,所以我可以在一个方法中初始化矩形,并在另一个方法中绘制。我想这样做,因为我希望能够使矩形移动,并重复绘制方法。如果我在paint方法中初始化矩形数组,则x和y将粘贴到该位置。如果我在开始方法中初始化矩形数组并不重复,我就无法在paint方法中访问矩形数组,以实际将它们绘制到屏幕上。我绝对不希望公开矩形数组,因为我听说这样做是不好的做法。我知道我可能需要完全重新组织我的代码,我愿意这样做。我花了好几个小时敲打我的头,在互联网上寻找修复,但我还没找到。谢谢。
这是*游戏类的大部分内容
*我不想用文字垃圾页面。
public class GamePanel extends JPanel implements ActionListener, KeyListener{
double WindowScale;
boolean upPressed = false;
boolean downPressed = false;
boolean leftPressed = false;
boolean rightPressed = false;
boolean hitDetect = false;
Timer timer = new Timer(1000/60, this);
Player player1 = new Player();
public GamePanel(double scale){
setBackground(Color.BLACK);
WindowScale = scale;
setFocusable(true);
addKeyListener(this);
RestartTimer();
}
public void RestartTimer(){
timer.stop();
setFocusable(true);
addKeyListener(this);
timer.start();
}
public void actionPerformed(ActionEvent e){
frame();
}
public void frame(){
if(upPressed){
player1.setY(player1.getY() - player1.getVertSpeed());
} if(downPressed){
player1.setY(player1.getY() + player1.getVertSpeed());
} if(leftPressed){
player1.setX(player1.getX() - player1.getHorizSpeed());
} if(rightPressed){
player1.setX(player1.getX() + player1.getHorizSpeed());
}
if(hitDetect==true){
hitDetect = false;
player1.setX(player1.getRespawnX());
player1.setY(player1.getRespawnY());
RestartTimer();
}
repaint();
}
public void paintComponent(Graphics g){
Rectangle[] RectangleArray = new Rectangle[11];
RectangleArray[0] = new Rectangle(0,50,850,10,255,255,255);
RectangleArray[1] = new Rectangle(0,0,10,680,255,255,255);
RectangleArray[2] = new Rectangle(0,0,900,10,255,255,255);
RectangleArray[3] = new Rectangle(890,0,10,640,255,255,255);
RectangleArray[4] = new Rectangle(50,100,850,10,255,255,255);
RectangleArray[5] = new Rectangle(10,200,40,10,255,255,255);
RectangleArray[6] = new Rectangle(50,200,30,10,255,255,255,true,110,200,5);
RectangleArray[7] = new Rectangle(80,200,30,10,255,255,255);
RectangleArray[8] = new Rectangle(110,200,30,10,255,255,255);
RectangleArray[9] = new Rectangle(140,200,30,10,255,255,255);
RectangleArray[10] = new Rectangle(170,200,30,10,255,255,255);
这里是矩形类(没有getter和setter):
public Rectangle(int x, int y, int width, int height, int red, int green, int blue){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.red = red;
this.green = green;
this.blue = blue;
}
public Rectangle(int x, int y, int width, int height, int red, int green, int blue, boolean MoveVertTrue, int MaxHeight, int MinHeight, int MoveSpeed){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.red = red;
this.green = green;
this.blue = blue;
this.MaxHeight = MaxHeight;
this.MinHeight = MinHeight;
this.MoveSpeed = MoveSpeed;
this.FlipTrue = false;
}
public Rectangle(int x, int y, int width, int height, int red, int green, int blue, int MaxWidth, int MinWidth, int MoveSpeed){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.red = red;
this.green = green;
this.blue = blue;
this.MaxWidth = MaxWidth;
this.MinWidth = MinWidth;
this.MoveSpeed = MoveSpeed;
this.FlipTrue = false;
}
public void VertMove(){
if(FlipTrue == true){
y += MoveSpeed;
} if(FlipTrue == false){
y += - MoveSpeed;
System.out.println("lol");
} if(y<MinHeight){
FlipTrue = true;
} if(y>MaxHeight){
FlipTrue = false;
}
}