Java-坐标问题

Java-坐标问题,java,coordinates,lwjgl,Java,Coordinates,Lwjgl,我正在使用LWJGL库,我正在尝试制作一个俄罗斯方块克隆。我想知道是否有人能给我指点,因为我被坐标卡住了。我有一个277*500的窗户,有264块瓷砖。我计划独立制作每一块瓷砖,这样我就可以随意改变它的颜色,比如我可以制作Tetrominoes。然而,这已经停止了,因为我不知道如何使每个瓷砖吊坠。目前,我有一个for循环来创建tiles,我打算为for循环的每一次添加给数组一个值,给每个tile一个独立的数组值,但是我已经测试过了,不知道怎么做。这是我目前拥有的最好的,很多只是测试和其他东西,但

我正在使用LWJGL库,我正在尝试制作一个俄罗斯方块克隆。我想知道是否有人能给我指点,因为我被坐标卡住了。我有一个277*500的窗户,有264块瓷砖。我计划独立制作每一块瓷砖,这样我就可以随意改变它的颜色,比如我可以制作Tetrominoes。然而,这已经停止了,因为我不知道如何使每个瓷砖吊坠。目前,我有一个for循环来创建tiles,我打算为for循环的每一次添加给数组一个值,给每个tile一个独立的数组值,但是我已经测试过了,不知道怎么做。这是我目前拥有的最好的,很多只是测试和其他东西,但这是我所能做到的

    package tetris;

import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.*;
import org.lwjgl.input.*;

public class game {

int wx = 277;
int hy = 500;
String score = "0";

public game() throws LWJGLException {

    Display.setDisplayMode(new DisplayMode(wx, hy));
    Display.create();
    Display.setTitle("Tetris");

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, wx, 0, hy, 1, -1);
    glMatrixMode(GL_MODELVIEW);

