Ver Mensaje Individual
  #3  
Antiguo 11-10-2011
WhiteJack WhiteJack is offline
Registrado
NULL
 
Registrado: ago 2011
Posts: 7
Reputación: 0
WhiteJack Va por buen camino
Hola, seriea algo asi pero no es 25 en raya sino 5, pero queda en un ciclo infinito!

Código PHP:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <iostream>
using namespace std;
#define GRANDE 100;

#define MAX 1
#define MIN 2

#define NADIE '-'
#define JUGADOR 'O'
#define COMPUTADOR 'X'

//---------------------------------------------------------------------------

#pragma argsused

void impTablero(void);
int bt(int);
int eval(void);

char t[][5]={
{
NADIE,NADIE,NADIE,NADIE,NADIE},
{
NADIE,NADIE,NADIE,NADIE,NADIE},
{
NADIE,NADIE,NADIE,NADIE,NADIE},
{
NADIE,NADIE,NADIE,NADIE,NADIE},
{
NADIE,NADIE,NADIE,NADIE,NADIE}
};
int mejorFila,mejorCol;
int profundida;

int main(int argccharargv[]){
    
int f,c,ganador;
        
mejorFila=0;
        
mejorCol=0;
        
profundida=0;
    
impTablero();
    do{
        do{
            
cout << "Su Turno:" << endl;
            
cout << "Fila? "cin >> f;
            
cout << "Columna? "cin >> c;
        }while((
f<0||f>=|| c<|| c>=5)||t[f][c]!=NADIE);
        
t[f][c]=JUGADOR;
        
impTablero();
        
bt(MAX);
        
cout << "Computador:" << endl;
        
cout << "Fila: " << mejorFila << endl;
        
cout << "Columna: " << mejorCol << endl;
        
t[mejorFila][mejorCol]=COMPUTADOR;
        
impTablero();
        
ganador=eval();
                
profundida=0;
    }while(
ganador==2);

    if(
ganador==-1cout << "***Ud. Gana***";
    else if(
ganador==1cout << "***Computador gana***";
    else 
cout << "***Empate!***";
    
cout << endl;
        
system("pause");
        return 
0;
}

int bt(int modo){
    
int i,j,val,mfLocal=0,mcLocal=0;
        
int valor=eval();
    if(
valor!=2){
                return 
valor;
        }
    if(
modo==MAX){
                
valor=-GRANDE;
    }else{
                
valor=GRANDE;
        }

    for(
i=0;i<5;i++){
        for(
j=0;j<5;j++){
            if(
t[i][j]==NADIE){
                if(
modo==MAX){
                    
t[i][j]=COMPUTADOR;
                    
val=bt(MIN);
                    if(
valor<val){
                        
valor=val;
                        
mfLocal=i;
                        
mcLocal=j;
                    }
                }else{
                    
t[i][j]=JUGADOR;
                    
val=bt(MAX);
                    if(
valor>val){
                        
valor=val;
                        
mfLocal=i;
                        
mcLocal=j;
                    }
                }
                                
t[i][j]=NADIE;
            }
                }
        }
    
mejorFila=mfLocal;
    
mejorCol=mcLocal;
    return 
valor;
}

int eval(void){
        
profundida++;
    
int i,j,ganador=NADIE;
    for(
i=0;i<5;i++)
        if(
t[i][0]!=NADIE && t[i][0]==t[i][1] && t[i][1]==t[i][2] && t[i][2]==t[i][3] && t[i][3]==t[i][4])
            
ganador=t[i][0];

    for(
j=0;j<5;j++)
        if(
t[0][j]!=NADIE && t[0][j]==t[1][j] && t[1][j]==t[2][j] && t[2][j]==t[3][j] && t[3][j]==t[4][j])
            
ganador=t[0][j];

    if(
t[0][0]!=NADIE && t[0][0]==t[1][1] && t[1][1]==t[2][2] && t[2][2]==t[3][3] && t[3][3]==t[4][4])
        
ganador=t[0][0];

    if(
t[0][4]!=NADIE && t[0][4]==t[1][3] && t[1][3]==t[2][2] && t[2][2]==t[3][1] && t[3][1]==t[4][0])
        
ganador=t[0][4];

    if(
ganador==JUGADOR)
                return -
1;

    if(
ganador==COMPUTADOR)
                return 
1;

    for(
i=0;i<5;i++)
        for(
j=0;j<5;j++)
            if(
t[i][j]==NADIE)
                                return 
2;
    return 
0;
}

void impTablero(void){
    
int i,j;
    
cout << endl;
    for(
i=0;i<5;i++){
        for(
j=0;j<5;j++)
            
cout << t[i][j];
        
cout << endl;
    }
    
cout << endl;

Responder Con Cita