Lista Utenti taggati

Risultati da 1 a 15 di 15

Discussione: Guardia e Ladri programma in c

  1. #1
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Guardia e Ladri programma in c

    TESTO:

    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. Si sceglie casualmente la posizione della guardia e del
    ladro . 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 compie ad ogni turno un passo in modo tale che conoscendo la posizione
    del ladro può calcolare lo spostamento minimo per avvicinarsi a lui.
    Il ladro conosce posizione della porta e con probabilità del 50% compie ad ogni
    turno un passo nella sua direzione oppure in una posizione casuale.
    La simulazione termina quando il ladro “esce dalla porta” o che 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.

    Guardia e Ladri programma in c-schermata-2012-01-27-13.37.11.png


    Vi allego di seguito il codice da me impostato


    Codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    void printScacchiera(char scacchiera[][16] , int n, int m);//prototipo function printScacchiera
    
    
    void main()
    {
         int i,j,n=16,m=16;
         char scacchiera[16][16]= {
              { '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'},
              { '.',' ',' ',' ',' ',' ',' ','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'}};
    
    
    
    
    
    
         //stampa la scacchiera
        printScacchiera(scacchiera,n,m);//chiamata voi function
    
    
    
    
    
    
    
    
    }
    
    
    
    
    
    
    
    
    
    
    
    
    //funzione stampa scacchiera
    void printScacchiera(char scacchiera[][16] , int n, int m)
    {
         int i,j;
         n=16;
         m=16;
    
    
         //ciclo for che mi permette di scorrere le righe
             for (i=0;i<n;i++){
          {
               for (j=0;j<m;j++)//ciclo for che mi permette di scorrere le colonne
               printf(" %c",scacchiera[i][j]);
               printf("\n");
          }
             }
    
    
    }
    
    
    
    


    Vi chiedo aiuto per risolvere questo problema, Ringraziandovi anticipatamente

  2.  
    Stanco della Pubblicità? Registrati

  3. #2
    Utente Attivo
    Data Registrazione
    21-08-09
    Località
    Reggio Emilia - Modena
    Messaggi
    182
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Andando per ordine: qual è il primo scoglio che non riesci a superare? La tua richiesta è troppo generica
    Concluso positivamente con:

  4. #3
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Il mio più grande scoglio è come far muovere il ladro che lo deve muovere l'utente e visualizzare la schermata con il percorso che sta facendo.
    Grazie Anticipatamente
    Ultima modifica di snk97; 28-01-2012 alle 15:58

  5. #4
    Utente Attivo
    Data Registrazione
    25-07-11
    Messaggi
    117
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    ma scusa tu vuoi creare un programma del genere e nn sai neanche il controllo per il ladro...credo che magari sbaglio ma la cosa da spiegare sarebbe troppo lunga

  6. #5
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Veramente chiedevo solo un idea su come crearlo un algoritmo magari e poi è solo su una parte del programma se hai letto la traccia, va be ma forse non lo sai neanche tu per rispondermi così.

  7. #6
    Utente Attivo
    Data Registrazione
    30-07-11
    Messaggi
    191
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    beh alla fine se il ladro è mosso dall'utente non è difficile da fare....potresti per esempio fare una scanf che riceve i char w,a,s,d e in base a quale hai pigiato ti muove il ladro su, sinistra, giu o destra, ovviamente controllando che la posizione in cui deve andare sia vuota
    Desktop

    Muletti

  8. #7
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    ok grazie quindi con una gets() prendere un char e con uno switch case simulare i vari casi .

    volevo chiedere solo se esiste una funzione che mi cancella dallo schermo la visualizzazione precedente della scacchiera per permettermi poi di stampare a video quella con le posizioni aggiornate , una specie di clear

  9. #8
    Utente Attivo
    Data Registrazione
    30-03-10
    Località
    Verona
    Messaggi
    323
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Con che sistema operativo programmi? Se usi linux, importa la libreria stdlib.h e fai system("comando terminale"); per effettuare appunto una system call.
    in breve system("clear") ti pulisce tutto il teminale.
    in alternativa, usa:
    - printf("\033[1m tua stringa"); per il grassetto
    - printf("\033[0m tua stinga"); per tornare "normale"
    - printf("\033[2J"); per pulire lo schermo
    - printf("\033[0;0H"); per posizionarti alla riga / colonna (in questo caso 0 0)

    P.S. gets() è deprecata e con molti bug, usa getchar()!

  10. #9
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Uso mac per programmare , va bene lo stesso ?

  11. #10
    Utente Attivo
    Data Registrazione
    30-03-10
    Località
    Verona
    Messaggi
    323
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    si, i printf che ti ho suggerito sono standard ANSI, non dovresti avere problemi (con cosa compili, gcc o atro?)

  12. #11
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    codeblocks ha un interfaccia semplice

  13. #12
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Scusate la mia insistenza , ma volevo sapere come faccio a calcolare lo spostamento minimo che deve fare la guardia per intercettare il ladro , conoscendo la posizione del ladro

    Grazie anticipatamente

  14. #13
    Utente Attivo
    Data Registrazione
    30-03-10
    Località
    Verona
    Messaggi
    323
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    La tua guardia (salvo eccezioni) può muoversi in 8 direzioni possibili, e ovviamente ogni spostamento può o avvicinare o allontanare dal bersaglio.
    Dato che tu sai le coordinate (espresse in quadrati) del ladro (x1,y1) e della guardia(x2,y2), sei in grado di calcolare la differenza delle due coordinate per ottenere X (x2 -x1) e Y(y2-y1).
    Ora, la distanza minima tra due oggetti (escludendo la relatività di Einstein ) è una retta, quindi: teorema di pitagora e trova la diagonale di X e Y.
    Ovviamente, mentre il ladro una volta mosso rimane immobile, la guardia può scegliere: devi quindi trovare lo spostamento che ottiene la diagonale minore

  15. #14
    Utente Attivo
    Data Registrazione
    27-01-12
    Messaggi
    8
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Scusami
    Per calcolare lo spostamento minimo allora faccio la differenza tra le coordinate della guardia e del ladro ottenendo X e Y


    e poi che formula applico sqr x^2 +Y^2 ???

    come faccio a trovare la diagonale di X e Y ??

  16. #15
    Utente Attivo
    Data Registrazione
    30-03-10
    Località
    Verona
    Messaggi
    323
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: Guardia e Ladri programma in c

    Esatto... diagonale = sqrt(X^2 + Y^2) poi confronti gli 8 risultati e tieni il più piccolo.
    P.S. nonostante il ladro si possa muovere solo in 4 direzioni (W,A,S,D) la guardia deve muoversi in 8 direzioni altrimenti è impossibile che raggiunga il ladro (ovvero sian entrambi nella prima casella)
    P.P.S. può aiutare vedere il campo di gioco come un array bidimensionale (field[][]) così puoi usare gli indici dell' array come coordinate

  17.  
    Stanco della Pubblicità? Registrati

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Discussioni Simili

  1. Ladri di identita o cosa ? ...
    Di skyhack nel forum Sicurezza
    Risposte: 3
    Ultimo Messaggio: 08-09-2011, 17:04
  2. Sito personale oscurato dalla Guardia di finanza
    Di Andre_Jump nel forum Banda Larga
    Risposte: 0
    Ultimo Messaggio: 01-05-2010, 11:44
  3. Abruzzo, ladri in case terremotati
    Di Gurzo2007 nel forum Politica e attualità
    Risposte: 5
    Ultimo Messaggio: 08-01-2010, 21:29
  4. Avviso-ladri di tag!!
    Di AngelBadx nel forum XBOX 360
    Risposte: 1
    Ultimo Messaggio: 31-03-2009, 13:45
  5. [Oblivion] Ultima Missione Ladri
    Di Berill nel forum Giochi per PC
    Risposte: 4
    Ultimo Messaggio: 04-05-2006, 13:53

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Torna Su