inteligencia para el hundir la flota en c

paneta
24 de Marzo del 2004
ola coleguis ja lo tengo terminado pero no es inteligente...xfi una ayuda:si podeis enviarme alguna ayudita

#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
void main()
{
int panel[10][10];


int mipanel[10][10],tupanel[10][10];

typedef struct{

int lon,tocats,enfonsat;
} barcos;

barcos mibarco[10],tubarco[10];

int colx,coly,direccio,longitud,colocades,noinfinit,i,j,k,nbarcos=1;
int turno,guanyador=0,mishundidos=0,tushundidos=0,voltes=0;
char result='*';
clrscr();
randomize();
for(i=0;i<10;i++)
for(j=0;j<10;j++){
mipanel[i][j] = 0;
tupanel[i][j] = 0;
}
for (i=0;i<4;i++){
for(j=0;j<=i;j++){
longitud=j+1;
do{
colx=random(10);
coly=random(10);
}
while(mipanel[colx][coly]!=0);
mipanel[colx][coly]=nbarcos;
colocades=1;
direccio=random(4);
noinfinit=0;
while((colocades<longitud)&&(noinfinit<2)){
switch(direccio){
case 0:
if((colx-colocades<1)||(mipanel[colx-colocades][coly]!=0)){
direccio=1;
colocades=1;
noinfinit++;
}
else colocades++;
break;

case 1:
if(((coly+colocades)>9)||(mipanel[colx][coly+colocades]!=0)){
direccio=2;
colocades=1;
}
else colocades++;
break;
case 2:
if(((colx+colocades)>9)||(mipanel[colx+colocades][coly]!=0)){
direccio=3;
colocades=1;
}
else colocades++;
break;
case 3:
if(((coly-colocades)<1)||(mipanel[colx][coly-colocades]!=0)){
direccio=0;
colocades=1;
}
else colocades++;
break;

}
}
if(noinfinit==2){ printf("no he pogut carregar els barcos");
return;
}
else{
for(k=1;k<longitud;k++){
switch (direccio){
case 0:
mipanel[colx-k][coly]=nbarcos;
break;
case 1:
mipanel[colx][coly+k]=nbarcos;
break;
case 2:
mipanel[colx+k][coly]=nbarcos;
break;
case 3:
mipanel[colx][coly-k]=nbarcos;
break;
}
}
}
mibarco[nbarcos].lon=longitud;
mibarco[nbarcos].tocats=0;
mibarco[nbarcos++].enfonsat=0;
}
}
printf("panel de l'ordinador:n");

for(i=0;i<10;i++){
for(j=0;j<10;j++){
printf("%5d",mipanel[i][j]);
}
printf("n");
}
printf("panel del usuari;n");
for(i=0;i<4;i++){
for(j=0;j<=i;j++){
longitud=j+1;
do{
colx=random(10);
coly=random(10);
}
while(tupanel[colx][coly]!=0);
tupanel[colx][coly]=nbarcos;
colocades=1;
direccio=random(4);
noinfinit=0;
while((colocades<longitud)&&(noinfinit<2)){
switch(direccio){
case 0:
if((colx-colocades<1)||(tupanel[colx-colocades][coly]!=0)){
direccio=1;
colocades=1;
noinfinit++;
}
else colocades++;
break;

case 1:
if(((coly+colocades)>9)||(tupanel[colx][coly+colocades]!=0)){
direccio=2;
colocades=1;
}
else colocades++;
break;

case 2:
if(((colx+colocades)>9)||(tupanel[colx+colocades][coly]!=0)){
direccio=3;
colocades=1;
}
else colocades++;
break;
case 3:
if(((coly-colocades)<1)||(tupanel[colx][coly-colocades]!=0)){
direccio=0;
colocades=1;
}
else colocades++;
break;

}
}
if(noinfinit==2){ printf("no he pogut carregar els barcos");
return;
}
else{
for(k=1;k<longitud;k++){
switch (direccio){
case 0:
tupanel[colx-k][coly]=nbarcos;
break;
case 1:
tupanel[colx][coly+k]=nbarcos;
break;
case 2:
tupanel[colx+k][coly]=nbarcos;
break;
case 3:
tupanel[colx][coly-k]=nbarcos;
break;
}
}
}
tubarco[nbarcos].lon=longitud;
tubarco[nbarcos].tocats=0;
tubarco[nbarcos++].enfonsat=0;
}
}





turno=random(2);
do{
if(turno==1){
printf("PANEL DE L'ORDINADOR:n");
for(i=0;i<10;i++){
for(j=0;j<10;j++){
printf("%5d",mipanel[i][j]);
}
printf("n");
}

printf("el torn del usuarin");
printf("introduix files i columnesn");
scanf("%d %d",&colx,&coly);
if(mipanel[colx][coly]==0){
printf("aiguan");
mipanel[colx][coly]=-1;
turno=2;
}
if(mipanel[colx][coly]>0){
mibarco[mipanel[colx][coly]].tocats++;
voltes++;
if(mibarco[mipanel[colx][coly]].tocats==mibarco[mipanel[colx][coly]].lon)
printf("hundidon");
else{
printf("tocadon");
mishundidos=mishundidos+1;
mipanel[colx][coly]=-2;
}
}
if(mishundidos==10)
guanyador=1;

}

else{
printf("PANEL DE L'USUARI:n");
for(i=0;i<10;i++){
for(j=0;j<10;j++){
printf("%5d",tupanel[i][j]);

}
printf("n");
}

printf("turno de l'ordinadorn");
colx=random(10);
coly=random(10);
printf("%d %dn",colx,coly);
result=getche();
switch(result){
case 'a':
printf("n");
printf("aiguan");
turno=1;
break;
case 'h':
printf("n");
printf("hundidon");
tushundidos++;
break;
case 't':
printf("n");
printf("tocadon");
break;
}
if(tushundidos==10)
guanyador=2;

}

}while(guanyador==0);

if(guanyador==1)
printf("ENORABONA,l'usuari Ha guanyat!!!eres una makina!!!n");
else
printf("l'ordinador es una makinan");

getche();

}