C > Morpion

TitreMorpion
Postée le13-01-2012
Affichée104
Mini-lien
Description

Un jeu de morpion

EtatNe contient pas d'erreurs. Ne contient pas d'erreurs.
Code d'insertion
Options
Afficher les numéros de lignes  Mettre la source en plein ecran  Selectionner la source  Partager sur Facebook 
Téléchargement Telecharger en format txt  Telecharger en format pdf  Telecharger en format c
Plein ecran
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int regles();
void jeu();
int joueur(char tableau[]);
void afficher (char tableau[]);
int calcul (char tableau[],int q);
void jeud();
int joueurd(char tableau[]);
void jeut();
int IA(char tableau[]);
int IA2(char tableau[]);

int ouf=0;
int ouf2=0;

int main()
{
    int x=0;
    printf("MORPION\n\n");
    printf("1=jouer directement\n2=Comment jouer ?\n\n");
    scanf("%d",&x);
    if (x==2)
    {
        x=regles();
        x=1;
    }
    if (x==1)
    {
        int num=0;
        printf("1=Solo\n2=Multi-J\n3=Spectateur\n\nchoix : ");
        scanf("%d",&num);
        if(num==1)
            jeu();
        else if(num==2)
            jeud();
        else if(num==3)
            jeut();
        else
        {
            printf("Vous avez fait une erreur dans votre choix (ou pas !), relancez le programme.\n\n");
            system("PAUSE");
        }
    }
    else
    {
        printf("Vous avez fait une erreur dans votre choix (ou pas !), relancez le programme.\n\n");
        system("PAUSE");
    }


    return 0;
}

int regles()
{
    printf("Les regles sont simples: donnez le numero de la case \ndu tableau ou vous voulez mettre votre pion\n\n");
    printf("             1 2 3\n             4 5 6\n             7 8 9\n\n\n");
    printf("il faut aligner trois pions\n\n");
    system("PAUSE");
    system("cls");

    return 2;
}

void jeu()
{
    char tableau[9]= {'a','b','c','d','e','f','g','h','i'};
    afficher(tableau);
    int i=0;
    srand(time(NULL));
    i=rand()%(2);
    int chose=1;
    int win=0;
    int mer=0;

    if (i==1)
    {
        printf("Tu commence\n\n");
        while(win==0)
        {
            win=joueur(tableau);
            mer=strpbrk(tableau,"abcdefghi");
            if(mer==NULL&&win==0)
                win=2;
            if(win==0)
            {
                win=IA(tableau);
            }
        }
    }
    else
    {
        printf("Ordi commence\n\n");
        while(win==0)
        {
            win=IA(tableau);
            mer=strpbrk(tableau,"abcdefghi");
            if(mer==NULL&&win==0)
                win=2;
            if(win==0)
            {
                win=joueur(tableau);
            }
        }
    }
    if(win==2)
    {
        printf("Egalite !\n");
        system("PAUSE");
    }
    if(win==1)
    {
        printf("Tu gagne !\n");
        system("PAUSE");
    }
    if(win==3)
    {
        printf("Tu perd !\n");
        system("PAUSE");
    }
}

int joueur(char tableau[])
{
    int z=1;
    int choix=0;
    int win=0;
    while(z==1)
    {
        z=0;
        printf("Donne le numero de la case ou tu veut mettre ton pion : ");
        scanf("%d",&choix);
        if(tableau[choix-1]=='x'||tableau[choix-1]=='o'||tableau[choix-1]=='.')
        {
            printf("Pion deja place ici\n");
            z=1;
        }
        else
        {
            tableau[choix-1]='x';
        }
    }
    win=calcul(tableau,1);
    afficher(tableau);

    return win;
}

