Hey leute ich hab folgendes problem.
Ich habe 4 gewinnt mithilfe von javafx (Scene builder) versucht zu programmieren.
Ich habe eine Modell-,Controller- und main klasse erstellt sowie eine view-fxml mit dem scene builder erstellt, jedoch erkennt das programm nicht wenn ich mit der maus auf die einzelnen panZelle klicke.
Model Klasse
Controller Klasse
View FXML
Danke im vorraus
Ich habe 4 gewinnt mithilfe von javafx (Scene builder) versucht zu programmieren.
Ich habe eine Modell-,Controller- und main klasse erstellt sowie eine view-fxml mit dem scene builder erstellt, jedoch erkennt das programm nicht wenn ich mit der maus auf die einzelnen panZelle klicke.
Model Klasse
Java:
package application;
public class Model {
private char gitter [][] = null;
private int Zahl = 0;
public Model() {
gitter = new char [6][7];
// i=Zeile k=Spalte
for(int i=0; i<6; i++) {
for(int k=0; k<7; k++) {
gitter [i][k] = ' ';
}
}
}
public void Zug(int i, int k) {
if(Zahl%2==0) {
gitter[i][k] = 'X';
}
else {
gitter[i][k]= 'O';
}
Zahl++;
}
public char getZelle(int i, int k) {
return gitter[i][k];
}
public boolean gewinnErmitteln(int i, int k) {
boolean gewonnen = false;
int summe1 = 0;
int summe2 = 0;
int summe3 = 0;
int summe4 = 0;
int o = k;
//senkrecht nach oben
if(Zahl%2==1) {
for(int a=i; a<6; a++) {
if(gitter[a][k] == 'X') {
summe1++;
}
if(summe1 >= 4) {
gewonnen = true;
}
if(gitter[a][k] == 'O' || gitter[a][k] == ' ') {
break;
}
}
//senkrecht nach unten
for(int a=i-1; a>=0; a--) {
if(gitter[a][k] == 'X') {
summe1++;
}
if(summe1 >= 4) {
gewonnen = true;
}
if(gitter[a][k] == 'O' || gitter[a][k] == ' ') {
break;
}
}
//waagerecht nach rechts
for(int b=k; b<7; b++) {
if(gitter[i][b] == 'X') {
summe2++;
}
if(summe2 >= 4) {
gewonnen = true;
}
if(gitter[i][b] == 'O' || gitter[i][b] == ' ') {
break;
}
}
//waagerecht nach links
for(int b=k-1; b>=0; b--) {
if(gitter[i][b] == 'X') {
summe2++;
}
if(summe2 >= 4) {
gewonnen = true;
}
if(gitter[i][b] == 'O' || gitter[i][b] == ' ') {
break;
}
}
k = o;
System.out.println(k + " oben rechts");
//diagonal ermitteln rechts oben
for(int c=i; c<6; c++) {
if(gitter[c][k] == 'X') {
summe3++;
System.out.println("rechts oben" +summe3);
}
if(summe3 >= 4) {
gewonnen = true;
}
if(gitter[c][k] == 'O' || gitter[c][k] == ' ') {
break;
}
k++;
if(k==7) {
break;
}
}
k = o;
System.out.println(k + " unten links");
//diagonal ermitteln links unten
for(int c=i-1; c>-1; c--) {
if(k>0) {
k--;
}
else {
break;
}
if(gitter[c][k] == 'X') {
summe3++;
System.out.println("links unten" + summe3);
}
if(summe3 >= 4) {
gewonnen = true;
}
if(gitter[c][k] == 'O' || gitter[c][k] == ' ') {
break;
}
}
k=o;
System.out.println(k + " oben links");
//diagonal ermitteln links oben
for (int d=i; d<6; d++) {
if(gitter[d][k] == 'X') {
summe4++;
}
if(summe4 >= 4) {
gewonnen = true;
}
if(gitter[d][k] == 'O' || gitter[d][k] == ' ') {
break;
}
k--;
if(k==-1) {
break;
}
}
k=o;
//diagonal ermitteln rechts unten
for (int d=i-1; d>-1; d--) {
if(gitter[d][k+1] == 'X') {
summe4++;
System.out.println(summe4 + " rechts unten");
}
if(summe4 >= 4) {
gewonnen = true;
}
if(gitter[d][k+1] == 'O' || gitter[d][k+1] == ' ') {
break;
}
k++;
if(k==7) {
break;
}
}
System.out.println(summe1);
System.out.println(summe2);
System.out.println(summe3);
System.out.println(summe4);
}
else {
for(int a=i; a<6; a++) {
if(gitter[a][k] == 'O') {
summe1++;
}
if(summe1 >= 4) {
gewonnen = true;
}
if(gitter[a][k] == 'X' || gitter[a][k] == ' ') {
break;
}
}
//senkrecht nach unten
for(int a=i-1; a>=0; a--) {
if(gitter[a][k] == 'O') {
summe1++;
}
if(summe1 >= 4) {
gewonnen = true;
}
if(gitter[a][k] == 'X' || gitter[a][k] == ' ') {
break;
}
}
//waagerecht nach rechts
for(int b=k; b<7; b++) {
if(gitter[i][b] == 'O') {
summe2++;
}
if(summe2 >= 4) {
gewonnen = true;
}
if(gitter[i][b] == 'X' || gitter[i][b] == ' ') {
break;
}
}
//waagerecht nach links
for(int b=k-1; b>=0; b--) {
if(gitter[i][b] == 'O') {
summe2++;
}
if(summe2 >= 4) {
gewonnen = true;
}
if(gitter[i][b] == 'X' || gitter[i][b] == ' ') {
break;
}
}
k = o;
System.out.println(k + " oben rechts");
//diagonal ermitteln rechts oben
for(int c=i; c<6; c++) {
if(gitter[c][k] == 'O') {
summe3++;
System.out.println("rechts oben" +summe3);
}
if(summe3 >= 4) {
gewonnen = true;
}
if(gitter[c][k] == 'X' || gitter[c][k] == ' ') {
break;
}
k++;
if(k==7) {
break;
}
}
k = o;
System.out.println(k + " unten links");
//diagonal ermitteln links unten
for(int c=i-1; c>-1; c--) {
if(k>0) {
k--;
}
else {
break;
}
if(gitter[c][k] == 'O') {
summe3++;
System.out.println("links unten" + summe3);
}
if(summe3 >= 4) {
gewonnen = true;
}
if(gitter[c][k] == 'X' || gitter[c][k] == ' ') {
break;
}
}
k=o;
System.out.println(k + " oben links");
//diagonal ermitteln links oben
for (int d=i; d<6; d++) {
if(gitter[d][k] == 'O') {
summe4++;
}
if(summe4 >= 4) {
gewonnen = true;
}
if(gitter[d][k] == 'X' || gitter[d][k] == ' ') {
break;
}
k--;
if(k==-1) {
break;
}
}
k=o;
//diagonal ermitteln rechts unten
for (int d=i-1; d>-1; d--) {
if(gitter[d][k+1] == 'O') {
summe4++;
System.out.println(summe4 + " rechts unten");
}
if(summe4 >= 4) {
gewonnen = true;
}
if(gitter[d][k+1] == 'X' || gitter[d][k+1] == ' ') {
break;
}
k++;
if(k==7) {
break;
}
}
System.out.println(summe1);
System.out.println(summe2);
System.out.println(summe3);
System.out.println(summe4);
}
return gewonnen;
}
public void visualisieren() {
System.out.println("--------------------------");
System.out.println("|" + gitter[5][0] + "|" + gitter[5][1] + "|" + gitter[5][2] + "|" + gitter[5][3] + "|" + gitter[5][4] + "|" + gitter[5][5] + "|" + gitter[5][6] + "|");
System.out.println("|" + gitter[4][0] + "|" + gitter[4][1] + "|" + gitter[4][2] + "|" + gitter[4][3] + "|" + gitter[4][4] + "|" + gitter[4][5] + "|" + gitter[4][6] + "|");
System.out.println("|" + gitter[3][0] + "|" + gitter[3][1] + "|" + gitter[3][2] + "|" + gitter[3][3] + "|" + gitter[3][4] + "|" + gitter[3][5] + "|" + gitter[3][6] + "|");
System.out.println("|" + gitter[2][0] + "|" + gitter[2][1] + "|" + gitter[2][2] + "|" + gitter[2][3] + "|" + gitter[2][4] + "|" + gitter[2][5] + "|" + gitter[2][6] + "|");
System.out.println("|" + gitter[1][0] + "|" + gitter[1][1] + "|" + gitter[1][2] + "|" + gitter[1][3] + "|" + gitter[1][4] + "|" + gitter[1][5] + "|" + gitter[1][6] + "|");
System.out.println("|" + gitter[0][0] + "|" + gitter[0][1] + "|" + gitter[0][2] + "|" + gitter[0][3] + "|" + gitter[0][4] + "|" + gitter[0][5] + "|" + gitter[0][6] + "|");
System.out.println("--------------------------");
}
}
Java:
package application;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
public class controller implements Initializable {
@FXML
GridPane gridPaneGitter;
@FXML
Pane paneZelle00;
@FXML
Pane paneZelle01;
@FXML
Pane paneZelle02;
@FXML
Pane paneZelle03;
@FXML
Pane paneZelle04;
@FXML
Pane paneZelle05;
@FXML
Pane paneZelle06;
@FXML
Pane paneZelle10;
@FXML
Pane paneZelle11;
@FXML
Pane paneZelle12;
@FXML
Pane paneZelle13;
@FXML
Pane paneZelle14;
@FXML
Pane paneZelle15;
@FXML
Pane paneZelle16;
@FXML
Pane paneZelle20;
@FXML
Pane paneZelle21;
@FXML
Pane paneZelle22;
@FXML
Pane paneZelle23;
@FXML
Pane paneZelle24;
@FXML
Pane paneZelle25;
@FXML
Pane paneZelle26;
@FXML
Pane paneZelle30;
@FXML
Pane paneZelle31;
@FXML
Pane paneZelle32;
@FXML
Pane paneZelle33;
@FXML
Pane paneZelle34;
@FXML
Pane paneZelle35;
@FXML
Pane paneZelle36;
@FXML
Pane paneZelle40;
@FXML
Pane paneZelle41;
@FXML
Pane paneZelle42;
@FXML
Pane paneZelle43;
@FXML
Pane paneZelle44;
@FXML
Pane paneZelle45;
@FXML
Pane paneZelle46;
@FXML
Pane paneZelle50;
@FXML
Pane paneZelle51;
@FXML
Pane paneZelle52;
@FXML
Pane paneZelle53;
@FXML
Pane paneZelle54;
@FXML
Pane paneZelle55;
@FXML
Pane paneZelle56;
@FXML
Text Text;
private Model dasSpiel = null;
private int Zahl = 0;
private void gitterAktualisierung(int i, int k) {
// for(int i=0;i<5; i++) {
// for(int k=0; k<6; k++) {
Pane paneZelle = (Pane) gridPaneGitter.lookup("#paneZelle" + i + k);
char c = dasSpiel.getZelle(i,k);
if(paneZelle.getChildren().isEmpty() && c != ' ' ) {
if(Zahl%2==0) {
Text text = new Text();
text.setText("X");
Font font = new Font(50);
text.setFont(font);
text.setFill(Color.BLUE);
text.setX(25);
text.setY(60);
paneZelle.getChildren().add(text);
}
else {
Text text = new Text();
text.setText("O");
Font font = new Font(50);
text.setFont(font);
text.setFill(Color.RED);
text.setX(25);
text.setY(60);
paneZelle.getChildren().add(text);
}
}
if(dasSpiel.gewinnErmitteln(i,k)) {
Text.setText("Gewonnen!");
}
// }
// }
}
@Override
public void initialize(URL url, ResourceBundle rb) {
Text.setVisible(false);
dasSpiel = new Model();
paneZelle00.setOnMouseClicked(this::handlePaneZelle);
paneZelle01.setOnMouseClicked(this::handlePaneZelle);
paneZelle02.setOnMouseClicked(this::handlePaneZelle);
paneZelle03.setOnMouseClicked(this::handlePaneZelle);
paneZelle04.setOnMouseClicked(this::handlePaneZelle);
paneZelle05.setOnMouseClicked(this::handlePaneZelle);
paneZelle06.setOnMouseClicked(this::handlePaneZelle);
paneZelle10.setOnMouseClicked(this::handlePaneZelle);
paneZelle11.setOnMouseClicked(this::handlePaneZelle);
paneZelle12.setOnMouseClicked(this::handlePaneZelle);
paneZelle13.setOnMouseClicked(this::handlePaneZelle);
paneZelle14.setOnMouseClicked(this::handlePaneZelle);
paneZelle15.setOnMouseClicked(this::handlePaneZelle);
paneZelle16.setOnMouseClicked(this::handlePaneZelle);
paneZelle20.setOnMouseClicked(this::handlePaneZelle);
paneZelle21.setOnMouseClicked(this::handlePaneZelle);
paneZelle22.setOnMouseClicked(this::handlePaneZelle);
paneZelle23.setOnMouseClicked(this::handlePaneZelle);
paneZelle24.setOnMouseClicked(this::handlePaneZelle);
paneZelle25.setOnMouseClicked(this::handlePaneZelle);
paneZelle26.setOnMouseClicked(this::handlePaneZelle);
paneZelle30.setOnMouseClicked(this::handlePaneZelle);
paneZelle31.setOnMouseClicked(this::handlePaneZelle);
paneZelle32.setOnMouseClicked(this::handlePaneZelle);
paneZelle33.setOnMouseClicked(this::handlePaneZelle);
paneZelle34.setOnMouseClicked(this::handlePaneZelle);
paneZelle35.setOnMouseClicked(this::handlePaneZelle);
paneZelle36.setOnMouseClicked(this::handlePaneZelle);
paneZelle40.setOnMouseClicked(this::handlePaneZelle);
paneZelle41.setOnMouseClicked(this::handlePaneZelle);
paneZelle42.setOnMouseClicked(this::handlePaneZelle);
paneZelle43.setOnMouseClicked(this::handlePaneZelle);
paneZelle44.setOnMouseClicked(this::handlePaneZelle);
paneZelle45.setOnMouseClicked(this::handlePaneZelle);
paneZelle46.setOnMouseClicked(this::handlePaneZelle);
paneZelle50.setOnMouseClicked(this::handlePaneZelle);
paneZelle51.setOnMouseClicked(this::handlePaneZelle);
paneZelle52.setOnMouseClicked(this::handlePaneZelle);
paneZelle53.setOnMouseClicked(this::handlePaneZelle);
paneZelle54.setOnMouseClicked(this::handlePaneZelle);
paneZelle55.setOnMouseClicked(this::handlePaneZelle);
paneZelle56.setOnMouseClicked(this::handlePaneZelle);
}
public void handlePaneZelle(MouseEvent event) {
Node zelle = (Node) event.getSource();
String fxId = zelle.getId();
int length = fxId.length();
int k = Integer.parseInt(fxId.substring(length -1, length ));
int i = Integer.parseInt(fxId.substring(length -2, length -1));
dasSpiel.Zug(i, k);
gitterAktualisierung(i,k);
Zahl++;
}
}
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
<children>
<GridPane fx:id="gridPaneGitter" gridLinesVisible="true" layoutX="54.0" layoutY="47.0" prefHeight="285.0" prefWidth="492.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Pane fx:id="paneZelle00" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="5" />
<Pane fx:id="paneZelle01" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Pane fx:id="paneZelle02" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="5" />
<Pane fx:id="paneZelle03" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="5" />
<Pane fx:id="paneZelle04" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="5" />
<Pane fx:id="paneZelle05" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="5" />
<Pane fx:id="paneZelle06" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="5" />
<Pane fx:id="paneZelle10" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="4" />
<Pane fx:id="paneZelle11" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Pane fx:id="paneZelle12" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="4" />
<Pane fx:id="paneZelle14" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="4" />
<Pane fx:id="paneZelle15" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="4" />
<Pane fx:id="paneZelle16" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="4" />
<Pane fx:id="paneZelle20" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="3" />
<Pane fx:id="paneZelle21" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Pane fx:id="paneZelle22" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="3" />
<Pane fx:id="paneZelle23" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="3" />
<Pane fx:id="paneZelle24" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="3" />
<Pane fx:id="paneZelle25" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="3" />
<Pane fx:id="paneZelle26" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="3" />
<Pane fx:id="paneZelle30" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2" />
<Pane fx:id="paneZelle31" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Pane fx:id="paneZelle32" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="2" />
<Pane fx:id="paneZelle33" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="2" />
<Pane fx:id="paneZelle34" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="2" />
<Pane fx:id="paneZelle35" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="2" />
<Pane fx:id="paneZelle36" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="2" />
<Pane fx:id="paneZelle40" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
<Pane fx:id="paneZelle41" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Pane fx:id="paneZelle42" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
<Pane fx:id="paneZelle43" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="1" />
<Pane fx:id="paneZelle44" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" GridPane.rowIndex="1" />
<Pane fx:id="paneZelle45" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" GridPane.rowIndex="1" />
<Pane fx:id="paneZelle46" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" GridPane.rowIndex="1" />
<Pane fx:id="paneZelle50" layoutX="100.0" prefHeight="200.0" prefWidth="200.0" />
<Pane fx:id="paneZelle51" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" />
<Pane fx:id="paneZelle52" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" />
<Pane fx:id="paneZelle53" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" />
<Pane fx:id="paneZelle54" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="4" />
<Pane fx:id="paneZelle55" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="5" />
<Pane fx:id="paneZelle56" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="6" />
<Pane fx:id="paneZelle13" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3" GridPane.rowIndex="4" />
</children>
</GridPane>
<Text fx:id="Text" fill="RED" layoutX="154.0" layoutY="379.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Gewonnen" wrappingWidth="291.359375">
<font>
<Font size="44.0" />
</font>
</Text>
</children>
</AnchorPane>
Zuletzt bearbeitet: