Есть ли способ «получить» то, что было нажато из диалогового окна с предупреждением, и изменить значение чего-то еще? - PullRequest
0 голосов
/ 12 октября 2019

Я изучаю Android Studio, и мне нужно создать программу TicTacToe. Сама игра работает очень хорошо, однако мне также нужно, чтобы пользовательский ввод спросил, кто идет первым и какого цвета (между двумя цветами, такими как красный или черный), кто хотел бы быть первым, кто хотел бы быть.

IЯ просмотрел документацию по AlertDialogs, и я просто не могу понять, как, с точки зрения непрофессионала, сделать что-то вроде:

if (alert.getButtonPressed() == "X") {
firstLetter == "X"
}

else {
firstLetter == "O"
}

Это не то, на что это было бы похоже ВСЕМ, язнаю, но я просто пытаюсь помочь вам всем понять, что я пытаюсь сделать здесь. Мне также нужно, чтобы он делал что-то похожее, но вместо того, чтобы задавать первую букву или кто идет первым в X / O, мне также нужно установить цвет X / O в зависимости от того, кто первым хочет быть.

Код, который я буду публиковать, не является полной программой, но я надеюсь, что он может дать вам достаточно важных вещей, чтобы помочь вам понять, как программа выглядит в целом. Там гораздо больше кода, чем я показываю, и снова игра работает, я хочу добавить возможность выбирать, кто идет первым, Х или О, и какого цвета будет человек, идущий первым. Я не в какой-либо форме и не прошу кого-то просто сделать это для меня, я просто хочу знать, будет ли в контексте моей программы возможно получить все, что пользователь нажимает из AlertDialog, а затем изменитькакое письмо идет первым и какого цвета будет это письмо.

Если вам потребуется опубликовать больше кода, дайте мне знать. Я действительно стараюсь не походить на студента колледжа, который ищет кого-то, кто решит все мои проблемы, и просто передал мне ответ, поэтому, если я это сделаю, я извиняюсь и уверяю вас, что это не так. Я полностью готов и готов отредактировать и изменить этот пост, используя все необходимое, чтобы помочь мне понять это.

  @Override
    protected void onCreate( Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        game = new TicTacToe( );
        Point size = new Point( );
        getWindowManager().getDefaultDisplay( ).getSize( size );
        int w = size.x / TicTacToe.SIDE;
        ButtonHandler bh = new ButtonHandler( );
        tttView = new ButtonGridAndTextView( this, w, TicTacToe.SIDE, bh );
        tttView.setStatusText( game.result( ) );
        setContentView( tttView );
    }



    private class ButtonHandler implements View.OnClickListener { //this is the buttonhandler to put an X/O
        public void onClick( View v ) {
            for( int row = 0; row < TicTacToe.SIDE; row++ ) {
                for( int column = 0; column < TicTacToe.SIDE; column++ ) {
                    if( tttView.isButton( ( Button ) v, row, column ) ) {
                        int play = game.play( row, column );
                        if( play == 1 )
                            tttView.setButtonText( row, column, "O" );
                        else if( play == 2 )
                            tttView.setButtonText( row, column, "X" );
                        if( game.isGameOver( ) ) {
                            tttView.setStatusBackgroundColor( Color.RED );
                            tttView.enableButtons( false );
                            tttView.setStatusText( game.result( ) );
                            showNewGameDialog( );    // offer to play again
                        }
                    }
                }
            }
        }
    }
}




//Next bit of code is from my TicTacToe.java class

    public int play( int row, int col ) {
        int currentTurn = turn;
        if( row >= 0 && col >= 0 && row < SIDE && col < SIDE
                && game[row][col] == 0 ) {
            game[row][col] = turn;
            if( turn == 1 )
                turn = 2;
            else
                turn = 1;
            return currentTurn;
        }
        else
            return 0;
    }

1 Ответ

0 голосов
/ 14 октября 2019

// ПОПРОБУЙТЕ ЭТО

String[] YOURCHOICE = {"X", "O"};
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Choose your action!");
    builder.setItems(YOURCHOICE, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if(which == 0){
                //Do Some X function
            }else if(which == 1){
                //Do Some O function
            }
        }
    });
    builder.show();
...