java - 使用二维数组创建网格

标签 java arraylist

我目前正在制作《贪吃蛇》游戏。我有创建一个基本的二维数组列表的想法,这样我就可以创建单元格,但我找不到任何形式的帮助来创建该二维数组列表来存储每个单元格的 x 和 y 值。我需要有关如何创建二维数组列表以及如何使用它的帮助。

蛇.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) {}



}

Cell.java

package snake;

import java.awt.Color;
import java.awt.Graphics;

public class Cell extends Snake{

private static final long serialVersionUID = 1L;
final int CELL_HEIGHT = 10;
final int CELL_WIDTH = 10;

int status = 0;
int xPos;
int yPos;

public Cell(int x, int y) {

    xPos = x * 120;
    yPos = y * 120; 
}

public void draw(Graphics g) {
    g.setColor(Color.magenta);
    g.fillRect(xPos, yPos, CELL_WIDTH, CELL_HEIGHT);
}

}

最佳答案

如果你想用java制作游戏,我建议你使用游戏开发应用框架-libGDX

下载:https://libgdx.badlogicgames.com/download.html

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

以下是其中一些:

https://www.youtube.com/watch?v=QKK4kDogg-8&list=PLaNw_AbDFccHbzuObI4xHHp6WtiN2cRQv

https://www.youtube.com/watch?v=EJwXzmUQChg&list=PLXY8okVWvwZ0JOwHiH1TntAdq-UDPnC2L

https://www.youtube.com/watch?v=a8MPxzkwBwo&list=PLZm85UZQLd2SXQzsF-a0-pPF6IWDDdrXt

关于java - 使用二维数组创建网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049422/

相关文章:

java - 调用 getJSONObject 时出现 JSON 异常

java - 根据另一个 Portlet 的事件显示或隐藏一个 Portlet

java - 将列表划分为 n 大小列表的有效方法

java - 逻辑 AND 运算符在这里有什么用吗?

java - Java中的字节数组和Int转换

Java:ArrayList 上的 StringUtils.join 返回 NoSuchMethodError 异常

java - Java ArrayList 的描述性统计

java - 逻辑错误; Java 姓名搜索编程挑战赛

java - 如何将多个 ArrayList 连接成一个?

java - Spring RestTemplate 处理异常