rendered paste body//classe Puissance4
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Puissance4
{
public partial class Puissance4 : Form
{
public static int TAILLE_JETON=50;
private Grille g;
private Jeton nouveauJeton;
private Jeton jetonMove;
private Timer descente;
private Color couleurCourante;
private bool etat;
public Puissance4()
{
InitializeComponent();
this.g = new Grille(65,70);
etat=false;
descente = new Timer();
}
protected override void OnPaint(PaintEventArgs e)
{
if (etat == false) ecran.Text = ("C'est aux jaunes de jouer ...");
else ecran.Text = ("C'est aux rouges de jouer ...");
base.OnPaint(e);
if (nouveauJeton != null)
this.nouveauJeton.dessiner(e.Graphics);
this.g.dessiner(e.Graphics);
if (jetonMove != null)
this.jetonMove.dessiner(e.Graphics);
}
private void Quitter_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Souhaitez-vous vraiment quitter le jeu ?", "Quitter", MessageBoxButtons.OKCancel) == DialogResult.OK)
Close();
}
private void Rejouer_Click(object sender, EventArgs e)
{
InitializeComponent();
this.g = new Grille(65, 70);
etat = false;
descente = new Timer();
}
private Point emplacement_to_coordonnees(Point empl)
{
if ((empl.X <= 415 && empl.X >= 65) && (empl.Y <= 370 && empl.Y >= 70))
{
empl.X = (empl.X - 65) / TAILLE_JETON;
empl.Y = (empl.Y - 70) / TAILLE_JETON;
}
else
{
empl.X=-1;
empl.Y=-1;
}
return empl;
}
private Point click_to_depart(Point click)
{
if ((click.X <= 415 && click.X >= 65) && (click.Y <= 370 && click.Y >= 70))
{
int i = (click.X - 65) / TAILLE_JETON;
switch (i)
{
case 0: click.X = 65;
break;
case 1: click.X = 115;
break;
case 2: click.X = 165;
break;
case 3: click.X = 215;
break;
case 4: click.X = 265;
break;
case 5: click.X = 315;
break;
case 6: click.X = 365;
break;
}
click.Y = 70;
}
else
{
click.X = -1;
click.Y = -1;
}
return click;
}
private bool case_Suivante(Jeton jeton)
{
Point empl;
empl = emplacement_to_coordonnees(jeton.Emplacement);
if (empl.Y == 5)
return false;
if (g.get_jeton(empl.X,empl.Y + 1) == null)
return true;
else
return false;
}
private void descente_Tick(object sender, EventArgs e)
{
Point empl;
if ((nouveauJeton.Emplacement.Y - 70) % 50 == 0)
{
if (case_Suivante(nouveauJeton))
{
empl = nouveauJeton.Emplacement;
empl.Y += 10;
nouveauJeton.Emplacement = empl;
}
else
{
empl = emplacement_to_coordonnees(nouveauJeton.Emplacement);
g.set_jetons(nouveauJeton, empl.X, empl.Y);
descente.Stop();
}
}
else
{
empl = nouveauJeton.Emplacement;
empl.Y += 10;
nouveauJeton.Emplacement = empl;
}
}
private void click_jeton(object sender, MouseEventArgs e)
{
Point click = new Point(e.X, e.Y);
click = click_to_depart(click);
if (click.X != -1)
{
if (etat)
{
couleurCourante = Color.Red;
etat = false;
}
else
{
couleurCourante = Color.Yellow;
etat = true;
}
descente.Start();
nouveauJeton = new Jeton(couleurCourante, click);
descente.Tick += new EventHandler(descente_Tick);
}
}
private void move_jeton(object sender, MouseEventArgs e)
{
Point empl = new Point();
empl.X = e.X;
empl.Y = e.Y;
empl = click_to_depart(empl);
empl.Y -= TAILLE_JETON;
if (couleurCourante == Color.Yellow)
jetonMove = new Jeton(Color.Red, empl);
else
jetonMove = new Jeton(Color.Yellow, empl);
}
}
}
//classe jeton
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace Puissance4
{
class Jeton
{
private Point emplacement;
private Color couleur;
public Point Emplacement
{
get
{
return this.emplacement;
}
set
{
this.emplacement = value;
}
}
public Color Couleur
{
get
{
return this.couleur;
}
set
{
this.couleur = value;
}
}
public Jeton()
{
couleur = Color.Red;
emplacement = new Point(65,70);
}
public Jeton(Color c, Point e)
{
couleur = c;
emplacement = e;
}
public void dessiner(Graphics g)
{
Brush pinceau;
pinceau = new SolidBrush(couleur);
Rectangle rect;
rect = new Rectangle(emplacement.X, emplacement.Y, Puissance4.TAILLE_JETON - 4, Puissance4.TAILLE_JETON - 4);
//rect.Height = Puissance4.TAILLE_JETON;
//rect.Width = Puissance4.TAILLE_JETON;
//rect.Location = emplacement;
Pen stylo = new Pen(couleur, 3);
g.DrawEllipse(stylo, rect);
g.FillEllipse(pinceau, rect);
}
}
}
// classe grille
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace Puissance4
{
class Grille
{
private Jeton[][] jetons;
private Point emplacement;
public Grille(int x, int y)
{
jetons = new Jeton[7][];
for (int j = 0; j <= 6; j++)
{
jetons[j] = new Jeton[6];
}
for (int i = 0; i <= 6; i++)
{
for (int j = 0; j <= 5; j++)
{
jetons[i][j] = null;
}
}
emplacement.X = x;
emplacement.Y = y;
}
public Jeton get_jeton(int i, int j)
{
return jetons[i][j];
}
public void set_jetons(Jeton jeton, int i, int j)
{
jetons[i][j] = jeton;
}
public Point get_emp()
{
return emplacement;
}
public void set_emp(int x, int y)
{
emplacement.X = x;
emplacement.Y = y;
}
public void dessiner(Graphics g)
{
Pen stylo = new Pen(Color.Black, 3);
//emplacement.X = x;
//emplacement.Y = y;
for (int j = 0; j <= 6; j++)
{
Point[] point =
{
new Point(emplacement.X, emplacement.Y + j*Puissance4.TAILLE_JETON),
new Point(emplacement.X + 7*Puissance4.TAILLE_JETON, emplacement.Y + j*Puissance4.TAILLE_JETON)
};
g.DrawLines(stylo, point);
}
for (int i = 0; i <= 7; i++)
{
Point[] point =
{
new Point(emplacement.X + i*Puissance4.TAILLE_JETON, emplacement.Y),
new Point(emplacement.X + i*Puissance4.TAILLE_JETON, emplacement.Y + 6*Puissance4.TAILLE_JETON)
};
g.DrawLines(stylo, point);
}
for (int i = 0; i <= 6; i++)
{
for (int j = 0; j <= 5; j++)
{
if (jetons[i][j] != null)
{
jetons[i][j].dessiner(g);
}
}
}
}
}
}