Ich mache eine Tic Tac Toe Android App und ich möchte die Punktzahl gehalten werden. Ich habe alles außer dem Inkrement funktioniert. Aus irgendeinem Grund, anstatt um 1, geht es um 2.Counter für Android Studio inkrementiert falsch
Dies ist die Methode, die ich für, wenn ich die Punktzahl erhöhen und überprüfen Sie das Spiel, um zu sehen, ob es einen Gewinner gibt oder nicht:
private Button one;
private Button two;
private Button three;
private Button four;
private Button five;
private Button six;
private Button seven;
private Button eight;
private Button nine;
private TextView winner;
private Button clearBoard;
private int scoreX;
private int scoreY;
private int tie;
private boolean turn = false; //determines who's turn it is
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = (Button) findViewById(R.id.box1);
one.setText("-");
two = (Button) findViewById(R.id.box2);
two.setText("-");
three = (Button) findViewById(R.id.box3);
three.setText("-");
four = (Button) findViewById(R.id.box4);
four.setText("-");
five = (Button) findViewById(R.id.box5);
five.setText("-");
six = (Button) findViewById(R.id.box6);
six.setText("-");
seven = (Button) findViewById(R.id.box7);
seven.setText("-");
eight = (Button) findViewById(R.id.box8);
eight.setText("-");
nine = (Button) findViewById(R.id.box9);
nine.setText("-");
scoreX = 0;
scoreY = 0;
tie = 0;
winner = (TextView) findViewById(R.id.win);
clearBoard = (Button) findViewById(R.id.newgame);
clearBoard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
one.setText("-");
one.setEnabled(true);
two.setText("-");
two.setEnabled(true);
three.setText("-");
three.setEnabled(true);
four.setText("-");
four.setEnabled(true);
five.setText("-");
five.setEnabled(true);
six.setText("-");
six.setEnabled(true);
seven.setText("-");
seven.setEnabled(true);
eight.setText("-");
eight.setEnabled(true);
nine.setText("-");
nine.setEnabled(true);
}
});
}
public void game(View view) {
Button b = (Button) view;
moves(b);
}
public void moves(Button b){
if(turn == false){
b.setText("X");
b.setTextSize(15);
} else {
b.setText("O");
b.setTextSize(15);
}
//once X or O is placed, cannot reuse that button till new game
b.setEnabled(false);
b.setTextSize(15);
turn = !turn;
check();
//if there is a winner, make it so buttons can't be pressed and new game must start
if(check() == true){
one.setEnabled(false);
two.setEnabled(false);
three.setEnabled(false);
four.setEnabled(false);
five.setEnabled(false);
six.setEnabled(false);
seven.setEnabled(false);
eight.setEnabled(false);
nine.setEnabled(false);
}
}
public boolean check() {
boolean finished = true;
int player = 1; //1 is player X, 0 is player O, 2 is a tie
//horizontal check
if((!one.getText().equals("-")) && one.getText().toString().equals(two.getText().toString()) && two.getText().toString().equals(three.getText().toString())) {
if (one.getText().equals("O")) {
player = 0;
}
} else if((!four.getText().equals("-")) && four.getText().toString().equals(five.getText().toString()) && five.getText().toString().equals(six.getText().toString())){
if (one.getText().equals("O")) {
player = 0;
}
} else if((!seven.getText().equals("-")) && seven.getText().toString().equals(eight.getText().toString()) && eight.getText().toString().equals(nine.getText().toString())){
if (one.getText().equals("O")) {
player = 0;
}
} else if((!one.getText().equals("-")) && one.getText().toString().equals(four.getText().toString()) && four.getText().toString().equals(seven.getText().toString())){
//vertical check
if (one.getText().equals("O")) {
player = 0;
}
} else if((!two.getText().equals("-")) && two.getText().toString().equals(five.getText().toString()) && five.getText().toString().equals(eight.getText().toString())){
if (one.getText().equals("O")) {
player = 0;
}
} else if((!three.getText().equals("-")) && three.getText().toString().equals(six.getText().toString()) && six.getText().toString().equals(nine.getText().toString())){
if (one.getText().equals("O")) {
player = 0;
}
} else if((!one.getText().equals("-")) && one.getText().toString().equals(five.getText().toString()) && five.getText().toString().equals(nine.getText().toString())){
//diagonal check
if (one.getText().equals("O")) {
player = 0;
}
} else if((!three.getText().equals("-")) && three.getText().toString().equals(five.getText().toString()) && five.getText().toString().equals(seven.getText().toString())){
if (one.getText().equals("O")) {
player = 0;
}
} else if ((!one.getText().equals("-")) && (!two.getText().equals("-")) && (!three.getText().equals("-")) && (!four.getText().equals("-")) && (!five.getText().equals("-"))
&& (!six.getText().equals("-")) && (!seven.getText().equals("-")) && (!eight.getText().equals("-")) && (!nine.getText().equals("-"))){
player = 2;
} else {
return finished = false;
}
if(player == 1){
scoreX = scoreX + 1;
winner.setText(String.format("Player X is the winner!\nGames won by player X: %d\nGames won by player O: %d\nNumber of ties: %d", scoreX, scoreY, tie));
} else if (player == 0){
scoreY = scoreY + 1;
winner.setText(String.format("Player O is the winner!\nGames won by player X: %d\nGames won by player O: %d\nNumber of ties: %d", scoreX, scoreY, tie));
} else if(player == 2){
tie= tie + 1;
winner.setText(String.format("It's a tie!\nGames won by player X: %d\nGames won by player O: %d\nNumber of ties: %d", scoreX, scoreY, tie));
}
return finished;
}
}
Meine Variablen, Scorex, scoreY und Krawatte sind alle Membervariablen und auf 0 gesetzt ich etwas fehlen muss, weil ich einfach nicht sehen, wie meine Variablen von 2 statt 1 Bitte helfen Sie sind Inkrementieren!
EDIT: Ich weiß, dass die Codierung nicht schön ist. Ich bin immer noch ein Anfänger. Ich habe meinen gesamten Code hinzugefügt. Ich weiß besonders, dass meine check() Methode lang ist, obwohl ich nicht sicher bin, wie ich die Länge davon verkürzen könnte, während ich die Knöpfe auf dem Spielbrett überprüfe.
Es ist 'if/else if' hell. Erwägen Sie, mit Stift & Papier neu anzufangen – Reimeus
Dieser Code ist ein komplettes Durcheinander, aber es erhöht Ihre Variablen nicht mehr als einmal. Sie haben uns noch nicht den ganzen Code gezeigt. Fügen Sie mehr hinzu. Versuchen Sie, einige Duplikate zu entfernen (versuchen Sie, alles tatsächlich zu entfernen). –
Ich weiß, dass mein Code nicht schön ist, da ich nur ein Anfänger bin. Ich habe den Rest meines Codes hinzugefügt. Wenn ich es teste, erhöht es auch +2 statt +1, auch wenn der Code so aussieht, als würde er nur einmal inkrementieren. Deshalb bin ich so verwirrt. – Kat