oui mais par exemple si je fais avec ceux code la :
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class TicTacToe extends JPanel
{
JButton buttons[] = new JButton[9];
int alternate = 0;//if this number is a even, then put a X. If it's odd, then put an O
public TicTacToe()
{
setLayout(new GridLayout(3,3));
initializebuttons();
}
public static void main(String[] args)
{
JFrame window = new JFrame("Tic-Tac-Toe");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().add(new TicTacToe());
window.setBounds(300,200,300,300);
window.setVisible(true);
}
public boolean checkForWin()
{
/** Reference: the button array is arranged like this as the board
* 0 | 1 | 2
* 3 | 4 | 5
* 6 | 7 | 8
*/
//horizontal win check
if( checkAdjacent(0,1) && checkAdjacent(1,2) ) //no need to put " == true" because the default check is for true
return true;
else if( checkAdjacent(3,4) && checkAdjacent(4,5) )
return true;
else if ( checkAdjacent(6,7) && checkAdjacent(7,8))
return true;
//vertical win check
else if ( checkAdjacent(0,3) && checkAdjacent(3,6))
return true;
else if ( checkAdjacent(1,4) && checkAdjacent(4,7))
return true;
else if ( checkAdjacent(2,5) && checkAdjacent(5,8))
return true;
//diagonal win check
else if ( checkAdjacent(0,4) && checkAdjacent(4,8))
return true;
else if ( checkAdjacent(2,4) && checkAdjacent(4,6))
return true;
else
return false;
}
public boolean checkAdjacent(int a, int b)
{
if ( buttons[a].getText().equals(buttons[b].getText()) && !buttons[a].getText().equals("") )
return true;
else
return false;
}
// when a button is clicked, it generates an ActionEvent. Thus, each button needs an ActionListener. When it is clicked, it goes to this listener class that I have created and goes to the actionPerformed method. There (and in this class), we decide what we want to do.
private class buttonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton buttonClicked = (JButton)e.getSource(); //get the particular button that was clicked
if(alternate%2 == 0)
buttonClicked.setText("X");
else
buttonClicked.setText("O");
if(checkForWin() == true)
{
JOptionPane.showConfirmDialog(null, "Game Over.");
resetButtons();
}
alternate++;
}
}
public void initializebuttons()
{
for(int i = 0; i <= 8; i++)
{
buttons[i] = new JButton();
buttons[i].setText("");
buttons[i].addActionListener(new buttonListener());
add(buttons[i]); //adds this button to JPanel (note: no need for JPanel.add(...)
//because this whole class is a JPanel already
}
}
public void resetButtons()
{
for(int i = 0; i <= 8; i++)
{
buttons[i].setText("");
}
}
}
qui est tres simple je n'arrive pas a faire la meme présentation que sur le code compliqué d'au dessus, avec le scord bord un bouton reset un bouton quitter et un message qui indique qui a wins la game.
tu stocks ta grille dans un tableau bidimensionnel
int nbLigne;
int nbCol = nbLigne = 3;
String [][] grille = new String[nbLigne][nbCol];
Ensuite tu crées un JPanel, dedans tu va mettres deux JPanels, un en haut et un au centre (avec un BorderLayout North et Center).
respectivement paneN et paneC.
Dans le paneN tu mets les scores, ensuite dans paneC tu lui mets un BorderLayout et tu lui rajoute un JPanel au centre qui va être la grille (soit paneG) avec un GridLayout.
Pour afficher la grille tu fais:
private JPanel afficheGrille(){
Jpanel panel = new JPanel();
panel.setLayout(new GridLayout(nbLigne,nbCol));
for (int i=0; i<nbLigne; i++){
for {int j=0; j<nbCol; j++){
panel.add(new JLabel(grille[i][j]);
}
}
return panel
}
Je te laisse te débrouiller, n'hésite pas si tu bloques
tu stocks ta grille dans un tableau bidimensionnel
int nbLigne;
int nbCol = nbLigne = 3;
String [][] grille = new String[nbLigne][nbCol];
Ensuite tu crées un JPanel, dedans tu va mettres deux JPanels, un en haut et un au centre (avec un BorderLayout North et Center).
respectivement paneN et paneC.
Dans le paneN tu mets les scores, ensuite dans paneC tu lui mets un BorderLayout et tu lui rajoute un JPanel au centre qui va être la grille (soit paneG) avec un GridLayout.
Pour afficher la grille tu fais:
private JPanel afficheGrille(){
Jpanel panel = new JPanel();
panel.setLayout(new GridLayout(nbLigne,nbCol));
for (int i=0; i<nbLigne; i++){
for {int j=0; j<nbCol; j++){
panel.add(new JLabel(grille[i][j]);
}
}
return panel
}
Je te laisse te débrouiller, n'hésite pas si tu bloques
- Edité par Smooki 4 avril 2020 à 13:44:19
bonjour,
peut tu me dire ou je devrais le placer dans le code et comment faire ce que tu ma dis de faire.
peut tu donner plus de detail car quand j'essaie d'integrer a mon code en rajoutant des truc bin ça fonctionne pas xD
Je que je disais c'est de refaire complètement ton code de A à Z, et non de l'integerer
On n'aime pas ce qu'on ne comprend pas
Exception in thread "AWT-EventQueue-0" java.lang.N
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On n'aime pas ce qu'on ne comprend pas
On n'aime pas ce qu'on ne comprend pas
On n'aime pas ce qu'on ne comprend pas
On n'aime pas ce qu'on ne comprend pas
qui est tres simple je n'arrive pas a faire la meme présentation que sur le code compliqué d'au dessus, avec le scord bord un bouton reset un bouton quitter et un message qui indique qui a wins la game.
On n'aime pas ce qu'on ne comprend pas
On n'aime pas ce qu'on ne comprend pas