COMO HACER UN TRIQUI

dimariahr
02 de Junio del 2004
HOLA
NECESITO POR FAVOR QUE ME COLABOREN YA QUE NO HE PODIDO HACER UN TRIQUI EN LENGUAGE C. ES URGENTE GRACIAS!!!!

dimariahr
02 de Junio del 2004
HOLA!
DISCULPAME EL NO SER TAN PUNTUAL...
EL JUEGO TRIQUI ES PARA DOS PERSONAS, EL CUAL CONSTA DE UN TABLERO 3x3, DONDE DEBES UBICAR TRES FICHAS EN UNA MISMA FILA , COLUMNA O DIAGONALMENTE. SI ME HAGO ENTENDER?
GRACIAS POR RESPORDERME, IGUALMENTE TE AGRADEZCO SI ME PUEDES COLABORAR CON ESTO NO TENGO NI IDEA DE COMO HACERLO.

olga lucia orozco
02 de Junio del 2004
lo necesito para la 8:00pM DEL DIA DE hOY EN PROGRA C++

olga lucia orozco
02 de Junio del 2004
lo necesito par hoy 1 de junio a las 8 Pm

noel solw
02 de Junio del 2004
Este juego tiene muchisimos nombres : ta te ti, tres en raya, tic tac toe, c drix mix, XO, etc, etc.

Te mando un programa que juega contra la computadora. Una vuelta exmpieza la computadora y la siguiente el ser humano, y asi sucesivamente.
La computadora juego tontamente, si la aplicacion de ningun algoritmo que la haga ganar.
Fijate que el programa esta escrito para borland c++
ver 3.1, supongo que correra tambien en Turbo C, pero no lo hara en versiones porteriores al 3.1 sin introducir modificaciones.
Si hay algo que este claro, no dudes en comunicarte.
Suerte ! ! !

// program XO.cpp
// tic tac toe game (ix igul)
// human player versus computer, 'x' for computer and 'o' for player.
// c++, BorlandC, ver 3.1 - january 2001.

#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<dos.h>

const int IX = 1;
const int IGUL = 10;
const int xo = 30;
const int yo = 10;

void InitMatrix(int a[3][3])
{
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
a[i][j] = 0;
} // INIT MATRIX

void board(int turn)
{
int x = xo, y = yo;

clrscr();
gotoxy(33,7);
if(turn == IX)
cout << "X";
else
cout << "O";
cout << " starts game";
gotoxy(x,y++); cout << "ÉÍÍÍÍÍËÍÍÍÍÍËÍÍÍÍÍ»";
gotoxy(x,y++); cout << "º º º º";
gotoxy(x,y++); cout << "ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍ͹";
gotoxy(x,y++); cout << "º º º º";
gotoxy(x,y++); cout << "ÌÍÍÍÍÍÎÍÍÍÍÍÎÍÍÍÍ͹";
gotoxy(x,y++); cout << "º º º º";
gotoxy(x,y++); cout << "ÈÍÍÍÍÍÊÍÍÍÍÍÊÍÍÍÍͼ";
x = 10;
y += 20;
gotoxy(x,y++); cout << "[x] : computadora";
gotoxy(x,y++); cout << "[o] : cercanamente humano";
gotoxy(x,y++); cout << "[-] : apriete las teclas de numeros a la "
"derecha del teclado";
} // BOARD

void show(int i,int j,int turn)
{
gotoxy(xo+3+6*j,yo+1+2*i);
if(turn==IX)
cout<<"x";
else
cout<<"o";
} // SHOW

int GetChoice(int &i,int &j,int a[3][3])
{
int choice,sw;
for(int found = 0; !found;)
{
for(sw = 0; !sw;)
{
choice = getch();
if (choice == 27)
return choice;
switch(choice)
{
case 55:
case 71: i = 0;
j = 0;
sw++;
break; // [7]
case 56:
case 72: i = 0;
j = 1;
sw++;
break; // [8]
case 57:
case 73: i = 0;
j = 2;
sw++;
break; // [9]
case 52:
case 75: i = 1;
j = 0;
sw++;
break; // [4]
case 53:
case 76: i = 1;
j = 1;
sw++;
break; // [5]
case 54:
case 77: i = 1;
j = 2;
sw++;
break; // [6]
case 49:
case 79: i = 2;
j = 0;
sw++;
break; // [1]
case 50:
case 80: i = 2;
j = 1;
sw++;
break; // [2]
case 51:
case 81: i = 2;
j = 2;
sw++;
break; // [3]
} // SWITCH CHOICE
} // FOR !sw
if(!a[i][j])
found = 1;
} // FOR !FOUND
return choice;
} // GET CHOICE


int check(int turn,int a[3][3])
{
int suma,sumb,i,j;
for(i=0;i<3;i++) // checks rows and columns
{
suma = 0;
sumb = 0;
for(j=0;j<3;j++)
{
suma+=a[i][j];
sumb+=a[j][i];
}
if((suma==3*turn) || (sumb==3*turn))
return turn;
}
suma = sumb = 0;
for(i=0;i<3;i++) // checks diagonals
{
suma += a[i][i];
sumb += a[i][2-i];
}
if((suma==3*turn) || (sumb==3*turn))
return turn;
return 0;
} // CHECK