void afficher(char tableau[])
{
    system("cls");
    int g=0;
    printf("\n      ");
    for(g=0; g<3; g++)
    {
        if (tableau[g]=='o'||tableau[g]=='x')
        {
            printf("%c ",tableau[g]);
        }
        else
        {
            printf("%c ",'.');
        }
    }
    printf("\n      ");
    for(g=3; g<6; g++)
    {
        if (tableau[g]=='o'||tableau[g]=='x')
        {
            printf("%c ",tableau[g]);
        }
        else
        {
            printf("%c ",'.');
        }
    }
    printf("\n      ");
    for(g=6; g<9; g++)
    {
        if (tableau[g]=='o'||tableau[g]=='x')
        {
            printf("%c ",tableau[g]);
        }
        else
        {
            printf("%c ",'.');
        }
    }
    printf("\n\n");
}

int calcul (char tableau[],int q)
{
    int win=0;
    if (tableau[0]==tableau[1]&&tableau[1]==tableau[2])
    {
        win=q;
    }
    if (tableau[0]==tableau[4]&&tableau[4]==tableau[8])
    {
        win=q;
    }
    if (tableau[0]==tableau[3]&&tableau[3]==tableau[6])
    {
        win=q;
    }
    if (tableau[6]==tableau[7]&&tableau[7]==tableau[8])
    {
        win=q;
    }
    if (tableau[1]==tableau[4]&&tableau[4]==tableau[7])
    {
        win=q;
    }
    if (tableau[2]==tableau[5]&&tableau[5]==tableau[8])
    {
        win=q;
    }
    if (tableau[3]==tableau[4]&&tableau[4]==tableau[5])
    {
        win=q;
    }
    if (tableau[6]==tableau[4]&&tableau[4]==tableau[2])
    {
        win=q;
    }

    return win;
}

void jeud()
{
    char tableau[9]= {'a','b','c','d','e','f','g','h','i'};
    afficher(tableau);
    int i=0;
    int chose=1;
    int win=0;
    int mer=0;

    printf("Joueur 1 commence\n\n");
    while(win==0)
    {
        printf("Au joueur 1.\n");
        win=joueur(tableau);
        mer=strpbrk(tableau,"abcdefghi");
        if(mer==NULL&&win==0)
            win=2;
        if(win==0)
        {
            printf("Au joueur 2.\n");
            win=joueurd(tableau);
        }
    }

    if(win==2)
    {
        printf("Egalite !\n");
        system("PAUSE");
    }
    if(win==1)
    {
        printf("Joueur 1 gagne !\n");
        system("PAUSE");
    }
    if(win==3)
    {
        printf("Joueur 2 gagne !\n");
        system("PAUSE");
    }
}

int joueurd(char tableau[])
{
    int z=1;
    int choix=0;
    int win=0;
    while(z==1)
    {
        z=0;
        printf("Donne le numero de la case ou tu veut mettre ton pion : ");
        scanf("%d",&choix);
        if(tableau[choix-1]=='x'||tableau[choix-1]=='o'||tableau[choix-1]=='.')
        {
            printf("Pion deja place ici\n");
            z=1;
        }
        else
        {
            tableau[choix-1]='o';
        }
    }
    win=calcul(tableau,3);
    afficher(tableau);

    return win;
}

void jeut()
{
    char tableau[9]= {'a','b','c','d','e','f','g','h','i'};
    afficher(tableau);
    int i=0;
    srand(time(NULL));
    i=rand()%(2);
    int chose=1;
    int win=0;
    int mer=0;

        while(win==0)
        {
            printf("IA 1 joue");
            win=IA(tableau);
            mer=strpbrk(tableau,"abcdefghi");
            if(mer==NULL&&win==0)
                win=2;
            if(win==0)
            {
                printf("IA 2 joue");
                win=IA2(tableau);
            }
        }

    if(win==2)
    {
        printf("Egalite !\n");
        system("PAUSE");
    }
    if(win==1)
    {
        printf("IA 2 gagne !\n");
        system("PAUSE");
    }
    if(win==3)
    {
        printf("IA 1 gagne !\n");
        system("PAUSE");
    }
}

