gpt4 book ai didi

java - 类似于 Java 语言的 BeJeweled 游戏

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:18 25 4
gpt4 key购买 nike

我正在尝试使用 java 语言设计一款像 BeJeweled 这样的游戏这是我到目前为止所达到的目标:

public class Game {

public static void main(String[] args) throws InterruptedException {

final JFrame window = new JFrame();
window.setSize(508,669);

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final Grid g=new Grid();
Game.obj(g);
window.add(g);
window.setVisible(true);
window.setResizable(false);

window.repaint(2);

window.addMouseListener(new MouseListener(){

@Override
public void mouseClicked(MouseEvent e) {

int x=e.getX();
int y=e.getY();




for(int i=0;i<10;i++) {
for(int j=0;j<16;j++){


if(x>i*50+5 && x<i*50+54 && y>j*40+26 && y<j*40+26+39){

g.b[i][j]=g.a[i][j];

int q = x;
int w=y;
int r =x;
int t =y;


q-=50;
w-=40;
if( i>0&&g.a[i-1][j]==g.b[i][j]){
g.a[i][j]=0;
g.a[i-1][j]=0;


}
if( j>0&&g.a[i][j-1]==g.b[i][j]){
g.a[i][j]=0;
g.a[i][j-1]=0;
}
r+=50;
t+=40;

if(i<9&&g.a[i+1][j]==g.b[i][j]){
g.a[i][j]=0;
g.a[i+1][j]=0;
}
if(j<15&&g.a[i][j+1]==g.b[i][j]){
g.a[i][j]=0;
g.a[i][j+1]=0;

}


}

}

}

SwingUtilities.updateComponentTreeUI(window);


}

@Override
public void mousePressed(MouseEvent e) {
}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

});


}

public static void obj(Grid g){

Random r =new Random();
for(int k=0;k<10;k++)
for(int l=0;l<16;l++)
g.a[k][l]=1+r.nextInt(4);
}

}





class Grid extends JPanel {
private Graphics Graphics;

@Override
public void paint(Graphics g) {
final Graphics g1 = g ;
this.setGraphics(g);

for(int i=0;i<600;i+=50)
for(int j=0;j<400;j+=40)
g.drawRect(i, j, i+50, j+40);

for(int i=0;i<10;i++)
for(int j=0;j<16;j++){
if(a[i][j]== 0) g.setColor(Color.WHITE);
if(a[i][j] == 1) g.setColor(Color.ORANGE);
if(a[i][j] == 2) g.setColor(Color.red);
if(a[i][j] == 3) g.setColor(Color.GREEN);
if(a[i][j] == 4) g.setColor(Color.cyan);

g.fillRect(i*50+1, j*40+1, 49, 39);
}

// Mouselis mouseptr = new Mouselis(g);
// this.addMouseListener(mouseptr);
// this.addMouseMotionListener(mouseptr);



}

public void setGraphics(Graphics Graphics) {
this.Graphics = Graphics;
}


int [][] a= new int[10][16];
int [][] b= new int[10][16];
}

在此设计中,仅在鼠标单击的方法中检查矩形的上下左右是否具有相同颜色。我怎样才能让它检查所有附近的矩形是否具有相同颜色?

请帮忙谢谢

最佳答案

您有四个 if 语句,用于检查相邻矩形的颜色是否与单击的矩形颜色相同。这是最后一篇:

if(j<15&&g.a[i][j+1]==g.b[i][j]){
g.a[i][j]=0;
g.a[i][j+1]=0;
}

j(垂直网格坐标)与 15 进行比较,以确保 j+1 在范围内。此外,还会检查 2d 数组 a 中的矩形,看看它是否等于被单击的 2d 数组 b 中的矩形。如果是,请将 Color.WHITE 设置为 0。因为索引是 ij+1,所以这会检查单击的矩形正下方的矩形。

要检查对角相邻的矩形,请将两个索引都更改 1。右下角的矩形是g.a[i+1][j+1]。要正确访问此矩形,您需要确保 i+1 和 j+1 都在数组的范围内以避免错误。

所以,if语句是

if(j<15 && i < 9 && g.a[i+1][j+1]==g.b[i][j]){ ...

你可以弄清楚剩下的事情。

关于java - 类似于 Java 语言的 BeJeweled 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20893438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com