java-加载不同的映射
好的,我有一个我正在制作的小程序,我想让它根据一个数字生成一个世界 这是:java-加载不同的映射,java,arrays,map,applet,Java,Arrays,Map,Applet,好的,我有一个我正在制作的小程序,我想让它根据一个数字生成一个世界 这是: public int[][] loadBoard(int map) { if (map == 1) { int[][] board = { { 2,2,24,24,24,24,24,3,3,0,0,0,1 }, { 2,2,24,23,23,23,24,1,3,0,0,0,1 }, { 1,1,24,23,23,23,24,1,3,3,3,3,1 }, { 1,1,24,24,23,24,24,1
public int[][] loadBoard(int map) {
if (map == 1) { int[][] board = { {
2,2,24,24,24,24,24,3,3,0,0,0,1 },
{ 2,2,24,23,23,23,24,1,3,0,0,0,1 },
{ 1,1,24,23,23,23,24,1,3,3,3,3,1 },
{ 1,1,24,24,23,24,24,1,1,1,1,3,1 },
{ 1,1,1,1,7,1,1,1,1,1,1,3,1 },
{ 5,1,1,1,7,7,7,7,7,1,1,1,1 },
{ 6,3,3,1,3,3,3,1,7,7,7,3,1 },
{ 6,3,3,1,3,1,1,1,1,1,7,1,1 },
{ 3,3,1,1,1,1,1,1,1,1,7,1,1 } };
}else{
int[][] board = {
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,24,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,24,1,1,1,1 },
{ 1,1,7,1,1,24,24,24,24,1,1,1,1 },
{ 1,1,7,1,1,24,1,24,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,3,3,1,1,24,1,1,1,1,1,1,1 },
}; } return board; }
我用以下方式来称呼它:
板=载重板(1)
我把它放在init()方法中。这样我就可以根据loadBoard()内的号码调用maps。然而,当我开始我的游戏时,我得到了nullpointer异常,我知道这与我刚才向您展示的代码有关。这可能是我犯的新手错误。。也许你能帮忙?我不确定你的空指针是否与这段代码有关。但是,您在if/else语句的范围内声明
board
,并在范围外返回此变量,这一事实真的很奇怪。确实如此。再次创建“board”变量。即使名称相同,返回的变量也不是您创建的变量。以下是固定代码:
public int[][] loadBoard(int map) {
if (map == 1) {
return new int[][] {
{2,2,24,24,24,24,24,3,3,0,0,0,1 },
{ 2,2,24,23,23,23,24,1,3,0,0,0,1 },
{ 1,1,24,23,23,23,24,1,3,3,3,3,1 },
{ 1,1,24,24,23,24,24,1,1,1,1,3,1 },
{ 1,1,1,1,7,1,1,1,1,1,1,3,1 },
{ 5,1,1,1,7,7,7,7,7,1,1,1,1 },
{ 6,3,3,1,3,3,3,1,7,7,7,3,1 },
{ 6,3,3,1,3,1,1,1,1,1,7,1,1 },
{ 3,3,1,1,1,1,1,1,1,1,7,1,1 } };
}else{
return new int[][] {
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,24,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,24,1,1,1,1 },
{ 1,1,7,1,1,24,24,24,24,1,1,1,1 },
{ 1,1,7,1,1,24,1,24,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,1,1,1,1,24,1,1,1,1,1,1,1 },
{ 1,3,3,1,1,24,1,1,1,1,1,1,1 },
}; }
}
如果我现在想知道你计划拥有多少“数字”,那就更简单了:)
另一个建议是不要动态创建数组,而是将它们作为常量。然后从方法返回适当的数组。您的代码可能如下所示(超过2个选项):
private static final int[]BOARD1=;
私有静态final int[]BOARD2=;
私有静态最终int[]BOARD3=;
私有静态最终int[]BOARD4=;
公共功能int[][]装载板(int选项){
开关(选择){
案例1:返回板1;
案例2:返回板2;
案例3:返回板3;
案例4:返回板4;
默认值:抛出新的RuntimeException(“未知线路板选择”);
}
}
是的,我有点注意到我在中途做的事情是错误的,但我说“去他妈的,我去问问stackoverflow”ps-我在你的代码中得到了“返回板”行的无法到达的声明:SYes。。。删除:)错误留下:)如果您有超过2个“数字”,您可以使用switch语句。请参阅更新的答案,了解超过2个选项+电路板作为常量
private static final int[][] BOARD1 = <array here>;
private static final int[][] BOARD2 = <array here>;
private static final int[][] BOARD3 = <array here>;
private static final int[][] BOARD4 = <array here>;
public function int[][] loadBoard( int choice ) {
switch( choice ) {
case 1: return BOARD1;
case 2: return BOARD2;
case 3: return BOARD3;
case 4: return BOARD4;
default: throw new RuntimeException( "Unknown board choice" );
}
}