Colore caratteri ascii C Windows

di il
2 risposte

Colore caratteri ascii C Windows

Ciao a tutti, avendo tempo da perdere ho fatto un programmino in C che simula il gioco di forza 4.
Il programma è funzionante e se volete darci un occhiata giusto per curiosità ve lo allego:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#include <unistd.h>

#define TIME 10000 /* 0.1 secondi */
#define N 7
#define UT 1
#define PC 2

typedef struct{
    int flag;
    int row[N];
    int tab[N][N];
}Wrap;

int prof;
Wrap pack;

void Init(){
    int i,j;
    pack.flag=-1;
    for(i=0;i<N;i++)
        pack.row[i]=N-1;
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            pack.tab[i][j]=0;
}
void Remove(int c){
    pack.tab[++pack.row[c]][c]=0;
}
int Insert(int c,int val){
    if(c<0||c>=N||pack.row[c]<0)
        return 1;
    pack.tab[pack.row[c]--][c]=val;
    return 0;
}
void StampaTab(){
    int q=25,i,j;
    char legenda[3]={' ','O','X'};
    printf("\n\n                                  Forza 4\n"
           "                         %c   %c   %c   %c   %c   %c   %c\n"
           "                       +---+---+---+---+---+---+---+\n",q,q,q,q,q,q,q);
    for(i=0;i<N;i++){
        printf("                       ");
        for(j=0;j<N;j++)
           printf("| %c ",legenda[pack.tab[i][j]]);
        printf("|\n                       +---+---+---+---+---+---+---+\n");
    }
    printf("                         1   2   3   4   5   6   7\n");
}
void StampaTabGiocata(int c,int flag){
    int i=0,T=8,j;
    Remove(c);
    while(i<N-1&&pack.tab[i+1][c]==0){
        pack.tab[i][c]=flag;
        system("cls");
        StampaTab();
        for(j=0;j<T;j++)
            usleep(TIME);
        pack.tab[i++][c]=0;
        system("cls");
        StampaTab();
    }
    Insert(c,flag);
}
void Check(int c){
    int i,j,r=pack.row[c]+1,flag;
    for(i=0,flag=0;i<N;i++){
        if(pack.tab[r][i]==pack.tab[r][c])
            flag++;
        else
            flag=0;
        if(flag==4){
            pack.flag=pack.tab[r][c];
            return;
        }
    }
    for(i=0,flag=0;i<N;i++){
        if(pack.tab[i][c]==pack.tab[r][c])
            flag++;
        else
            flag=0;
        if(flag==4){
            pack.flag=pack.tab[r][c];
            return;
        }
    }
    for(i=r-3,j=c-3,flag=0;i<N&&j<N;i++,j++)
        if(i>=0&&j>=0){
            if(pack.tab[i][j]==pack.tab[r][c])
                flag++;
            else
                flag=0;
            if(flag==4){
                pack.flag=pack.tab[r][c];
                return;
            }
        }
    for(i=r-3,j=c+3,flag=0;i<N&&j>=0;i++,j--)
        if(i>=0&&j<N){
            if(pack.tab[i][j]==pack.tab[r][c])
                flag++;
            else
                flag=0;
            if(flag==4){
                pack.flag=pack.tab[r][c];
                return;
            }
        }
    for(i=0;i<N;i++)
        if(pack.row[i]!=-1)
            return;
    pack.flag=0;
}
void Esplora(int lv,int value,long long int *contUt,long long int *contPc){
    int flag,i;
    if(lv>=prof)
        return;
    if(value==UT)
        flag=PC;
    else
        flag=UT;
    for(i=0;i<N;i++){
        if(!Insert(i,value)){
            Check(i);
            if(pack.flag==UT){
                (*contUt)+=pow(7,prof-lv);
                pack.flag=-1;
                Remove(i);
            }
            else if(pack.flag==-1){
                Esplora(lv+1,flag,contUt,contPc);
                Remove(i);
            }
            else{
                (*contPc)+=pow(7,prof-lv);
                pack.flag=-1;
                Remove(i);
                return;
            }
        }
    }
}
int Intel(int flag){
    int i,c=0,aflag;
    long long int contUt,contPc,meglioUt,meglioPc;
    if(flag==UT){
        aflag=PC;
        meglioPc=LONG_LONG_MAX;
        meglioUt=LONG_LONG_MIN;
    }
    else{
        aflag=UT;
        meglioUt=LONG_LONG_MAX;
        meglioPc=LONG_LONG_MIN;
    }
    for(i=0;i<N;i++)
        if(!Insert(i,flag)){
            contUt=0;
            contPc=0;
            Check(i);
            if(pack.flag==flag){
                Remove(i);
                pack.flag=-1;
                return i;
            }
            pack.flag=-1;
            Esplora(0,aflag,&contUt,&contPc);
            if((flag==PC&&(contUt<meglioUt||(contUt==meglioUt&&contPc>meglioPc)))||(flag==UT&&(contPc<meglioPc||(contPc==meglioPc&&contUt>meglioUt)))){
                meglioUt=contUt;
                meglioPc=contPc;
                c=i;
            }
            Remove(i);
        }
    return c;
}
int StampaSchermataPrincipale(){
    char a[10];
    int i;
    do{
        system("cls");
        printf("                                                                       By Nanni \n\n"
               "                               Benvenuto!! A Forza 4\n"
               "                       +-----------------------------------+\n"
               "                       |                                   |\n"
               "                       |                                   |\n"
               "                       |    1. Nuova Partita               |\n"
               "                       |                                   |\n"
               "                       |                                   |\n"
               "                       |    2. Modalita' gioco             |\n"
               "                       |                                   |\n"
               "                       |                                   |\n"
               "                       |    3. Istruzioni                  |\n"
               "                       |                                   |\n"
               "                       |                                   |\n"
               "                       |    4. Esci                        |\n"
               "                       |                                   |\n"
               "                       |                                   |\n"
               "                       +-----------------------------------+\n\n"
               "                              Elemento scelto: ");
        scanf("%s",a);
        i=atoi(a);
    }while(i<1||i>4);
    return i;
}
void StampaIstruzioni(){
    system("cls");
    printf("\n                                Istruzioni!\n"
           "              +----------------------------------------------------+\n"
           "              |  1.Lo scopo del gioco e' riuscire ad allineare     |\n"
           "              |                                                    |\n"
           "              |  quattro pedine dello stessa forma O per l'utente  |\n"
           "              |                                                    |\n"
           "              |  e X per il calcolatore, nella scacchiera di gioco |\n"
           "              |                                                    |\n"
           "              |  sia in verticale, orizzontale o obliquo.          |\n"
           "              |                                                    |\n"
           "              |  2.Vince la partita chi allinea per primo in       |\n"
           "              |                                                    |\n"
           "              |  orizzontale, verticale o obliquo quattro pedine   |\n"
           "              |                                                    |\n"
           "              |  della stessa forma.                               |\n"
           "              |                                                    |\n"
           "              |  3.Nel caso nessuno dei due partecipanti al gioco  |\n"
           "              |                                                    |\n"
           "              |  riuscisse a fare (quattro) la partita finisce     |\n"
           "              |                                                    |\n"
           "              |  in parita' e se ne comincia un'altra.             |\n"
           "              +----------------------------------------------------+\n\n"
           "Per tornare al menu' principale premere un tasto qualsiasi !! ");
    getch();
}
int ImpostaModalita(){
    int i;
    char a[10];
    do{
        system("cls");
        printf("\n\n\n                              Impostazioni modalita' \n"
               "                       +-----------------------------------+\n"
               "                       |                                   |\n"
               "                       |    1. Utente VS Utente            |\n"
               "                       |                                   |\n"
               "                       |    2. Utente VS Pc                |\n"
               "                       |                                   |\n"
               "                       |    3. Pc VS Pc                    |\n"
               "                       |                                   |\n"
               "                       +-----------------------------------+\n\n"
               "                              Elemento scelto: ");
        scanf("%s",a);
        i=atoi(a);
    }while(i<1||i>3);
    return i;
}
int ImpostaDifficolta(){
    char a[10];
    int i;
    do{
        system("cls");
        printf("\n\n\n                              Impostazione difficolta'\n"
               "                       +-----------------------------------+\n"
               "                       |                                   |\n"
               "                       |    1. Facile                      |\n"
               "                       |                                   |\n"
               "                       |    2. Medio                       |\n"
               "                       |                                   |\n"
               "                       |    3. Difficile                   |\n"
               "                       |                                   |\n"
               "                       +-----------------------------------+\n\n"
               "                              Elemento scelto: ");
        scanf("%s",a);
        i=atoi(a);
    }while(i<1||i>3);
    return i;
}
void ModeUtUt(){
    char gioc[2][80],a[10];
    int flag,c,aflag;
    system("cls");
    printf("Nome del primo giocatore: ");
    scanf("%s",gioc[0]);
    printf("Nome del secondo giocatore: ");
    scanf("%s",gioc[1]);
    flag=rand()%2;
    if(flag)
        aflag=0;
    else
        aflag=1;
    while(1){
        system("cls");
        StampaTab();
        do{
            printf("%s inserisci colonna: ",gioc[flag]);
            scanf("%s",a);
            c=atoi(a)-1;
        }while(Insert(c,UT));
        StampaTabGiocata(c,UT);
        Check(c);
        if(pack.flag!=-1)
            break;
        system("cls");
        StampaTab();
        do{
            printf("%s inserisci colonna: ",gioc[aflag]);
            scanf("%s",a);
            c=atoi(a)-1;
        }while(Insert(c,PC));
        StampaTabGiocata(c,PC);
        Check(c);
        if(pack.flag!=-1)
            break;
    }
    system("cls");
    StampaTab();
    switch(pack.flag){
        case 1:
            printf("Il vincitore e': %s.\n\n",gioc[flag]);
            break;
        case 2:
            printf("Il vincitore e': %s.\n\n",gioc[aflag]);
            break;
        default:
            printf("Pareggio.\n\n");
            break;

    }
    printf("Premere un tasto qualsiasi per tornare al menu' principale !!");
    getch();
}
void ModeUtPc(int diff){
    char gioc[80],a[10];
    int flag,c;
    prof=diff*2;
    system("cls");
    printf("Nome del giocatore: ");
    scanf("%s",gioc);
    flag=rand()%2+1;
    while(1){
        system("cls");
        StampaTab();
        if(flag==UT){
            do{
                printf("%s inserisci colonna: ",gioc);
                scanf("%s",a);
                c=atoi(a)-1;
            }while(Insert(c,UT));
            StampaTabGiocata(c,UT);
        }
        else {
            if(Insert(c=Intel(PC),PC)){
                printf("Errore fatale.\n");
                system("PAUSE");
                return;
            }
            StampaTabGiocata(c,PC);
        }
        Check(c);
        if(pack.flag!=-1)
            break;
        system("cls");
        StampaTab();
        if(flag==PC){
            do{
                printf("%s inserisci colonna: ",gioc);
                scanf("%s",a);
                c=atoi(a)-1;
            }while(Insert(c,UT));
            StampaTabGiocata(c,UT);
        }
        else {
            if(Insert(c=Intel(PC),PC)){
                printf("Errore fatale.\n");
                system("PAUSE");
                return;
            }
            StampaTabGiocata(c,PC);
        }
        Check(c);
        if(pack.flag!=-1)
            break;
    }
    system("cls");
    StampaTab();
    switch(pack.flag){
        case UT:
            printf("Il vincitore e': %s.\n\n",gioc);
            break;
        case PC:
            printf("Il vincitore e': Computer.\n\n");
            break;
        default:
            printf("Pareggio.\n\n");
            break;

    }
    printf("Premere un tasto qualsiasi per tornare al menu' principale !!");
    getch();
}
void ModePcPc(int diff1,int diff2){
    int c;
    diff1=diff1*2;
    diff2=diff2*2;
    while(1){
        system("cls");
        StampaTab();
        prof=diff1;
        if(Insert(c=Intel(UT),UT)){
            printf("Errore fatale.\n");
            system("PAUSE");
            return;
        }
        StampaTabGiocata(c,UT);
        Check(c);
        if(pack.flag!=-1)
            break;
        system("cls");
        StampaTab();
        prof=diff2;
        if(Insert(c=Intel(PC),PC)){
            printf("Errore fatale.\n");
            system("PAUSE");
            return;
        }
        StampaTabGiocata(c,PC);
        Check(c);
        if(pack.flag!=-1)
            break;
    }
    system("cls");
    StampaTab();
    if(diff1==diff2){
        switch(pack.flag){
            case 1:
                printf("Il vincitore e' il primo giocatore.\n\n");
                break;
            case 2:
                printf("Il vincitore e'il secondo giocatore.\n\n");
                break;
            default:
                printf("Pareggio.\n\n");
                break;
        }
    }
    else
        switch(pack.flag){
            case 1:
                printf("Il vincitore e' difficolta' %d.\n\n",diff1/2);
                break;
            case 2:
                printf("Il vincitore e': difficolta' %d.\n\n",diff2/2);
                break;
            default:
                printf("Pareggio.\n\n");
                break;
        }
    printf("Premere un tasto qualsiasi per tornare al menu' principale !!");
    getch();
}

