まず、私は Android でテトリスのクローンを作成しようとしています。学習経験のために、すでにこれを達成していますが、コードはひどい混乱であり、最終的に戻ってクリーンアップすることにしました。起こっていました。
しかし今、私のコンストラクタの1つが実行されていないようです...
最初にグローバル変数として設定された、コンストラクターで初期化する必要があるものを参照すると、NPE が発生します。このコードでは失敗しています:
blocksWorld.blockoid.parts.size()
GameScreen のコンストラクターで BlocksWorld のオブジェクトをセットアップしましたが、これは実行されます。
public GameScreen(Game game) {
super(game);
this.screen = AndroidGame.GAME_SCREEN;
blocksWorld = new BlocksWorld();
}
これは、実行されていないように見える BlocksWorld のコンストラクターです。
public BlocksWorld() {
// resets the game world
for (int x = 0; x < WORLD_WIDTH; x++) {
for (int y = 0; y < WORLD_HEIGHT; y++) {
grid[x][y] = 0;
}
}
NewBlockoid(blockoid);
}
新しいブロックイド:
public void NewBlockoid(Blockoid blockoid) {
nextPiece = random.nextInt(7) + 1;
blockoid = new Blockoid(grid, nextPiece);
}
Blockoid のコンストラクター:
public Blockoid(int[][] grid, int blockoidType) {
this.grid = grid;
this.blockoidType = blockoidType;
switch (blockoidType) {
case Blockoid.I:
color = Color.CYAN;
parts.add(new BlocksParts(5, 0));
parts.add(new BlocksParts(5, 1));
parts.add(new BlocksParts(5, 2));
parts.add(new BlocksParts(5, 3));
break;
case Blockoid.J:
color = Color.BLUE;
parts.add(new BlocksParts(5, 0));
parts.add(new BlocksParts(5, 1));
parts.add(new BlocksParts(5, 2));
parts.add(new BlocksParts(4, 2));
break;
case Blockoid.L:
color = Color.rgb(255, 165, 0);
parts.add(new BlocksParts(5, 0));
parts.add(new BlocksParts(5, 1));
parts.add(new BlocksParts(5, 2));
parts.add(new BlocksParts(6, 2));
break;
case Blockoid.O:
color = Color.YELLOW;
parts.add(new BlocksParts(5, 0));
parts.add(new BlocksParts(5, 1));
parts.add(new BlocksParts(6, 0));
parts.add(new BlocksParts(6, 1));
break;
case Blockoid.S:
color = Color.GREEN;
parts.add(new BlocksParts(5, 0));
parts.add(new BlocksParts(5, 1));
parts.add(new BlocksParts(4, 1));
parts.add(new BlocksParts(6, 0));
break;
case Blockoid.T:
color = Color.rgb(128, 0, 128);
parts.add(new BlocksParts(5, 0));
parts.add(new BlocksParts(4, 0));
parts.add(new BlocksParts(6, 0));
parts.add(new BlocksParts(5, 1));
break;
case Blockoid.Z:
color = Color.RED;
parts.add(new BlocksParts(5, 0));
parts.add(new BlocksParts(5, 1));
parts.add(new BlocksParts(4, 0));
parts.add(new BlocksParts(6, 1));
break;
}
}
誰が何が悪いのか知っていますか?さらにコードが必要ですか? ご協力ありがとうございました...