Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Simulazione del gioco guardia e ladri in un labirinto?
Forum - C/C++ - Simulazione del gioco guardia e ladri in un labirinto?

Avatar
ernero (Normal User)
Newbie


Messaggi: 2
Iscritto: 24/02/2011

Segnala al moderatore
Postato alle 11:49
Sabato, 26/02/2011
salve, ho molti problemi nella risoluzione di questo esercizio.

Si vuole sviluppare un programma per la simulazione del gioco della guardia e ladro
in un labirinto.
La stanza è pavimentata a tasselli quadrati (caselle) ed è dotata di pareti esterne e
interne come in figura. Si sceglie casualmente la posizione della guardia (blue) e del
ladro (rosso). Entrambi si muovono di una casella alla volta, scelta tra una delle
quattro caselle vicine. Il ladro deve uscire dal labirinto e viene guidato dall’utente.
La guardia cerca di intercettare il ladro in modo tale che conoscendo la sua posizione
può calcolare lo spostamento minimo per avvicinarsi a lui. Se la traiettoria è ostruita
da un muro viene presa una direzione casuale.
La simulazione termina quando il ladro “esce dalla porta” o quando la guardia cattura
il ladro. L’algoritmo deve visualizzare il percorso del ladro e della guardia dopo ogni
passo, mostrando la stanza e la posizione dei due.
qui si vede l' immagine http://www.ernero.altervista.org/stanza.…
L’algoritmo usa la function rand() in stdlib per generare numeri casuali: si
ricorda che, per esempio, se numero_casuale è un int, la chiamata
numero_casuale=rand()%11; genera un numero casuale intero (distribuzione
uniforme) nell’insieme (0,1,2,3,4,5,6,7,8,9,10). Usare sempre la srand() per
rendere automatica la scelta iniziale del seed della sequenza di numeri casuali.
Effettuare almeno 5 test, variando la posizione iniziale del robot. Effettuare anche 3
test cambiando ogni volta la disposizione delle pareti nella stanza e cercando di
trovare disposizioni critiche delle pareti.

ho creato la stanza e anche la posizione casuale solo che va anche sulle pareti e poi non so come continuare.

questo è quello che ho fatto fino ad ora:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
     int i,j,k,nx,ny;
     char scacchiera[17][17]= {
          { 'm','m','m','m','m','m','m','m','m','m','m','m','m','m','m','m'},
          { 'm',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ','m',' ',' ',' ','m','m','m','m','m','m','m','m','m'},    
          { 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ','m',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ','m',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ',' ',' ',' ',' ','m',' ',' ',' ','m','m','m',' ','m'},
          { 'u',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'u',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'u',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
          { 'm','m','m','m','m','m','m','m','m','m','m','m','m','m','m','m'}};
     srand(time(NULL));
     /*generazione della posizione del LADRO*/
     for (i=0;i<1;i++)//ciclo che viene eseguita una sola volta quanto quanto è la posizione da generare.
     {
    
      /* genera a caso una posizione nella scacchiera 17x17 */
           nx = rand()%16;
           ny = rand()%16;
           scacchiera[nx][ny] = 'L';      
      printf("le cordinate del ladro sono %d %d \n",nx,ny);
       if((scacchiera[j] == 0) || (scacchiera[j] == 0))
     { i++;
      j++;
      }
      else if((scacchiera[j] == 15) ||(scacchiera[j] == 15))
      i--;
      j--;
      }
      /*generazione della posizione della GUARDIA*/
      for (i=0;i<1;i++)//ciclo che viene eseguita una sola volta quanto quanto è la posizione da generare.
     {
    
      /* genera a caso una posizione nella scacchiera 17x17 */
           nx = 1+rand()%16;
           ny = 1+rand()%16;
           scacchiera[nx][ny] = 'G';      
      printf("le cordinate della guardia sono %d %d \n",nx,ny);
       if((scacchiera[j] == 0) || (scacchiera[j] == 0))
     { i++;
      j++;
      }
      else if((scacchiera[j] == 15) ||(scacchiera[j] == 15))
      i--;
      j--;
      }
      
    
           for (i=0;i<16;i++)//visualizzazione della scacchiera
      {
           for (j=0;j<16;j++)
           printf(" %c",scacchiera[j]);
           printf("\n");                  //visualizzazione per riga
      }
      
      system("PAUSE");
      return 0;
}


ernero ha allegato un file: stanza.png (4671 bytes)
Clicca qui per guardare l'immagine
PM