[C con Clase] juego 4 en linea

Luis Enrique Rojas Desales a_cracia_ en hotmail.com
Dom Mayo 18 21:59:12 CEST 2008


hola miren tengo un problema con este juego de 4 en linea el problema es que me falta evaluar si gano en direccion diagonal de derecha a izquierda lo intente acer decrementando los rangos de valor como si estuviera evaluadno las diagonasles de izquierda a derecha pero no me da si lo ago de esa manera se cicla espero me puedan ayudar 
desde ya gracias


#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int tablero[6][7];
int indice[2];
int ctr,lineas,a;
int f=0,c=0;
int h1=0,h2=0,n=0,d1=0;
int ctrplayer=1;
//
//
//
int main(int argc, char** argv) {
textbackground(1);
    for (f=0;f<6;f++) {
        for (c=0;c<7;c++) {
            tablero[f][c]='-';
        }
    }
    for (c=0;c<7;c++) {
        tablero[5][c]='_';
    }
    for (ctr=0;ctr<42;) {
clrscr();
        printf("\n\n\n\n\n\n");
        cprintf("     0  1  2  3  4  5  6");
        for (f=0;f<6;f++) {
            printf("   \n   ");
            textbackground(1);
            cprintf("\n%d", f);
            textbackground(1);
            for (c=0;c<7;c++) {
                cprintf(" %c ", tablero[f][c]);
                textbackground(1);
            }
        }
        printf("\n\n turno fichas %c. Introduce el indice del tiro (fil):",ctrplayer);
        scanf("%d",& indice[0]);
        printf("\n\n turno fichas %c. Introduce el indice del tiro (col):",ctrplayer);
        scanf("%d",& indice[1]);
        f=indice[0];
        c=indice[1];
        if (ctrplayer==1) {
            if (tablero[f][c]=='_') {
                tablero[f][c]=1;
                ctr++;
                ctrplayer++;
                tablero [--f][c]='_';
                ++f;
                n=0;
                /*Filtro para las verticales*/
                for (n=0;n<5;) {
                    if (tablero[n][c]==1) {
                        if (tablero[++n][c]==1) {
                            if (tablero[++n][c]==1) {
                                if (tablero[++n][c]==1) {
                                    h1=1;
                                }
                            }
                        }
                    }
                else n++;
                }
                /*filtro para horizontales*/
                for (n=0;n<6;) {
                    if (tablero[f][n]==1) {
                        if (tablero[f][++n]==1) {
                            if (tablero[f][++n]==1) {
                                if (tablero[f][++n]==1) {
                                    h1=1;
                                }
                            }
                        }
                    }
                    else n++;
                }
                /*Filtro para las diagonales / fila5*/
                for (n=0;n<4;) {
                    if (tablero[5][n]==1) {
                        if (tablero[4][++n]==1) {
                            if (tablero[3][++n]==1) {
                                if (tablero[2][++n]==1) {
                                    h1=1;
                                }
                            }
                        }
                    }
                    else n++;
                }/*Filtro para las diagonales / fila 4*/
                for (n=0;n<4;) {
                    if (tablero[4][n]==1) {
                        if (tablero[3][++n]==1) {
                            if (tablero[2][++n]==1) {
                                if (tablero[1][++n]==1) {
                                    h1=1;
                                }
                            }
                        }
                    }
                    else n++;
                }/*Filtro para las diagonales / fila 3*/
                for (n=0;n<4;) {
                    if (tablero[3][n]==1) {
                        if (tablero[2][++n]==1) {
                            if (tablero[1][++n]==1) {
                                if (tablero[0][++n]==1) {
                                    h1=1;
                                }
                            }
                        }
                    }
                    else n++;
                }
                /*Filtro para las diagonales \ fila 3*/
                for (n=0;n<4;) {
                    if (tablero[5][n--]==1) {
                        if (tablero[4][n--]==1) {
                            if (tablero[3][n--]==1) {
                                if (tablero[2][n--]==1) {
                                    d1=1;
                                }
                            }
                        }
                    }
                    else n++;
                }

                if (h1==1 || d1=1) {
clrscr();
                    for (f=0;f<6;f++) {
                        printf("\n \n");
                        for (c=0;c<7;c++) {
                            cprintf(" %c ", tablero[f][c]);
                            textbackground(1);
                        }
                    }
                    printf("\n \n Fichas Negras Ganan");
getch();
                    return 0;
                }
            }
            else if (tablero [f][c]==1 || tablero [f][c]==2) {
                printf(" \n La localidad ya ha sido ocupada \n");
getch();
            }
            else if (tablero [f][c]=='-') {
                printf("\n La localidad esta desactivada \n");
getch();
            }
        }
        else if (ctrplayer==2)
        {
            if (tablero[f][c]=='_') {
                tablero[f][c]=2;
                ctr++;
                ctrplayer--;
                tablero [--f][c]='_';
                ++f;
                n=0;
                /*Filtro para las verticales*/
                for (n=0;n<5;) {
                    if (tablero[n][c]==2) {
                        if (tablero[++n][c]==2) {
                            if (tablero[++n][c]==2) {
                                if (tablero[++n][c]==2) {
                                    h2=1;
                                }
                            }
                        }
                    }
                    else n++;
                }
                /*filtro para horizontales*/
                for (n=0;n<6;) {
                    if (tablero[f][n]==2) {
                        if (tablero[f][++n]==2) {
                            if (tablero[f][++n]==2) {
                                if (tablero[f][++n]==2) {
                                    h2=1;
                                }
                            }
                        }
                    }
                    else n++;
                }
                /*Filtro para las diagonales / fila5*/
                for (n=0;n<4;) {
                    if (tablero[5][n]==2) {
                        if (tablero[4][++n]==2) {
                            if (tablero[3][++n]==2) {
                                if (tablero[2][++n]==2) {
                                    h2=1;
                                }
                            }
                        }
                    }
                    else n++;
                }/*Filtro para las diagonales / fila 4*/
                for (n=0;n<4;) {
                    if (tablero[4][n]==2) {
                        if (tablero[3][++n]==2) {
                            if (tablero[2][++n]==2) {
                                if (tablero[1][++n]==2) {
                                    h2=1;
                                }
                            }
                        }
                    }
                    else n++;
                }/*Filtro para las diagonales / fila 3*/
                for (n=0;n<4;) {
                    if (tablero[3][n]==2) {
                        if (tablero[2][++n]==2) {
                            if (tablero[1][++n]==2) {
                                if (tablero[0][++n]==2) {
                                    h2=1;
                                }
                            }
                        }
                    }
                    else n++;
                }
                if (h2==1) {
clrscr();
                    for (f=0;f<6;f++) {
                        printf("\n \n");
                        for (c=0;c<7;c++) {
                            cprintf(" %c ", tablero[f][c]);
                            textbackground(1);
                        }
                    }
                    printf("\n \n Fichas Blancas Ganan");
                    break;

                }
            }
            else if (tablero [f][c]==1 || tablero [f][c]==2) {
                printf(" \n La localidad ya ha sido ocupada \n");
getch();
            }
            else if (tablero [f][c]=='-') {
                printf("\n La localidad esta desactivada \n");
getch();
            }
        }
    }
getch();
    return 0;
}


_________________________________________________________________
Los mejores conciertos en exclusiva por MSN in concert
http://video.msn.com/?mkt=es-mx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080518/6e2f2629/attachment.html>


Más información sobre la lista de distribución Cconclase