Bonjour je voudrai obtenir une aide pour terminer mon projet puissance 4; je voudrai savoir comment faire en sorte quand il y a 4 pions d'une même couleur en ligne en colonne et en diagonale. Je ne voudrai pas de programmation orienté objet mais plutôt du niveau basique avec du if while for ... (niveau classe de terminale)
Mon code :
package Isn;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class Puissance_4 extends JFrame implements MouseListener {
int xa ,k,i , j, colonne, ligne , joueur , pixel;
int [][] situation= new int[6][7]; // Si personne n'a joué = 0 ;
//Si le joueur 1 a joué = 1 ;
//si le joueur 2 a joué = 2 ;
boolean sortie = false;
//---------------------------
// Programme principal
//---------------------------
public Puissance_4() {
//Configuration de la fenêtre graphique
setSize(1365,725); //Taille de la fenêtre
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Action de la croix en haut à droite
setTitle("Puissance 4"); //Titre de la fenêtre
setVisible(true); //Visibilité de la fenêtre
//Appel du graphique
initialisation();
Graphics g = getGraphics(); // Création de la couche graphique
paint(g); // Tracé du dessin
// Gestion de la souris
addMouseListener(this);
}
//---------------------------------
//Gestion du graphique
//---------------------------------
public void paint(Graphics g) {
super.paint(g); //On initialise le graphique
//------------------------
// création du tableau
//------------------------
{
g.setColor(Color.blue);
g.fillRect(100,100, 700, 600); // création du rectangle bleu
}
for (int i=0;i<6;i++){
for (int j=0;j<7;j++){
if (situation[i][j]==0){
g.setColor(Color.white);
g.fillOval(110+j*100,110+i*100,80,80);}
if (situation[i][j]==2){
g.setColor(Color.yellow);
g.fillOval(110+j*100,110+i*100,80,80);}
if (situation[i][j]==1){
g.setColor(Color.red);
g.fillOval(110+j*100,110+i*100,80,80);}
}
}
Font f1 = new Font("Courier", Font.BOLD, 70);
g.setColor(Color.BLUE);
g.setFont(f1);
g.drawString("Puissance 4",500 ,80 );
Font f2 = new Font("Courier", Font.BOLD, 60);
g.setColor(Color.red);
g.setFont(f2);
g.drawString("Joueur 1",850 ,450 );
if(joueur==2){
g.setColor(Color.red);
g.fillOval(1200, 390,80,80);}
g.setColor(Color.yellow);
g.setFont(f2);
g.drawString("Joueur 2",850 ,250 );
if(joueur==1){
g.setColor(Color.yellow);
g.fillOval(1200,190,80,80);}
}
//---------------------------------
//Gestion de la souris
//---------------------------------
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
joueur++;
xa=e.getX();
recupere_colonne(xa);
modification_situation();
repaint();
}
@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 void initialisation(){
for (i=0;i<6;i++){
for (j=0;j<7;j++){
situation[i][j]=0;
}
}
joueur=1;
}
public void modification_situation (){
joueur=(joueur+1)%2+1;
k=0;
while (k<6 && situation[5-k][colonne] !=0 ){
k++;
}
if (joueur==1){
situation[5-k][colonne] = 1;
}
else if (joueur==2){
situation[5-k][colonne] = 2;
}
if(k==5){
k=0;}
}
public void recupere_colonne(int pixel){
if (pixel<200)
colonne=0;
else if(pixel<300)
colonne=1;
else if (pixel<400)
colonne=2;
else if (pixel<500)
colonne=3;
else if (pixel<600)
colonne=4;
else if (pixel<700)
colonne=5;
else if (pixel<800)
colonne=6;
}
public static void main(String[] args) {
new Puissance_4();
}
}