int IA(char tableau[])
{
    int p=0;
    while(p<300000000)
    {
        p++;
    }
    int z=1;
    int choix;
    int win=0;
    while(z==1)
    {
        z=0;
        int choix=0;

        if(tableau[4]!='x'&&tableau[4]!='o')
            choix=4;

        /*ext*/else if(ouf==1)
        /*ext*/{
        /*ext*/choix=3;
        /*ext*/ouf++;
        /*ext*/}
        /*ext*/else if(tableau[4]=='x'&&tableau[0]=='a')
        /*ext*/{
        /*ext*/choix=0;
        /*ext*/}
        /*ext*/else if(tableau[0]=='o'&&tableau[1]=='b'&&tableau[2]=='c'&&tableau[3]=='d'&&tableau[4]=='x'&&tableau[5]=='f'&&tableau[6]=='g'&&tableau[7]=='h'&&tableau[8]=='x')
        /*ext*/{
        /*ext*/choix=6;
        /*ext*/ouf++;
        /*ext*/}
        /*ext*/else if(tableau[0]=='o'&&tableau[1]=='b'&&tableau[2]=='x'&&tableau[3]=='d'&&tableau[4]=='x'&&tableau[5]=='f'&&tableau[6]=='g'&&tableau[7]=='h'&&tableau[8]=='i')
        /*ext*/{
        /*ext*/choix=6;
        /*ext*/ouf++;
        /*ext*/}
        /*ext*/else if(tableau[0]=='o'&&tableau[1]=='b'&&tableau[2]=='c'&&tableau[3]=='d'&&tableau[4]=='x'&&tableau[5]=='f'&&tableau[6]=='x'&&tableau[7]=='h'&&tableau[8]=='i')
        /*ext*/{
        /*ext*/choix=2;
        /*ext*/}

        else if(tableau[1]=='o'&&tableau[2]!='x'&&tableau[2]!='o'&&tableau[4]=='x')
            {
                choix=2;
            }
        else if(tableau[3]=='o'&&tableau[0]!='x'&&tableau[0]!='o'&&tableau[4]=='x')
            {
                choix=0;
            }
        else if(tableau[7]=='o'&&tableau[8]!='x'&&tableau[8]!='o'&&tableau[4]=='x')
            {
                choix=8;
            }
        else if(tableau[5]=='o'&&tableau[2]!='x'&&tableau[2]!='o'&&tableau[4]=='x')
            {
                choix=2;
            }

        else if(tableau[0]==tableau[1]&&tableau[2]!='x'&&tableau[2]!='o')//00000000000000000000000000000000000000000000000000000000000
            choix=2;
        else if(tableau[0]==tableau[4]&&tableau[8]!='x'&&tableau[8]!='o')
            choix=8;
        else if(tableau[0]==tableau[3]&&tableau[6]!='x'&&tableau[6]!='o')
            choix=6;
        else if(tableau[1]==tableau[2]&&tableau[0]!='x'&&tableau[0]!='o')//111111111111111111111111111111111111111111111111111111
            choix=0;
        else if(tableau[1]==tableau[4]&&tableau[7]!='x'&&tableau[7]!='o')
            choix=7;
        else if(tableau[2]==tableau[4]&&tableau[6]!='x'&&tableau[6]!='o')//222222222222222222222222222222222222222222222222222222
            choix=6;
        else if(tableau[2]==tableau[5]&&tableau[8]!='x'&&tableau[8]!='o')
            choix=8;
        else if(tableau[3]==tableau[6]&&tableau[0]!='x'&&tableau[0]!='o')//33333333333333333333333333333333333333333333333333333333
            choix=0;
        else if(tableau[3]==tableau[4]&&tableau[5]!='x'&&tableau[5]!='o')
            choix=5;
        else if(tableau[4]==tableau[5]&&tableau[3]!='x'&&tableau[3]!='o')//44444444444444444444444444444444444444444444444444444
            choix=3;
        else if(tableau[4]==tableau[8]&&tableau[0]!='x'&&tableau[0]!='o')
            choix=0;
        else if(tableau[4]==tableau[6]&&tableau[2]!='x'&&tableau[2]!='o')
            choix=2;
        else if(tableau[4]==tableau[7]&&tableau[1]!='x'&&tableau[1]!='o')
            choix=1;
        else if(tableau[5]==tableau[8]&&tableau[2]!='x'&&tableau[2]!='o')//55555555555555555555555555555555555555555555555555555555
            choix=2;
        else if(tableau[6]==tableau[7]&&tableau[8]!='x'&&tableau[8]!='o')//66666666666666666666666666666666666666666666666666666
            choix=8;
        else if(tableau[7]==tableau[8]&&tableau[6]!='x'&&tableau[6]!='o')//777777777777777777777777777777777777777777777777777777
            choix=6;
        else if(tableau[0]==tableau[8]&&tableau[4]!='x'&&tableau[4]!='o')//partie 1 sur4
            choix=4;
        else if(tableau[0]==tableau[6]&&tableau[3]!='x'&&tableau[3]!='o')
            choix=3;
        else if(tableau[0]==tableau[2]&&tableau[1]!='x'&&tableau[1]!='o')
            choix=1;
        else if(tableau[1]==tableau[7]&&tableau[4]!='x'&&tableau[4]!='o')//parite 2 sur 4
            choix=4;
        else if(tableau[2]==tableau[8]&&tableau[5]!='x'&&tableau[5]!='o')//partie 3 sur 4
            choix=5;
        else if(tableau[2]==tableau[6]&&tableau[4]!='x'&&tableau[4]!='o')
            choix=4;
        else if(tableau[3]==tableau[5]&&tableau[4]!='x'&&tableau[4]!='o')
            choix=4;
        else if(tableau[6]==tableau[8]&&tableau[7]!='x'&&tableau[7]!='o')
            choix=7;
        else
            choix=rand()%(9);//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        if(tableau[choix]=='o'||tableau[choix]=='x'||tableau[choix]=='.')
        {
            z=1;
        }
        else
        {
            tableau[choix]='o';
        }
    }
    win=calcul(tableau,3);
    afficher(tableau);

    return win;
}

int IA2(char tableau[])
{
    int p=0;
    while(p<300000000)
    {
        p++;
    }
    int z=1;
    int choix;
    int win=0;
    while(z==1)
    {
        z=0;
        int choix=0;

        if(tableau[4]!='x'&&tableau[4]!='o')
            choix=4;

        /*ext*/else if(ouf2==1)
        /*ext*/{
        /*ext*/choix=3;
        /*ext*/ouf2++;
        /*ext*/}
        /*ext*/else if(tableau[4]=='o'&&tableau[0]=='a')
        /*ext*/{
        /*ext*/choix=0;
        /*ext*/}
        /*ext*/else if(tableau[0]=='x'&&tableau[1]=='b'&&tableau[2]=='c'&&tableau[3]=='d'&&tableau[4]=='o'&&tableau[5]=='f'&&tableau[6]=='g'&&tableau[7]=='h'&&tableau[8]=='o')
        /*ext*/{
        /*ext*/choix=6;
        /*ext*/ouf2++;
        /*ext*/}
        /*ext*/else if(tableau[0]=='x'&&tableau[1]=='b'&&tableau[2]=='o'&&tableau[3]=='d'&&tableau[4]=='o'&&tableau[5]=='f'&&tableau[6]=='g'&&tableau[7]=='h'&&tableau[8]=='i')
        /*ext*/{
        /*ext*/choix=6;
        /*ext*/ouf2++;
        /*ext*/}
        /*ext*/else if(tableau[0]=='x'&&tableau[1]=='b'&&tableau[2]=='c'&&tableau[3]=='d'&&tableau[4]=='o'&&tableau[5]=='f'&&tableau[6]=='o'&&tableau[7]=='h'&&tableau[8]=='i')
        /*ext*/{
        /*ext*/choix=2;
        /*ext*/}

        else if(tableau[1]=='o'&&tableau[2]!='x'&&tableau[2]!='o'&&tableau[4]=='x')
            {
                choix=2;
            }
        else if(tableau[3]=='o'&&tableau[0]!='x'&&tableau[0]!='o'&&tableau[4]=='x')
            {
                choix=0;
            }
        else if(tableau[7]=='o'&&tableau[8]!='x'&&tableau[8]!='o'&&tableau[4]=='x')
            {
                choix=8;
            }
        else if(tableau[5]=='o'&&tableau[2]!='x'&&tableau[2]!='o'&&tableau[4]=='x')
            {
                choix=2;
            }

        else if(tableau[0]==tableau[1]&&tableau[2]!='x'&&tableau[2]!='o')//00000000000000000000000000000000000000000000000000000000000
            choix=2;
        else if(tableau[0]==tableau[4]&&tableau[8]!='x'&&tableau[8]!='o')
            choix=8;
        else if(tableau[0]==tableau[3]&&tableau[6]!='x'&&tableau[6]!='o')
            choix=6;
        else if(tableau[1]==tableau[2]&&tableau[0]!='x'&&tableau[0]!='o')//111111111111111111111111111111111111111111111111111111
            choix=0;
        else if(tableau[1]==tableau[4]&&tableau[7]!='x'&&tableau[7]!='o')
            choix=7;
        else if(tableau[2]==tableau[4]&&tableau[6]!='x'&&tableau[6]!='o')//222222222222222222222222222222222222222222222222222222
            choix=6;
        else if(tableau[2]==tableau[5]&&tableau[8]!='x'&&tableau[8]!='o')
            choix=8;
        else if(tableau[3]==tableau[6]&&tableau[0]!='x'&&tableau[0]!='o')//33333333333333333333333333333333333333333333333333333333
            choix=0;
        else if(tableau[3]==tableau[4]&&tableau[5]!='x'&&tableau[5]!='o')
            choix=5;
        else if(tableau[4]==tableau[5]&&tableau[3]!='x'&&tableau[3]!='o')//44444444444444444444444444444444444444444444444444444
            choix=3;
        else if(tableau[4]==tableau[8]&&tableau[0]!='x'&&tableau[0]!='o')
            choix=0;
        else if(tableau[4]==tableau[6]&&tableau[2]!='x'&&tableau[2]!='o')
            choix=2;
        else if(tableau[4]==tableau[7]&&tableau[1]!='x'&&tableau[1]!='o')
            choix=1;
        else if(tableau[5]==tableau[8]&&tableau[2]!='x'&&tableau[2]!='o')//55555555555555555555555555555555555555555555555555555555
            choix=2;
        else if(tableau[6]==tableau[7]&&tableau[8]!='x'&&tableau[8]!='o')//66666666666666666666666666666666666666666666666666666
            choix=8;
        else if(tableau[7]==tableau[8]&&tableau[6]!='x'&&tableau[6]!='o')//777777777777777777777777777777777777777777777777777777
            choix=6;
        else if(tableau[0]==tableau[8]&&tableau[4]!='x'&&tableau[4]!='o')//partie 1 sur4
            choix=4;
        else if(tableau[0]==tableau[6]&&tableau[3]!='x'&&tableau[3]!='o')
            choix=3;
        else if(tableau[0]==tableau[2]&&tableau[1]!='x'&&tableau[1]!='o')
            choix=1;
        else if(tableau[1]==tableau[7]&&tableau[4]!='x'&&tableau[4]!='o')//parite 2 sur 4
            choix=4;
        else if(tableau[2]==tableau[8]&&tableau[5]!='x'&&tableau[5]!='o')//partie 3 sur 4
            choix=5;
        else if(tableau[2]==tableau[6]&&tableau[4]!='x'&&tableau[4]!='o')
            choix=4;
        else if(tableau[3]==tableau[5]&&tableau[4]!='x'&&tableau[4]!='o')
            choix=4;
        else if(tableau[6]==tableau[8]&&tableau[7]!='x'&&tableau[7]!='o')
            choix=7;
        else
            choix=rand()%(9);//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        if(tableau[choix]=='o'||tableau[choix]=='x'||tableau[choix]=='.')
        {
            z=1;
        }
        else
        {
            tableau[choix]='x';
        }
    }
    win=calcul(tableau,1);
    afficher(tableau);

    return win;
}