Hallo,
Ich habe die Methode "kontrolle" erstellt, welche kontrollieren soll ob X,O Senkrecht, Waagrecht oder Diagonal gewonnen hat. Aus irgendeinem Grund funktioniert es jedoch nicht. Was mache ich falsch?
Ich habe die Methode "kontrolle" erstellt, welche kontrollieren soll ob X,O Senkrecht, Waagrecht oder Diagonal gewonnen hat. Aus irgendeinem Grund funktioniert es jedoch nicht. Was mache ich falsch?
Java:
package com.example.jonas.tictactoe;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
int count = 0;
Button[][] buttons = new Button[3][3];
@Override
protected void onNewIntent(Intent intent) {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("TicTacToe");
int z = 1;
for (int i = 0; i <= 2; i++) {
for(int j = 0; j <=2; j++){
String buttonID = "button" + z;
int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
buttons[i][j] = (Button) findViewById(resID);
buttons[i][j].setOnClickListener(listener);
z++;
}
}
}
public boolean kontrolle (String sp){ //sp = Spieler (X,O)
for(int i = 0; i < 3; i++) {
//Kontrolle der Zeilen
if (buttons[i][0].getText().equals(sp)&&buttons[i][1].getText().equals(sp)&&buttons[i][2].equals(sp)) {
return true;
}
}
//Kontrolle der Spalten
for(int i = 0; i < 3; i++) {
if (buttons[0][i].getText().equals(sp) && buttons[1][i].getText().equals(sp) && buttons[2][i].equals(sp)) {
return true;
}
}
//Kontrolle der Diagonalen
if(buttons[0][0].getText().equals(sp)&&buttons[1][1].getText().equals(sp)&&buttons[2][2].equals(sp)){
return true;
}
if(buttons[2][0].getText().equals(sp)&&buttons[1][1].getText().equals(sp)&&buttons[0][2].equals(sp)){
return true;
}
return false;
}
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
{
Button pressedButton = (Button) findViewById(v.getId());
if (pressedButton.getText().equals("")) {
pressedButton.setClickable(false);
String zeichen;
if (count % 2 == 0) {
pressedButton.setBackgroundColor(Color.RED);
zeichen = "X";
} else {
pressedButton.setBackgroundColor(Color.BLUE);
zeichen = "O";
}
pressedButton.setText(zeichen);
count++;
if (kontrolle("X")) { // X hat gewonnen
count = 0;
System.out.println("X hat gewonnen");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
buttons[i][j].setText("");
}
}
} else if (kontrolle("O")) {
count = 0;
System.out.println("O hat gewonnen");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
buttons[i][j].setText("");
}
}
} else if (count == 9) {
count = 0;
System.out.println("Unentschieden!");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
buttons[i][j].setText("");
buttons[i][j].setBackgroundColor(Color.WHITE);
buttons[i][j].setClickable(true);
}
}
}
}
}
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}