        while(!Display.isCloseRequested()) {

            Display.update();
            Display.sync(500);

            simpleText.drawString(score, 3, 3); 

int[][][] coordsTable = new int[][][] {

            //   0          1          2          3          4          5          6          7          8          9          10          11             
/*  0 */    { {  1, 1 }, {  1, 2 }, {  1, 3 }, {  1, 4 }, {  1, 5 }, {  1, 6 }, {  1, 7 }, {  1, 8 }, {  1, 9 }, {  1, 10 }, {  1, 11 }, {  1, 12 } },
/*  1 */    { {  2, 1 }, {  2, 2 }, {  2, 3 }, {  2, 4 }, {  2, 5 }, {  2, 6 }, {  2, 7 }, {  2, 8 }, {  2, 9 }, {  2, 10 }, {  2, 11 }, {  2, 12 } },
/*  2 */    { {  3, 1 }, {  3, 2 }, {  3, 3 }, {  3, 4 }, {  3, 5 }, {  3, 6 }, {  3, 7 }, {  3, 8 }, {  3, 9 }, {  3, 10 }, {  3, 11 }, {  3, 12 } },
/*  3 */    { {  4, 1 }, {  4, 2 }, {  4, 3 }, {  4, 4 }, {  4, 5 }, {  4, 6 }, {  4, 7 }, {  4, 8 }, {  4, 9 }, {  4, 10 }, {  4, 11 }, {  4, 12 } },
/*  4 */    { {  5, 1 }, {  5, 2 }, {  5, 3 }, {  5, 4 }, {  5, 5 }, {  5, 6 }, {  5, 7 }, {  5, 8 }, {  5, 9 }, {  5, 10 }, {  5, 11 }, {  5, 12 } },
/*  5 */    { {  6, 1 }, {  6, 2 }, {  6, 3 }, {  6, 4 }, {  6, 5 }, {  6, 6 }, {  6, 7 }, {  6, 8 }, {  6, 9 }, {  6, 10 }, {  6, 11 }, {  6, 12 } },
/*  6 */    { {  7, 1 }, {  7, 2 }, {  7, 3 }, {  7, 4 }, {  7, 5 }, {  7, 6 }, {  7, 7 }, {  7, 8 }, {  7, 9 }, {  7, 10 }, {  7, 11 }, {  7, 12 } },
/*  7 */    { {  8, 1 }, {  8, 2 }, {  8, 3 }, {  8, 4 }, {  8, 5 }, {  8, 6 }, {  8, 7 }, {  8, 8 }, {  8, 9 }, {  8, 10 }, {  8, 11 }, {  8, 12 } },
/*  8 */    { {  9, 1 }, {  9, 2 }, {  9, 3 }, {  9, 4 }, {  9, 5 }, {  9, 6 }, {  9, 7 }, {  9, 8 }, {  9, 9 }, {  9, 10 }, {  9, 11 }, {  9, 12 } },
/*  9 */    { { 10, 1 }, { 10, 2 }, { 10, 3 }, { 10, 4 }, { 10, 5 }, { 10, 6 }, { 10, 7 }, { 10, 8 }, { 10, 9 }, { 10, 10 }, { 10, 11 }, { 10, 12 } },
/* 10 */    { { 11, 1 }, { 11, 2 }, { 11, 3 }, { 11, 4 }, { 11, 5 }, { 11, 6 }, { 11, 7 }, { 11, 8 }, { 11, 9 }, { 11, 10 }, { 11, 11 }, { 11, 12 } },
/* 11 */    { { 12, 1 }, { 12, 2 }, { 12, 3 }, { 12, 4 }, { 12, 5 }, { 12, 6 }, { 12, 7 }, { 12, 8 }, { 12, 9 }, { 12, 10 }, { 12, 11 }, { 12, 12 } },
/* 12 */    { { 13, 1 }, { 13, 2 }, { 13, 3 }, { 13, 4 }, { 13, 5 }, { 13, 6 }, { 13, 7 }, { 13, 8 }, { 13, 9 }, { 13, 10 }, { 13, 11 }, { 13, 12 } },
/* 13 */    { { 14, 1 }, { 14, 2 }, { 14, 3 }, { 14, 4 }, { 14, 5 }, { 14, 6 }, { 14, 7 }, { 14, 8 }, { 14, 9 }, { 14, 10 }, { 14, 11 }, { 14, 12 } },
/* 14 */    { { 15, 1 }, { 15, 2 }, { 15, 3 }, { 15, 4 }, { 15, 5 }, { 15, 6 }, { 15, 7 }, { 15, 8 }, { 15, 9 }, { 15, 10 }, { 15, 11 }, { 15, 12 } },
/* 15 */    { { 16, 1 }, { 16, 2 }, { 16, 3 }, { 16, 4 }, { 16, 5 }, { 16, 6 }, { 16, 7 }, { 16, 8 }, { 16, 9 }, { 16, 10 }, { 16, 11 }, { 16, 12 } },
/* 16 */    { { 17, 1 }, { 17, 2 }, { 17, 3 }, { 17, 4 }, { 17, 5 }, { 17, 6 }, { 17, 7 }, { 17, 8 }, { 17, 9 }, { 17, 10 }, { 17, 11 }, { 17, 12 } },
/* 17 */    { { 18, 1 }, { 18, 2 }, { 18, 3 }, { 18, 4 }, { 18, 5 }, { 18, 6 }, { 18, 7 }, { 18, 8 }, { 18, 9 }, { 18, 10 }, { 18, 11 }, { 18, 12 } },
/* 18 */    { { 19, 1 }, { 19, 2 }, { 19, 3 }, { 19, 4 }, { 19, 5 }, { 19, 6 }, { 19, 7 }, { 19, 8 }, { 19, 9 }, { 19, 10 }, { 19, 11 }, { 19, 12 } },
/* 19 */    { { 20, 1 }, { 20, 2 }, { 20, 3 }, { 20, 4 }, { 20, 5 }, { 20, 6 }, { 20, 7 }, { 20, 8 }, { 20, 9 }, { 20, 10 }, { 20, 11 }, { 20, 12 } },
/* 20 */    { { 21, 1 }, { 21, 2 }, { 21, 3 }, { 21, 4 }, { 21, 5 }, { 21, 6 }, { 21, 7 }, { 21, 8 }, { 21, 9 }, { 21, 10 }, { 21, 11 }, { 21, 12 } },
/* 21 */    { { 22, 1 }, { 22, 2 }, { 22, 3 }, { 22, 4 }, { 22, 5 }, { 22, 6 }, { 22, 7 }, { 22, 8 }, { 22, 9 }, { 22, 10 }, { 22, 11 }, { 22, 12 } }

};

int[] coords = new int[263];

    for(int j=22; j<hy; j+=22) {
        for(double i=2; i<wx; i+=23) {
            square(i, hy-j, 20.5, 1, 1, 1);
            }
        }
    }
}