int main(){
    int flag,mode=0;
    srand(time(NULL));
    while(1){
        flag=StampaSchermataPrincipale();
        switch(flag){
            case 1:
                if(!mode)
                    mode=ImpostaModalita();
                Init();
                switch(mode){
                    case 1:
                        ModeUtUt();
                        break;
                    case 2:
                        ModeUtPc(ImpostaDifficolta());
                        break;
                    case 3:
                        ModePcPc(ImpostaDifficolta(),ImpostaDifficolta());
                        break;
                }
                mode=0;
                break;
            case 2:
                mode=ImpostaModalita();
                break;
            case 3:
                StampaIstruzioni();
                break;
            case 4:
                return 0;
        }
    }
    return 0;
}
La mia domanda è: per poterlo rendere più comprensibile e carino sarebbe possibile cambiale il colore dei caratteri ('O','X') ? "che sarebbero le pedine del gioco".
Utilizzo codeblocks e sistema operativo windows.... non so magari con qualche libreria windows ?? non ho necessità di portabilità.
Grazie

2 Risposte

  • Re: Colore caratteri ascii C Windows

    Puoi usare le API per la gestione della Console. Sono su MSDN
  • Re: Colore caratteri ascii C Windows

    Grazie mille Oregon!!!
    Vi allego la soluzione.
    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    #include <math.h>
    #include <time.h>
    #include <conio.h>
    #include <unistd.h>
    #include <windows.h>
    #include <string.h>
    
    #define TIME 90000
    #define N 7
    #define UT 1
    #define PC 2
    
    typedef struct{
        int flag;
        int row[N];
        int tab[N][N];
    }Wrap;
    
    int prof;
    Wrap pack;
    
    void Init(){
        int i,j;
        pack.flag=-1;
        for(i=0;i<N;i++)
            pack.row[i]=N-1;
        for(i=0;i<N;i++)
            for(j=0;j<N;j++)
                pack.tab[i][j]=0;
    }
    void Remove(int c){
        pack.tab[++pack.row[c]][c]=0;
    }
    int Insert(int c,int val){
        if(c<0||c>=N||pack.row[c]<0)
            return 1;
        pack.tab[pack.row[c]--][c]=val;
        return 0;
    }
    void StampaTab(int tab[][N]){
        int q=25,i,j;
        char legenda[3]={' ','O','X'};
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        CONSOLE_SCREEN_BUFFER_INFO consoleInfo;
        WORD saved_attributes;
        /*Salva attributi correnti*/
        GetConsoleScreenBufferInfo(hConsole, &consoleInfo);
        saved_attributes = consoleInfo.wAttributes;
        printf("\n\n                                  Forza 4\n"
               "                         %c   %c   %c   %c   %c   %c   %c\n"
               "                       +---+---+---+---+---+---+---+\n",q,q,q,q,q,q,q);
        for(i=0;i<N;i++){
            printf("                       ");
            for(j=0;j<N;j++){
                printf("| ");
                if(tab[i][j]==1)
                    SetConsoleTextAttribute(hConsole, FOREGROUND_RED);
                else if(tab[i][j]==2)
                    SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN);
                printf("%c ",legenda[tab[i][j]]);
                SetConsoleTextAttribute(hConsole, saved_attributes);
            }
            printf("|\n                       +---+---+---+---+---+---+---+\n");
        }
        printf("                         1   2   3   4   5   6   7\n");
    }
    void StampaTabGiocata(int c,int flag){
        int i=0,v[N][N][N],x,y;
        Remove(c);
        while(i<N-1&&pack.tab[i+1][c]==0){
            pack.tab[i][c]=flag;
            for(x=0;x<N;x++)
                for(y=0;y<N;y++)
                    v[i][x][y]=pack.tab[x][y];
            pack.tab[i++][c]=0;
        }
        for(x=0;x<i;x++){
            system("cls");
            StampaTab(v[x]);
            usleep(TIME);
        }
        Insert(c,flag);
    }
    void Check(int c){
        int i,j,r=pack.row[c]+1,flag;
        for(i=0,flag=0;i<N;i++){
            if(pack.tab[r][i]==pack.tab[r][c])
                flag++;
            else
                flag=0;
            if(flag==4){
                pack.flag=pack.tab[r][c];
                return;
            }
        }
        for(i=0,flag=0;i<N;i++){
            if(pack.tab[i][c]==pack.tab[r][c])
                flag++;
            else
                flag=0;
            if(flag==4){
                pack.flag=pack.tab[r][c];
                return;
            }
        }
        for(i=r-3,j=c-3,flag=0;i<N&&j<N;i++,j++)
            if(i>=0&&j>=0){
                if(pack.tab[i][j]==pack.tab[r][c])
                    flag++;
                else
                    flag=0;
                if(flag==4){
                    pack.flag=pack.tab[r][c];
                    return;
                }
            }
        for(i=r-3,j=c+3,flag=0;i<N&&j>=0;i++,j--)
            if(i>=0&&j<N){
                if(pack.tab[i][j]==pack.tab[r][c])
                    flag++;
                else
                    flag=0;
                if(flag==4){
                    pack.flag=pack.tab[r][c];
                    return;
                }
            }
        for(i=0;i<N;i++)
            if(pack.row[i]!=-1)
                return;
        pack.flag=0;
    }
    void Esplora(int lv,int value,long long int *contUt,long long int *contPc){
        int flag,i;
        if(lv>=prof)
            return;
        if(value==UT)
            flag=PC;
        else
            flag=UT;
        for(i=0;i<N;i++){
            if(!Insert(i,value)){
                Check(i);
                if(pack.flag==UT){
                    (*contUt)+=pow(7,prof-lv);
                    pack.flag=-1;
                    Remove(i);
                }
                else if(pack.flag==-1){
                    Esplora(lv+1,flag,contUt,contPc);
                    Remove(i);
                }
                else{
                    (*contPc)+=pow(7,prof-lv);
                    pack.flag=-1;
                    Remove(i);
                    return;
                }
            }
        }
    }
    int Intel(int flag){
        int i,c=0,aflag;
        long long int contUt,contPc,meglioUt,meglioPc;
        if(flag==UT){
            aflag=PC;
            meglioPc=LONG_LONG_MAX;
            meglioUt=LONG_LONG_MIN;
        }
        else{
            aflag=UT;
            meglioUt=LONG_LONG_MAX;
            meglioPc=LONG_LONG_MIN;
        }
        for(i=0;i<N;i++)
            if(!Insert(i,flag)){
                contUt=0;
                contPc=0;
                Check(i);
                if(pack.flag==flag){
                    Remove(i);
                    pack.flag=-1;
                    return i;
                }
                pack.flag=-1;
                Esplora(0,aflag,&contUt,&contPc);
                if((flag==PC&&(contUt<meglioUt||(contUt==meglioUt&&contPc>meglioPc)))||(flag==UT&&(contPc<meglioPc||(contPc==meglioPc&&contUt>meglioUt)))){
                    meglioUt=contUt;
                    meglioPc=contPc;
                    c=i;
                }
                Remove(i);
            }
        return c;
    }
    int StampaSchermataPrincipale(){
        char a[10];
        int i;
        do{
            system("cls");
            printf("                                                                       By Nanni \n\n"
                   "                               Benvenuto!! A Forza 4\n"
                   "                       +-----------------------------------+\n"
                   "                       |                                   |\n"
                   "                       |                                   |\n"
                   "                       |    1. Nuova Partita               |\n"
                   "                       |                                   |\n"
                   "                       |                                   |\n"
                   "                       |    2. Modalita' gioco             |\n"
                   "                       |                                   |\n"
                   "                       |                                   |\n"
                   "                       |    3. Istruzioni                  |\n"
                   "                       |                                   |\n"
                   "                       |                                   |\n"
                   "                       |    4. Esci                        |\n"
                   "                       |                                   |\n"
                   "                       |                                   |\n"
                   "                       +-----------------------------------+\n\n"
                   "                              Elemento scelto: ");
            scanf("%s",a);
            i=atoi(a);
        }while(i<1||i>4);
        return i;
    }
    void StampaIstruzioni(){
        system("cls");
        printf("\n                                Istruzioni!\n"
               "              +----------------------------------------------------+\n"
               "              |  1.Lo scopo del gioco e' riuscire ad allineare     |\n"
               "              |                                                    |\n"
               "              |  quattro pedine dello stessa forma O per l'utente  |\n"
               "              |                                                    |\n"
               "              |  e X per il calcolatore, nella scacchiera di gioco |\n"
               "              |                                                    |\n"
               "              |  sia in verticale, orizzontale o obliquo.          |\n"
               "              |                                                    |\n"
               "              |  2.Vince la partita chi allinea per primo in       |\n"
               "              |                                                    |\n"
               "              |  orizzontale, verticale o obliquo quattro pedine   |\n"
               "              |                                                    |\n"
               "              |  della stessa forma.                               |\n"
               "              |                                                    |\n"
               "              |  3.Nel caso nessuno dei due partecipanti al gioco  |\n"
               "              |                                                    |\n"
               "              |  riuscisse a fare (quattro) la partita finisce     |\n"
               "              |                                                    |\n"
               "              |  in parita' e se ne comincia un'altra.             |\n"
               "              +----------------------------------------------------+\n\n"
               "Per tornare al menu' principale premere un tasto qualsiasi !! ");
        getch();
    }
    int ImpostaModalita(){
        int i;
        char a[10];
        do{
            system("cls");
            printf("\n\n\n                              Impostazioni modalita' \n"
                   "                       +-----------------------------------+\n"
                   "                       |                                   |\n"
                   "                       |    1. Utente VS Utente            |\n"
                   "                       |                                   |\n"
                   "                       |    2. Utente VS Pc                |\n"
                   "                       |                                   |\n"
                   "                       |    3. Pc VS Pc                    |\n"
                   "                       |                                   |\n"
                   "                       +-----------------------------------+\n\n"
                   "                              Elemento scelto: ");
            scanf("%s",a);
            i=atoi(a);
        }while(i<1||i>3);
        return i;
    }
    int ImpostaDifficolta(){
        char a[10];
        int i;
        do{
            system("cls");
            printf("\n\n\n                              Impostazione difficolta'\n"
                   "                       +-----------------------------------+\n"
                   "                       |                                   |\n"
                   "                       |    1. Facile                      |\n"
                   "                       |                                   |\n"
                   "                       |    2. Medio                       |\n"
                   "                       |                                   |\n"
                   "                       |    3. Difficile                   |\n"
                   "                       |                                   |\n"
                   "                       |    4. Estremo                     |\n"
                   "                       |                                   |\n"
                   "                       +-----------------------------------+\n\n"
                   "                              Elemento scelto: ");
            scanf("%s",a);
            i=atoi(a);
        }while(i<1||i>4);
        return i;
    }
    void ModeUtUt(){
        char gioc[2][80],a[10];
        int flag,c,aflag;
        system("cls");
        printf("Nome del primo giocatore: ");
        scanf("%s",gioc[0]);
        printf("Nome del secondo giocatore: ");
        scanf("%s",gioc[1]);
        flag=rand()%2;
        if(flag)
            aflag=0;
        else
            aflag=1;
        while(1){
            system("cls");
            StampaTab(pack.tab);
            do{
                printf("%s inserisci colonna: ",gioc[flag]);
                scanf("%s",a);
                if(strcmp(a,"exit")==0)
                    return;
                c=atoi(a)-1;
            }while(Insert(c,UT));
            StampaTabGiocata(c,UT);
            Check(c);
            if(pack.flag!=-1)
                break;
            system("cls");
            StampaTab(pack.tab);
            do{
                printf("%s inserisci colonna: ",gioc[aflag]);
                scanf("%s",a);
                if(strcmp(a,"exit")==0)
                    return;
                c=atoi(a)-1;
            }while(Insert(c,PC));
            StampaTabGiocata(c,PC);
            Check(c);
            if(pack.flag!=-1)
                break;
        }
        system("cls");
        StampaTab(pack.tab);
        switch(pack.flag){
            case 1:
                printf("Il vincitore e': %s.\n\n",gioc[flag]);
                break;
            case 2:
                printf("Il vincitore e': %s.\n\n",gioc[aflag]);
                break;
            default:
                printf("Pareggio.\n\n");
                break;
    
        }
        printf("Premere un tasto qualsiasi per tornare al menu' principale !!");
        getch();
    }
    void ModeUtPc(int diff){
        char gioc[80],a[10];
        int flag,c;
        prof=diff*2;
        system("cls");
        printf("Nome del giocatore: ");
        scanf("%s",gioc);
        flag=rand()%2+1;
        while(1){
            system("cls");
            StampaTab(pack.tab);
            if(flag==UT){
                do{
                    printf("%s inserisci colonna: ",gioc);
                    scanf("%s",a);
                    if(strcmp(a,"exit")==0)
                        return;
                    c=atoi(a)-1;
                }while(Insert(c,UT));
                StampaTabGiocata(c,UT);
            }
            else {
                printf("Loading...");
                if(Insert(c=Intel(PC),PC)){
                    printf("Errore fatale.\n");
                    system("PAUSE");
                    return;
                }
                StampaTabGiocata(c,PC);
            }
            Check(c);
            if(pack.flag!=-1)
                break;
            system("cls");
            StampaTab(pack.tab);
            if(flag==PC){
                do{
                    printf("%s inserisci colonna: ",gioc);
                    scanf("%s",a);
                    if(strcmp(a,"exit")==0)
                        return;
                    c=atoi(a)-1;
                }while(Insert(c,UT));
                StampaTabGiocata(c,UT);
            }
            else{
                printf("Loading...");
                if(Insert(c=Intel(PC),PC)){
                    printf("Errore fatale.\n");
                    system("PAUSE");
                    return;
                }
                StampaTabGiocata(c,PC);
            }
            Check(c);
            if(pack.flag!=-1)
                break;
        }
        system("cls");
        StampaTab(pack.tab);
        switch(pack.flag){
            case UT:
                printf("Il vincitore e': %s.\n\n",gioc);
                break;
            case PC:
                printf("Il vincitore e': Computer.\n\n");
                break;
            default:
                printf("Pareggio.\n\n");
                break;
    
        }
        printf("Premere un tasto qualsiasi per tornare al menu' principale !!");
        getch();
    }
    void ModePcPc(int diff1,int diff2){
        int c;
        diff1=diff1*2;
        diff2=diff2*2;
        while(1){
            system("cls");
            StampaTab(pack.tab);
            prof=diff1;
            printf("Loading...");
            if(Insert(c=Intel(UT),UT)){
                printf("Errore fatale.\n");
                system("PAUSE");
                return;
            }
            StampaTabGiocata(c,UT);
            Check(c);
            if(pack.flag!=-1)
                break;
            system("cls");
            StampaTab(pack.tab);
            prof=diff2;
            printf("Loading...");
            if(Insert(c=Intel(PC),PC)){
                printf("Errore fatale.\n");
                system("PAUSE");
                return;
            }
            StampaTabGiocata(c,PC);
            Check(c);
            if(pack.flag!=-1)
                break;
        }
        system("cls");
        StampaTab(pack.tab);
        if(diff1==diff2){
            switch(pack.flag){
                case 1:
                    printf("Il vincitore e' il primo giocatore.\n\n");
                    break;
                case 2:
                    printf("Il vincitore e'il secondo giocatore.\n\n");
                    break;
                default:
                    printf("Pareggio.\n\n");
                    break;
            }
        }
        else
            switch(pack.flag){
                case 1:
                    printf("Il vincitore e' difficolta' %d.\n\n",diff1/2);
                    break;
                case 2:
                    printf("Il vincitore e': difficolta' %d.\n\n",diff2/2);
                    break;
                default:
                    printf("Pareggio.\n\n");
                    break;
            }
        printf("Premere un tasto qualsiasi per tornare al menu' principale !!");
        getch();
    }
    
    int main(){
        int flag,mode=0;
        srand(time(NULL));
        while(1){
            flag=StampaSchermataPrincipale();
            switch(flag){
                case 1:
                    if(!mode)
                        mode=ImpostaModalita();
                    Init();
                    switch(mode){
                        case 1:
                            ModeUtUt();
                            break;
                        case 2:
                            ModeUtPc(ImpostaDifficolta());
                            break;
                        case 3:
                            ModePcPc(ImpostaDifficolta(),ImpostaDifficolta());
                            break;
                    }
                    mode=0;
                    break;
                case 2:
                    mode=ImpostaModalita();
                    break;
                case 3:
                    StampaIstruzioni();
                    break;
                case 4:
                    return 0;
            }
        }
        return 0;
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte