Hallo Forum!
Ich habe folgendes Problem mit meiner GUI.
Ich wollte mir ein TicTacToe - Spiel programmieren, wobei man auswählen kann, ob Spieler vs Spieler gegeneinander spielen oder Computer vs Computer!
Dazu erstellte ich ein JFrame mit JButtons, je nach welchen Button man anklickt, wird ein neuer JFrame mit einem Grid gezeichnet!
Jetzt komme ich aber hier nicht mehr weiter.
Sobald PC vs PC spielt, wird kein neues Grid mehr gezeichnet und auch nicht, wenn einer gewonnen hat!
Leider bin ich nicht der beste JAVA - Programmierer, deswegen weiss ich auch nicht, wie ich es bewerkstelligen kann, dass bei einem Zug regelmässig das Grid neu gezeichnet wird?
Ich habe bereits ein
versucht, leider aber ohne Erfolg!
Vll. kann mir jemand einen guten Tipp geben?!
Hier mal mein Code ( bitte nicht über meinen grauslichen Code zu laut beschweren, bin wie gesagt nicht der Allerbeste! ).
Das erste Frame, was man gerne spielen würde.
Das zweite Frame, PC vs PC:
Danke Euch schon einmal vielmals!
lG
Ich habe folgendes Problem mit meiner GUI.
Ich wollte mir ein TicTacToe - Spiel programmieren, wobei man auswählen kann, ob Spieler vs Spieler gegeneinander spielen oder Computer vs Computer!
Dazu erstellte ich ein JFrame mit JButtons, je nach welchen Button man anklickt, wird ein neuer JFrame mit einem Grid gezeichnet!
Jetzt komme ich aber hier nicht mehr weiter.
Sobald PC vs PC spielt, wird kein neues Grid mehr gezeichnet und auch nicht, wenn einer gewonnen hat!
Leider bin ich nicht der beste JAVA - Programmierer, deswegen weiss ich auch nicht, wie ich es bewerkstelligen kann, dass bei einem Zug regelmässig das Grid neu gezeichnet wird?
Ich habe bereits ein
Java:
grid2[xx][yy].revalidate();
versucht, leider aber ohne Erfolg!
Vll. kann mir jemand einen guten Tipp geben?!
Hier mal mein Code ( bitte nicht über meinen grauslichen Code zu laut beschweren, bin wie gesagt nicht der Allerbeste! ).
Das erste Frame, was man gerne spielen würde.
Java:
import java.awt.Button;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
public class Start extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public Start() {
final JFrame j = new JFrame("Main Window");
j.setSize(800, 800);
j.setVisible(true);
Button b = new Button();
Button b1 = new Button();
b.setName("Computer vs Computer");
b1.setName("Spieler vs Compiter");
b.setLabel("Computer vs Computer");
b1.setLabel("Spieler vs Computer");
b.setSize(200, 200);
b1.setSize(200, 200);
j.getContentPane().setLayout(null);
j.add(b).setLocation(100, 100);
j.add(b1).setLocation(400, 100);
j.setDefaultCloseOperation(EXIT_ON_CLOSE);
b.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
int b = e.getButton();
if ( b == 1 ) {
System.out.println("Spiele Computer vs Computer ");
j.setVisible(false);
try {
PCvsPC cc = new PCvsPC(3, 3);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
System.out.println("Spiele Mensch vs Computer");
j.setVisible(false);
Tic p = new Tic(3, 3);
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
public static void main(String[] args) {
new Start();
}
}
Das zweite Frame, PC vs PC:
Java:
import java.awt.Color;
import java.awt.GridLayout;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
public class PCvsPC {
private static final long serialVersionUID = 1L;
JFrame frame=new JFrame(); //creates frame
JButton[][] grid; //names the grid of buttons
int y, x, xx, yy = 0;
int count = 2;
final int MAX = 3;
int res1, res2;
public PCvsPC(int width, int length) throws InterruptedException {
JFrame frame=new JFrame(); //creates frame
JButton[][] grid; //names the grid of buttons
frame.setLayout(new GridLayout(width,length)); //set layout
grid=new JButton[width][length]; //allocate the size of grid
for(y=0; y<length; y++){
for(x=0; x<width; x++){
final int xx = x;
final int yy = y;
grid[x][y]=new JButton("("+x+","+y+")"); //creates new button
frame.add(grid[x][y]); //adds button to grid
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
frame.pack(); //sets appropriate size for frame
frame.setVisible(true); //makes frame visible
}
}
spieleSpiel(grid);
}
public String WerAmZug() {
// TODO Auto-generated method stub
String X = "X";
String Y = "Y";
if ( count % 2 == 0 ) {
return X;
} else {
return Y;
}
}
public int generiereZahl() {
Random rand = new Random();
int feld1 = rand.nextInt(3);
return feld1;
}
public void spieleSpiel(JButton[][] grid2) throws InterruptedException {
String Ergebnis = checkThreeInARow(grid2, x, y);
String XorO = WerAmZug();
while ( !(grid2[xx][yy].getText() == "X") && !(grid2[xx][yy].getText() == "O" && Ergebnis.equals("NichtGewonnen")) ) {
Thread.currentThread();
if ( Ergebnis.equals("Gewonnen")) {
grid2[xx][yy].revalidate();
} else {
XorO = WerAmZug();
xx = generiereZahl();
yy = generiereZahl();
System.out.println("Wer ist am Zug in while: " + XorO);
System.out.println("while Schleife: xx: " + xx);
System.out.println("while Schleife: yy: " + yy);
grid2[xx][yy].setText(XorO);
Ergebnis = checkThreeInARow(grid2, x, y);
System.out.println("Ergebnis in while: " + Ergebnis);
xx = generiereZahl();
yy = generiereZahl();
System.out.println("while Schleife: xx1: " + xx);
System.out.println("while Schleife: yy1: " + yy);
count++;
XorO = WerAmZug();
System.out.println("Wer ist am Zug in while: " + XorO);
grid2[xx][yy].setText(XorO);
count++;
grid2[xx][yy].revalidate();
}
}
}
public String checkThreeInARow(JButton[][] grid2, int x2, int y2) {
String gewonnen = "Gewonnen";
String NichtGewonnen = "NichtGewonnen";
// TODO Auto-generated method stub
if (grid2[0][0].getText().equals("X") &&
grid2[0][1].getText().equals("X") && grid2[0][2].getText().equals("X") ||
grid2[0][0].getText().equals("X") && grid2[1][0].getText().equals("X") &&
grid2[2][0].getText().equals("X") || grid2[0][0].getText().equals("X") &&
grid2[1][1].getText().equals("X") && grid2[2][2].getText().equals("X") ||
grid2[1][0].getText().equals("X") && grid2[1][1].getText().equals("X") &&
grid2[1][2].getText().equals("X") || grid2[2][0].getText().equals("X") &&
grid2[2][1].getText().equals("X") && grid2[2][2].getText().equals("X")) {
System.out.println("Gewonnen: X");
return gewonnen;
}
else if (
grid2[0][0].getText().equals("O") &&
grid2[0][1].getText().equals("O") && grid2[0][2].getText().equals("O") ||
grid2[0][0].getText().equals("O") && grid2[1][0].getText().equals("O") &&
grid2[2][0].getText().equals("O") || grid2[0][0].getText().equals("O") &&
grid2[1][1].getText().equals("O") && grid2[2][2].getText().equals("O") ||
grid2[1][0].getText().equals("O") && grid2[1][1].getText().equals("O") &&
grid2[1][2].getText().equals("O") || grid2[2][0].getText().equals("O") &&
grid2[2][1].getText().equals("O") && grid2[2][2].getText().equals("O")) {
System.out.println("Gewonnen: O");
return gewonnen;
}
return NichtGewonnen;
}
}
lG