public void square(double posX, double posY, double size, float r, float g, float b) {
    glBegin(GL_QUADS);
        glVertex2d(posX, posY);
        glVertex2d(posX, posY+size);
        glVertex2d(posX+size, posY+size);
        glVertex2d(posX+size, posY);
        glColor3f(r, g, b);
    glEnd();        
}
public static void main(String[] args) throws LWJGLException {

    new game();
    }
}
package俄罗斯方块;
导入静态org.lwjgl.opengl.GL11.*;
导入org.lwjgl.LWJGLException;
导入org.lwjgl.opengl.*;
导入组织lwjgl.input.*;
公开课游戏{
int wx=277;
int-hy=500;
字符串分数=“0”;
public game()抛出了LWJGLException{
Display.setDisplayMode(新显示模式(wx,hy));
Display.create();
Display.setTitle(“俄罗斯方块”);
glMatrixMode(GL_投影);
glLoadIdentity();
glOrtho(0,wx,0,hy,1,-1);
glMatrixMode(GLU模型视图);
而(!Display.isCloseRequested()){
Display.update();
显示同步(500);
simpleText.抽绳(分数3,3);
int[][]coordsTable=新int[][]{
//   0          1          2          3          4          5          6          7          8          9          10          11             
/*  0 */    { {  1, 1 }, {  1, 2 }, {  1, 3 }, {  1, 4 }, {  1, 5 }, {  1, 6 }, {  1, 7 }, {  1, 8 }, {  1, 9 }, {  1, 10 }, {  1, 11 }, {  1, 12 } },
/*  1 */    { {  2, 1 }, {  2, 2 }, {  2, 3 }, {  2, 4 }, {  2, 5 }, {  2, 6 }, {  2, 7 }, {  2, 8 }, {  2, 9 }, {  2, 10 }, {  2, 11 }, {  2, 12 } },
/*  2 */    { {  3, 1 }, {  3, 2 }, {  3, 3 }, {  3, 4 }, {  3, 5 }, {  3, 6 }, {  3, 7 }, {  3, 8 }, {  3, 9 }, {  3, 10 }, {  3, 11 }, {  3, 12 } },
/*  3 */    { {  4, 1 }, {  4, 2 }, {  4, 3 }, {  4, 4 }, {  4, 5 }, {  4, 6 }, {  4, 7 }, {  4, 8 }, {  4, 9 }, {  4, 10 }, {  4, 11 }, {  4, 12 } },
/*  4 */    { {  5, 1 }, {  5, 2 }, {  5, 3 }, {  5, 4 }, {  5, 5 }, {  5, 6 }, {  5, 7 }, {  5, 8 }, {  5, 9 }, {  5, 10 }, {  5, 11 }, {  5, 12 } },
/*  5 */    { {  6, 1 }, {  6, 2 }, {  6, 3 }, {  6, 4 }, {  6, 5 }, {  6, 6 }, {  6, 7 }, {  6, 8 }, {  6, 9 }, {  6, 10 }, {  6, 11 }, {  6, 12 } },
/*  6 */    { {  7, 1 }, {  7, 2 }, {  7, 3 }, {  7, 4 }, {  7, 5 }, {  7, 6 }, {  7, 7 }, {  7, 8 }, {  7, 9 }, {  7, 10 }, {  7, 11 }, {  7, 12 } },
/*  7 */    { {  8, 1 }, {  8, 2 }, {  8, 3 }, {  8, 4 }, {  8, 5 }, {  8, 6 }, {  8, 7 }, {  8, 8 }, {  8, 9 }, {  8, 10 }, {  8, 11 }, {  8, 12 } },
/*  8 */    { {  9, 1 }, {  9, 2 }, {  9, 3 }, {  9, 4 }, {  9, 5 }, {  9, 6 }, {  9, 7 }, {  9, 8 }, {  9, 9 }, {  9, 10 }, {  9, 11 }, {  9, 12 } },
/*  9 */    { { 10, 1 }, { 10, 2 }, { 10, 3 }, { 10, 4 }, { 10, 5 }, { 10, 6 }, { 10, 7 }, { 10, 8 }, { 10, 9 }, { 10, 10 }, { 10, 11 }, { 10, 12 } },
/* 10 */    { { 11, 1 }, { 11, 2 }, { 11, 3 }, { 11, 4 }, { 11, 5 }, { 11, 6 }, { 11, 7 }, { 11, 8 }, { 11, 9 }, { 11, 10 }, { 11, 11 }, { 11, 12 } },
/* 11 */    { { 12, 1 }, { 12, 2 }, { 12, 3 }, { 12, 4 }, { 12, 5 }, { 12, 6 }, { 12, 7 }, { 12, 8 }, { 12, 9 }, { 12, 10 }, { 12, 11 }, { 12, 12 } },
/* 12 */    { { 13, 1 }, { 13, 2 }, { 13, 3 }, { 13, 4 }, { 13, 5 }, { 13, 6 }, { 13, 7 }, { 13, 8 }, { 13, 9 }, { 13, 10 }, { 13, 11 }, { 13, 12 } },
/* 13 */    { { 14, 1 }, { 14, 2 }, { 14, 3 }, { 14, 4 }, { 14, 5 }, { 14, 6 }, { 14, 7 }, { 14, 8 }, { 14, 9 }, { 14, 10 }, { 14, 11 }, { 14, 12 } },
/* 14 */    { { 15, 1 }, { 15, 2 }, { 15, 3 }, { 15, 4 }, { 15, 5 }, { 15, 6 }, { 15, 7 }, { 15, 8 }, { 15, 9 }, { 15, 10 }, { 15, 11 }, { 15, 12 } },
/* 15 */    { { 16, 1 }, { 16, 2 }, { 16, 3 }, { 16, 4 }, { 16, 5 }, { 16, 6 }, { 16, 7 }, { 16, 8 }, { 16, 9 }, { 16, 10 }, { 16, 11 }, { 16, 12 } },
/* 16 */    { { 17, 1 }, { 17, 2 }, { 17, 3 }, { 17, 4 }, { 17, 5 }, { 17, 6 }, { 17, 7 }, { 17, 8 }, { 17, 9 }, { 17, 10 }, { 17, 11 }, { 17, 12 } },
/* 17 */    { { 18, 1 }, { 18, 2 }, { 18, 3 }, { 18, 4 }, { 18, 5 }, { 18, 6 }, { 18, 7 }, { 18, 8 }, { 18, 9 }, { 18, 10 }, { 18, 11 }, { 18, 12 } },
/* 18 */    { { 19, 1 }, { 19, 2 }, { 19, 3 }, { 19, 4 }, { 19, 5 }, { 19, 6 }, { 19, 7 }, { 19, 8 }, { 19, 9 }, { 19, 10 }, { 19, 11 }, { 19, 12 } },
/* 19 */    { { 20, 1 }, { 20, 2 }, { 20, 3 }, { 20, 4 }, { 20, 5 }, { 20, 6 }, { 20, 7 }, { 20, 8 }, { 20, 9 }, { 20, 10 }, { 20, 11 }, { 20, 12 } },
/* 20 */    { { 21, 1 }, { 21, 2 }, { 21, 3 }, { 21, 4 }, { 21, 5 }, { 21, 6 }, { 21, 7 }, { 21, 8 }, { 21, 9 }, { 21, 10 }, { 21, 11 }, { 21, 12 } },
/* 21 */    { { 22, 1 }, { 22, 2 }, { 22, 3 }, { 22, 4 }, { 22, 5 }, { 22, 6 }, { 22, 7 }, { 22, 8 }, { 22, 9 }, { 22, 10 }, { 22, 11 }, { 22, 12 } }
};
int[]coords=新int[263];

对于(int j=22;j来说,在这样的多维数组中只存储
X,Y
坐标没有什么意义,因为您需要知道坐标才能获取/设置数组中的任何内容。您已经知道分片的位置,您希望存储分片的内容

几天前,我用一种不太相似的方法进行了一场第三场比赛

  • 使用数组索引表示磁贴的
    X
    Y
    位置
  • 使用Java对象表示磁贴而不是数组(上面的第三级数组)
  • 使用二维数组中的位置来跟踪平铺的位置,但
    平铺
    对象本身可以跟踪颜色等属性
  • 使用
    null
    表示平铺网格中没有平铺的间隙
  • 使平铺网格延伸到可见屏幕的顶部上方,以便更容易生成新的tetrominoes(这使其保持稳定)
    class Tile {
      private Color color;
       ... // getter/setter methods etc...
    }
    
    Tile[][] tiles = new Tile[12][22 + 4]; // 4 extra for space to spawn new tiles
    
    // Create a new tetromino - lets say a 1x4 in the middle of the grid
    // The first array index will the the X coordinate, and the second the Y coordindate
    tiles[6][0] = new Tile(RED);
    tiles[6][1] = new Tile(RED);
    tiles[6][2] = new Tile(RED);
    tiles[6][3] = new Tile(RED);