Hinamarth

Minefield

Dec 13th, 2011
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.74 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4.  
  5. main(){
  6.   int N, i, j, campo[1000][1000], y, cont=0, z;
  7.   double x, p;
  8.   srand48(time(0));
  9.   printf("Il programma simula il gioco del campo minato, ovvero, posto un malcapitato al centro di una scacchiera NxN, conteremo i passi da lui effettuati prima di esplodere o prima di salvarsi.\n");
  10.   printf("Per fare questo ho bisogno che tu immetta il numero N di caselle compreso tra 0 a 1000.\n N = ");
  11.   scanf("%d", &N);
  12.   while(N>1000){
  13.     printf("Il valore di N non è accettabile! Reimmettilo!\n N = ");
  14.     scanf("%d", &N);
  15.   }
  16.   printf("Ora inserisci una probabilità p positiva e minore di 1, con cui effettuerò il riempimento del campo con le mine.\n p = ");
  17.   scanf("%lf", &p);
  18.   while(p>1){
  19.     printf("Il valore di p non è accettabile! Reimmettilo!\n p = ");
  20.     scanf("%lf", &p);
  21.   }
  22.   for(i=0; i<N; i++){
  23.     for(j=0; j<N; j++){
  24.       x=(double)lrand48()/(RAND_MAX+1.);
  25.       if(x<p){
  26.     campo[i][j]=1;
  27.       }
  28.       else{
  29.     campo[i][j]=0;
  30.       }
  31.     }
  32.   }
  33.   if(N%2==0){
  34.     campo[(N/2)][(N/2)]=0;
  35.     y=N/2;
  36.     z=N/2;
  37.   }
  38.   else{
  39.     campo[((N--)/2)][((N--)/2)]=0;
  40.     y=(N/2);
  41.     z=(N/2);
  42.   }
  43.   while(y<N && z<N && y>=0 && z>=0 && campo[z][y]==0){
  44.     x=lrand48()%4;
  45.     if(x==0){
  46.       printf("← ");
  47.       campo[z--][y];
  48.     }
  49.     if(x==1){
  50.       printf("↑ ");
  51.       campo[z][y++];
  52.     }
  53.     if(x==2){
  54.       printf("→ ");
  55.       campo[z++][y];
  56.     }
  57.     if(x==3){
  58.       printf("↓ ");
  59.       campo[z][y--];
  60.     }
  61.     cont++;
  62.     }
  63.   printf("\n");  
  64.   if(y>=N || z>=N || y<0 || z<0){
  65.     printf("Il soldato si è salvato con %d mosse!\n", cont);
  66.   }
  67.   else{
  68.     printf("KABOOM!\n Il soldato è sopravvissuto per %d turni...\n", cont);
  69.   }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment