Salve ragazzi sono un lauerando in informatica e vorrei un grande aiuto da parte vostra perchè ormai sono enrtato nel pallone e non riesco ad andare avanti. Devo sviluppare un progetto interamente in C . Questa è la traccia
http://imageshack.us/photo/my-images/545/immagineuad.png/
Io però sono riuscito a cerare un campo di gioco ma non riesco a creare il famoso cannoncino rosso. Ora vi rilascio il codice perchè non pretendo che voi facciate il progetto dato che già l'ho fatto ma che mi diate una mano. Spero nel vostro aiuto in ciò vi ringrazio anticipatamente.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//prototipi
void muovi_gialla(int random, char campo[8][7], int *G_x, int *G_y);
void muovi_verde(int random, char campo[8][7], int *V_x, int *V_y);
void muovi_blue(int random, char campo[8][7], int *B_x, int *B_y);
int controllo(int spara, int y);
void pulisci(int sparato, char campo[8][7], int *x, int *y);
int main(int argc, char *argv[])
{
srand((unsigned int)time(0) );
int i, j, G_x, G_y, B_x, B_y, V_x, V_y, R_x, R_y, random, sparato_G, sparato_V, sparato_B ;
int k=0;
int spara=1;
char campo[8][7]= {{'G', ' ', ' ', ' ', ' ', ' ', ' ',},
{' ', ' ', ' ', 'B', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', 'V'},
{' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', ' ', ' ', ' ', ' '},
{' ', ' ', ' ', 'R', ' ', ' ', ' '}};
G_x=0; G_y=0;
B_x=1; B_y=3;
V_x=2; V_y=6;
R_x=7; R_y=3;
//posizionamento iniziale
for (i=0; i<8; i++)
{
for (j=0; j<7; j++)
printf("%c ", campo[i][j]);
printf("\n");
}
k=0; //passi
do {
k++;
if (sparato_V!=1) //se la navicella non è stata colpita allora muoverla
{
random= rand()%10;
muovi_verde(random, campo, &V_x, &V_y);
printf("\tRandom V: %d", random);
}
else
{
printf("La verde e' colpita\n");
}
if (sparato_B!=1)
{
random= rand()%10;
muovi_blue(random, campo, &B_x, &B_y);
printf("\n\tRandom B: %d", random);
}
else
{
printf("\nLa blue e' colpita\n");
}
if (sparato_G!=1)
{
random= rand()%10;
muovi_gialla(random, campo, &G_x, &G_y);
printf("\n\tRandom G: %d\n", random);
}
else
{
printf("\nLa gialla e' colpita\n");
}
printf("\n");
for (i=0; i<8; i++) //visualizza sullo schermo il campo dopo il primo movimento delle navicelle
{
for (j=0; j<7; j++)
printf("%c ", campo[i][j]);
printf("\n");
printf("\n\n");
printf("\n\t\t\t k= %d\n", k);
printf("\t V= %d %d ", V_x, V_y);
if (sparato_V==1)
{
printf(" Colpita");
}
printf("\n\t B= %d %d ", B_x, B_y);
if (sparato_B==1)
{
printf(" Colpita");
}
printf("\n\t G= %d %d ", G_x, G_y);
if (sparato_G==1)
{
printf(" Colpita");
}
printf("\n\n\tVuoi sparare? 1=Si, altro int=No \n\n");
scanf("%d", &spara);
printf("\n");
if (sparato_V!=1)
{
sparato_V= controllo(spara, V_y);
}
if (sparato_B!=1)
{
sparato_B= controllo(spara, B_y);
}
if (sparato_G!=1)
{
sparato_G= controllo(spara, G_y);
}
/*questi controlli servono per controllare, in caso di sparo, se le navicelle si trovano in posizione*/
pulisci(sparato_V, campo, &V_x, &V_y);
pulisci(sparato_B, campo, &B_x, &B_y);
pulisci(sparato_G, campo, &G_x, &G_y);
//cancella le navicelle distrutte
}
while (((sparato_G!=1) || (sparato_V!=1) || (sparato_B!=1)) && (k<100)); /*esegui il ciclo finchè tutte e tre le navicelle non sono state distrutte oppure il contatore passi è arrivato a 100*/
printf("\n\n\n\t Fine partita\n\n\n");
system("PAUSE");
return 0;
}
/* Funzioni movimento
random: è il numero random generato nel main
*x, *y sono coordinate delle navicelle che cambiano con il passare dei turni
*/
void muovi_gialla(int random, char campo[8][7], int *G_x, int *G_y)
{
if ((random<3) && (*G_y==6))
{
campo[*G_x][*G_y]=' ';
*G_y=0;
}
else if (random <3)
{
campo[*G_x][*G_y]=' ';
*G_y=*G_y+1;
}
campo[*G_x][*G_y]='G';
}
void muovi_verde(int random, char campo[8][7], int *V_x, int *V_y)
{
campo[*V_x][*V_y]=' ';
if(random<4)
{
if (*V_y==6)
*V_y=2;
else if (*V_y==5)
*V_y=1;
else if (*V_y==4)
*V_y=0;
else
*V_y=*V_y+3;
}
else if (random>=4 && random <=6)
{
if (*V_y==0)
*V_y=5;
else if (*V_y==1)
*V_y=6;
else
*V_y=*V_y-2;
}
else if (random >=7)
{
if (*V_y==6)
*V_y=0;
else
*V_y=*V_y+1;
}
campo[*V_x][*V_y]='V';
}
void muovi_blue(int random, char campo[8][7], int *B_x, int *B_y)
{
campo[*B_x][*B_y]=' ';
if (random<7)
{
if (*B_y==1)
*B_y=6;
else if (*B_y==0)
*B_y=5;
else
*B_y=*B_y-2;
}
else if (random>=7)
{
if (*B_y==0)
*B_y=6;
else
*B_y=*B_y-1;
}
campo[*B_x][*B_y]='B';
}
/* la function che segue controlla se una navicella e' stata colpita,
controlla inoltre anche se l'utente ha inserito il valore 1(l'opzione per sparare ) o un altro intero (nel caso l'utente decidesse di non sparare)*/
int controllo(int spara, int y)
{
int sparato;
if ((spara==1)&&(y==3) )
{
sparato=1;
}
else
{
sparato=0;
}
return sparato;
}
void pulisci(int sparato, char campo[8][7], int *x, int *y) //pulisce dalla campo la navicella colpita
{
{
if (sparato==1)
campo[*x][*y]=' ';
}