Я пытаюсь построить Android-игру с помощью java (это первый раз, когда я сделал это, чтобы я был очень новым). Когда пользователь выбирает их игру, они хотят играть из основного вида, который вызывается классом активности GamePlay. В этом классе я пытаюсь загрузить представление GameBoard, которое я создал, а затем запустить цикл, который заканчивается, когда игра закончена. Я пробовал несколько разных способов сделать это (включая потоки), но проблема, с которой я сталкиваюсь, заключается в том, что представление не загружается до ввода цикла. Я получаю черный экран и бесконечный цикл. Какие-либо предложения?
Примечание. На плате обнаружено щелчок, который успешно присваивает значения d1 и d2.
public class GamePlay extends Activity{
private Player P1;
private Player P2;
private GameBoard board;
private Player turn;
private boolean gameOver = false;
private Thread thread;
//Variables associated with turn
private Dot d1 = null;
private Dot d2 = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_play);
Bundle extra = getIntent().getExtras();
String type = extra.getString("GAME_TYPE");
//Set up appropriate players
if (type.equals(StartDB.ONE_PLAYER)){
this.setTitle("One Player Dots And Boxes");
String P1Name = "Person";
P1 = new HumanPlayer(Color.RED, P1Name);
P2 = new AIPlayer(Color.BLUE, "Computer");
} else {
this.setTitle("Two Player Dots And Boxes");
String P1Name = "Player 1";
String P2Name = "Player 2";
P1 = new HumanPlayer(Color.RED, P1Name);
P2 = new HumanPlayer(Color.BLUE, P2Name);
}
//Initialize turn to first player
setTurn(P1);
//Set up a game board
board = new GameBoard(this, this);
setContentView(board);
}
@Override
protected void onStart() {
super.onStart();
//Create turn thread and run it
while (!gameOver){
while(d2 == null){
try {
Thread.sleep(1000);
} catch (InterruptedException e){
e.printStackTrace();
}
}
System.out.println("Making a line");
Line line = new Line(d1, d2);
board.addLine(line);
d1 = null;
d2 = null;
board.invalidate();
//This was another attempt made:
//try {
//thread = new Thread(new GameLoop(this));
//thread.start();
//thread.join();
//} catch (InterruptedException e) {
//e.printStackTrace();
//}
checkGameOver();
}
System.out.println("Game Over");
}
Вот образ жизненного цикла деятельности, с которого вы начинаете, если вы его раньше не видели. Мне это очень полезно:
Можете ли вы опубликовать свой игровой код? Ошибка может быть там.
Также попробуйте добавить в свой Activity_game_play xml свой класс GameBoard, как то, что было предложено в этом ответе: Добавить класс в xml