int GetWinMove(int a[3][3],int &newi,int &newj,int turn)
{
int i,j,sum,holder;

for(i=0; i<3; i++) // rows checker
{
sum = 0;
for(j=0; j<3; j++)
if(!a[i][j])
holder = j;
else
sum += a[i][j];
if(sum == 2*turn)
{
newj = holder;
newi = i;
return 1;
}
}
for(j=0; j<3; j++) // columns checker
{
sum = 0;
for(i=0; i<3; i++)
if(!a[i][j])
holder = i;
else
sum += a[i][j];
if(sum == 2*turn)
{
newi = holder;
newj = j;
return 1;
}
}
sum = 0;
for(i=0; i<3; i++) // principal diagonal checker
if(!a[i][i])
holder = i;
else
sum += a[i][j];
if(sum == 2*turn)
{
newi = newj = holder;
return 1;
}
sum = 0;
for(i=0; i<3; i++) // secondary diagonal checker
if(!a[i][2-i])
holder = i;
else
sum += a[i][2-i];
if(sum == 2*turn)
{
newi = holder;
newj = 2-holder;
return 1;
}
return 0;
} // GET WIN MOVE

int FirstEmptyMove(int a[3][3],int &i,int &j)
{
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if(!a[i][j])
return 1;
return 0;
} // FIRST EMPTY MOVE

void Xmove(int a[3][3],int &i,int &j,int counter,int &corner)
{
static int second_ix;

if(GetWinMove(a,i,j,IX))
return;
if(GetWinMove(a,i,j,IGUL))
return;
switch(counter)
{
case 1 : i = j = 1;
break; // CASE 1
case 2 : if(!a[1][1])
i = j = 1;
else
{
i = j = 0;
corner = 1;
}
break; // CASE 2
case 3 : second_ix = i;
switch(corner)
{
case 1 : switch(3*i+j)
{
case 0 : i = 0;
j = 1;
break;
case 2 : i = 1;
j = 2;
break;
case 6 : i = 1;
j = 0;
break;
case 8 : i = 2;
j = 1;
break;
}
break;
case 0 : if(i+j == 1)
i = j = 0;
else
i = j = 2;
break;
} // SWITCH CORNER
break; // CASE 3
case 4 : if((corner == 1) && (!a[2][0]))
{
i = 2;
j = 0;
}
else
FirstEmptyMove(a,i,j);
break; // CASE 4
case 5 : switch(corner)
{
case 1 : switch(3*i+j)
{
case 1 :
case 7 : if(!a[i][j-1])
j--;
else
j++;
break;
case 3 :
case 5 : if(!a[i-1][j])
i--;
else
i++;
break;
}
break;
case 0 : if(second_ix == 1)
i = 2-i;
else
j = 2-j;
break;
} // SWITCH CORNER
break; // CASE 5
case 6 :
case 7 :
case 8 :
case 9 : FirstEmptyMove(a,i,j);
break; // CASE 6,7,8,9
} // SWITCH COUNTER
} // X MOVE

void Omove(int a[3][3],int &i,int &j,int &choice,int & corner)
{
choice = GetChoice(i,j,a);
if(corner == 99)
corner = !(i+j)%2;
} // O MOVE

void process(int turn)
{
int a[3][3];
int choice = 0,i,j,corner = 99,winner = 0,counter = 1;
for(;(choice !=27) && (!winner) && (counter < 10);)
{
InitMatrix(a);
board(turn);
for(;(counter < 10) && (!winner);)
{
switch(turn)
{
case IX : Xmove(a,i,j,counter,corner);
break;
case IGUL : Omove(a,i,j,choice,corner);
if(choice==27)
{
gotoxy(20,21);
cout << "exit by user";
return;
}
break;
} // SWITCH TURN
a[i][j] = turn;
show(i,j,turn);
winner = check(turn,a);
turn = IX+IGUL - turn;
counter++;
} // FOR COUNTER < 10 AND NOT WINNER
}
gotoxy(20,21);
switch(winner)
{
case 0 : cout << "no winner" << endl;
break;
case IX : cout << "the winner is X" << endl;
break;
case IGUL : cout << "the winner is O" << endl;
break;
} // SWITCH WINNER
} // PROCESS


void main()
{
int choice = 0;
for(int turn = IX; choice != 27;)
{
process(turn);
turn = IX+IGUL-turn;
gotoxy(20,23);
cout << "ESC for exit, press any key for continue " << endl;
choice = getch();
}
} // MAIN

//-------------------------- end of list -----------------------------

dimariahr
02 de Junio del 2004
MUCHISIMAS GRACIAS NOEL... ERES UN VACAN!!!

CUIDATE.

noel solw
02 de Junio del 2004
Podrias explicar, por favor, que es un TRIQUI ?