Java 使用二维阵列创建栅格

Java 使用二维阵列创建栅格,java,arraylist,Java,Arraylist,我目前正在制作游戏蛇。我想创建一个基本的二维arraylist,这样我就可以创建单元格了,但是我找不到任何形式的帮助来创建二维arraylist来存储每个单元格的x和y值。我需要关于如何创建2d arraylist以及如何使用它的帮助 Snake.java package snake; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.GridLayout; i

我目前正在制作游戏蛇。我想创建一个基本的二维arraylist,这样我就可以创建单元格了,但是我找不到任何形式的帮助来创建二维arraylist来存储每个单元格的x和y值。我需要关于如何创建2d arraylist以及如何使用它的帮助

Snake.java

package snake;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.List;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class Snake extends JPanel implements KeyListener {

private static final long serialVersionUID = 1L;
static final int BOX_WIDTH = 600;
static final int BOX_HEIGHT = BOX_WIDTH;
int UPDATE_RATE = 300;
ArrayList<Cell> CellList = new ArrayList<Cell>();



//ode below????
//2d arrayList

ArrayList[][] Cell = new ArrayList[10][10];


public Snake() {

    setPreferredSize(new Dimension(BOX_WIDTH, BOX_HEIGHT));

    /*for (int i = 0; i < 5; i++) {

        for (int j = 0; j < 5; j++) {
            CellList.add(new Cell(i,j));
        }
    } */



    Thread gameThread = new Thread() {

        public void run() {
            while(true){
                repaint();
                try {Thread.sleep(1000/UPDATE_RATE);}
                catch (InterruptedException ex) {}
            }
        }
    };
    gameThread.start();
}
public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            JFrame frame = new JFrame("SNEK");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Snake snake = new Snake();
            frame.setContentPane(snake);
            frame.setSize(BOX_WIDTH, BOX_HEIGHT);
            frame.pack();
            frame.addKeyListener(snake);
            frame.setVisible(true);
        }
    }); 
}

public void paintComponent(Graphics g) {
    g.setColor(Color.pink);
    g.fillRect(0, 0, BOX_WIDTH, BOX_HEIGHT);

    /*for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
                CellList.get(i,j).draw(g);

        }
    } */
}

@Override
public void keyPressed(KeyEvent arg0) {

}
@Override
public void keyReleased(KeyEvent arg0) {

}
@Override
public void keyTyped(KeyEvent arg0) {}



}

您当然不需要二维数组列表。 相反,您需要一个二维单元格数组:

与此相反:

ArrayList[][] Cell = new ArrayList[10][10];
使用以下命令:

Cell[][] cells = new Cell[10][10];
然后在构造函数中:

public Snake() {

    setPreferredSize(new Dimension(BOX_WIDTH, BOX_HEIGHT));

    for (int i = 0; i < cells.length; i++) {
        for (int j = 0; j < cells[i].length; j++) {
            cells[i][j] = new Cell(/*do what ever you ned here*/);
        }
    }
    ...
publicsnake(){
setPreferredSize(新尺寸(框宽、框高));
对于(int i=0;i
如果您想使用java制作游戏,我建议您使用游戏开发应用程序框架libGDX

下载:

它易于使用,而且你可以同时为桌面、android、ios和html构建游戏。YouTube上有很多关于libGDX的教程

以下是其中一些:


您是否做到了这一点?请阅读我的文章,了解如何使用Java Swing构建游戏的一些想法。
public Snake() {

    setPreferredSize(new Dimension(BOX_WIDTH, BOX_HEIGHT));

    for (int i = 0; i < cells.length; i++) {
        for (int j = 0; j < cells[i].length; j++) {
            cells[i][j] = new Cell(/*do what ever you ned here*/);
        }
    }
    ...