All pastes #433272 Raw Edit

Fred42

public text v1 · immutable
·published 2007-04-10 18:17 UTC
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);
                base.OnPaint(e);
            }
            else
                base.OnPaint(e);
            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);
                    }
                }
            }

        }
    }
}