giovedì 23 ottobre 2008

piramide rovescata

/*gioco della piramide rovesciata*/
#include
int board[17];
char simboli[2]={'|','+'};
void stampa();
int w=0;
void MossaUmano();
void MossaPc();
void AzzeraBoard();
int vincitore();
int main(){
int turno=0;
AzzeraBoard();
do{
turno=0;
stampa();
MossaUmano();
vincitore();
if(vincitore()==1){
turno=1;
break;
}
printf("mossa pc:\n");
MossaPc();
vincitore();
if(vincitore()==1){
printf("\nil pc non puo' fare altre mosse\n");
turno=2;
break;
}
}while(w=1);
if(turno==1){
printf("\nhai perso\n");
}
else
printf("\nhai vinto\n");

}
/*azzera la board*/
void AzzeraBoard(){
int i=0;
for(i=1;i<17;i++){
board[i]=0;
}
}
/*funzione stampa*/
void stampa(){
int i;
for(i=1;i<17;i++){
printf("%c",simboli[board[i]]);
if(i==7){
printf("\n ");
}
if(i==12){
printf("\n ");
}
if(i==15){
printf("\n ");
}
}
printf("\n");
}
/*mossa umano*/
void MossaUmano(){
int i=0;
int a=0;
int b=0;
printf("da quale punto vuoi iniziare la selezione?\n");
scanf("%d",&a);
printf("da quale punto vuoi terminare la selezione?\n");
scanf("%d",&b);
//errore a if(a>b){
printf("ERRORE\nil valore di partenza e' maggiore dell'ultimo valore\n");
MossaUmano();
return;
}
//errore doppia riga
if((0 printf("ERRORE\ni valori compresi occupano due righi\n");
MossaUmano();
return;
}
for(i=a;i<(b+1);i++){
if(board[i]==0){
board[i]=1;
}
else{
printf("ERRORE\n");
MossaUmano();
return;
}
}
}
/*mossa computer*/
void MossaPc(){
int i=0;
for(i=1;i<17;i++){
if(board[i]==0){
board[i]=1;
i=17;
}
}
}
/*controllo vincitore*/
int vincitore(){
int i;
int v=0;
for(i=1;i<17;i++){
if(board[i]==1){
v++;
}
}
if(v==16){
return 1;
}
}

Nessun commento: