Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - campo minato
Forum - C/C++ - campo minato

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 23:19
Giovedì, 02/07/2009
Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <time.h>
  4. #include <stdlib.h>
  5. using namespace std;
  6. void replay();
  7. int random(int, int);
  8. void reveal(int);
  9. void main()
  10. void main()
  11. {
  12.            int b;
  13.            do
  14.            {
  15.            cout << "Enter number of squares per side (2 - 10)" << endl;
  16.            cin >> b;
  17.            }while(b < 1 && b >= 10);
  18.            int board[b][b];             //0 - 8 = # of mines, 9 is mine
  19.            int revealed[b][b];  //1 is revealed
  20.            int i = 0;                  
  21.            int j = 0;
  22.            int x = 0;                  
  23.            int y = 0;
  24.            int z;                               //number of mines
  25.            int q;
  26.            int t = 0;                           //game over input
  27.            int dead = 0;
  28.            do
  29.            {
  30.                          cout << "How many mines? (1 - " << ((b*b)-1) << ")" << endl;
  31.                          cin >> z;
  32.            }while(z <= 0 && z >= ((b*b)-1));
  33.            for(i=0;i<b;i++)
  34.                          for(j=0;j<b;j++)
  35.                                     board[i][j] = 0;
  36.            i = random(i, b);
  37.            j = random(j, b);
  38.            cout << "Generating board..." << endl;
  39.            do
  40.            {
  41.                          i+=3;
  42.                          j+=6;
  43.                          x = random(i, b);
  44.                          y = random(j, b);
  45.                          if(board[y][x] != 9)
  46.                          {
  47.                                     board[y][x] = 9;
  48.                                     z--;
  49.                                     if((y-1) >= 0)
  50.                                     if(board[y-1][x] != 9)
  51.                                                   board[y-1][x]++;
  52.                                     if((y-1) >= 0 && (x-1) >= 0)
  53.                                     if(board[y-1][x-1] != 9)
  54.                                                   board[y-1][x-1]++;
  55.                                     if((x-1) >= 0)
  56.                                     if(board[y][x-1] != 9)
  57.                                                   board[y][x-1]++;
  58.                                     if((y+1) < b)
  59.                                     if(board[y+1][x] != 9)
  60.                                                   board[y+1][x]++;
  61.                                     if((y+1) < b && (x+1) < b)
  62.                                     if(board[y+1][x+1] != 9)
  63.                                                   board[y+1][x+1]++;
  64.                                     if((x+1) < b)
  65.                                     if(board[y][x+1] != 9)
  66.                                                   board[y][x+1]++;
  67.                                     if((y-1) >= 0 && (x+1) < b)
  68.                                     if(board[y-1][x+1] != 9)
  69.                                                   board[y-1][x+1]++;
  70.                                     if((y+1) < b && (x-1) >= 0)
  71.                                     if(board[y+1][x-1] != 9)
  72.                                                   board[y+1][x-1]++;
  73.                          }
  74.            }while(z>0);
  75.            for(i = 0; i < b; i++)
  76.                          for(j=0;j<b;j++)
  77.                                     revealed[i][j]=0;
  78.            //board creation end
  79.            //ask for input/check squares loop
  80.            do
  81.            {
  82.                          system ("clear");
  83.                          q = 0;
  84.                          z = 0;
  85.                          cout << "   ";
  86.                          for(i=0;i<b;i++)
  87.                                     cout << i << " ";
  88.                          cout << endl;
  89.                          for(i=0;i<b;i++)
  90.                          {
  91.                                     for(j=0;j<b;j++)
  92.                                     {
  93.                                                   if(j==0)
  94.                                                                 cout << i << " |";
  95.                                                   if(revealed[i][j]==1)
  96.                                                                                                   {
  97.                                                                 reveal(board[i][j]);
  98.                                                                                                   }
  99.                                                                                                   else
  100.                                                                                                   {
  101.                                                                 cout << "_|";
  102.                                                                                                   }
  103.                                                                                                                                 if(j==(b-1))
  104.                                                                                                                                 {
  105.                                                                                                                                         cout << endl;
  106.                                                                      if(board[i][j]!=9 && revealed[i][j]==1)
  107.                                                                        q++;
  108.                                                                            if(board[i][j] == 9)
  109.                                                                                 z++;
  110.                                                                   }
  111.                                                                         }
  112.                          }
  113.                          if(q >= ((b*b) - z))
  114.                          {
  115.                                     cout << "You win!" << endl;
  116.                                     dead = 1;
  117.                          }
  118.                          if(dead == 0)
  119.                          {
  120.                          cout << "X: ";
  121.                          cin >> x;
  122.                          cout << "Y: ";
  123.                          cin >> y;
  124.                          }
  125.                          if(board[y][x] == 9)
  126.                          {
  127.                                     system ("clear");
  128.                                     cout << "You hit a mine!" << endl;
  129.                                     cout << "   ";
  130.                                     for(i=0;i<b;i++)
  131.                                                   cout << i << " ";
  132.                                     cout << endl;
  133.                                     dead = 1;
  134.                                     for(i=0; i<b; i++)
  135.                                     {
  136.                                                   for(j=0;j<b;j++)
  137.                                                   {
  138.                                                                 if(j==0)
  139.                                                                            cout << i << " |";
  140.                                                                 if(board[i][j]==9)
  141.                                                                            revealed[i][j]=1;
  142.                                                                 if(revealed[i][j]==1)
  143.                                                                            reveal(board[i][j]);
  144.                                                                 else
  145.                                                                            cout << "_|";
  146.                                                                 if(j==(b-1))
  147.                                                                            cout << endl;
  148.                                                   }
  149.                                     }
  150.  
  151.                          }
  152.                          if(board[y][x]==0)
  153.                          {
  154.                                     revealed[y][x] = 1;
  155.                                     for(i=0;i<b;i++)
  156.                                     {
  157.                                                   for(j=0;j<b;j++)
  158.                                                   {
  159.                                                                 if(i>(y-2)&&i<(y+2))
  160.                                                                            if(j>(x-2)&&j<(x+2))
  161.                                                                                          if(board[i][j]!=9)
  162.                                                                                            revealed[i][j]=1;
  163.                                                   }
  164.                                     }
  165.                          }
  166.                          if(board[y][x]>0 && board[y][x]<9)
  167.                                     revealed[y][x] = 1;
  168.            } while(dead == 0);
  169.            if (dead == 1)
  170.                          replay();
  171. }
  172.  
  173. void replay()
  174. {
  175.            char a;
  176.            cout << "1) Replay 2) Quit" << endl;
  177.            cin >> a;
  178.            switch(a)
  179.            {
  180.                          case '1':
  181.                                     main();
  182.                                     break;
  183.                          case '2':
  184.                                     cout << "Quit" << endl;
  185.                                     break;
  186.                          default:
  187.                                     cout << "Invalid input" << endl;
  188.                                     replay();
  189.                                     break;
  190.            }
  191. }
  192.  
  193. void reveal(int x)
  194. {
  195.            if(x == 0)
  196.                          cout << "o|";
  197.            else if(x == 9)
  198.                          cout << "x|";
  199.            else
  200.                          cout << x << "|";
  201. }
  202.  
  203. int random(int i, int b)
  204. {
  205.            long ran;
  206.            int t = time(0);
  207.            int s;
  208.            srand(t);
  209.            s = ran;
  210.            ran = rand();
  211.            ran >>= ran / (ran * i) + (i * 1337);
  212.            ran = ran % b;
  213.            return ran;
  214. }







ho i seguenti errori potete farmi capire sove sbaglio?


1>------ Inizio compilazione: Progetto: dddd, Configurazione: Debug Win32 ------
1>Compilazione in corso...
1>dddd.cpp
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(14) : error C2144: errore di sintassi: 'void' deve essere preceduto da ';'
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(22) : error C2057: prevista espressione costante
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(22) : error C2466: impossibile allocare una matrice di dimensione costante 0
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(22) : error C2057: prevista espressione costante
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(22) : error C2466: impossibile allocare una matrice di dimensione costante 0
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(22) : error C2087: 'board': indice mancante
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(22) : error C2133: 'board': dimensione sconosciuta
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(23) : error C2057: prevista espressione costante
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(23) : error C2466: impossibile allocare una matrice di dimensione costante 0
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(23) : error C2057: prevista espressione costante
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(23) : error C2466: impossibile allocare una matrice di dimensione costante 0
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(23) : error C2087: 'revealed': indice mancante
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(23) : error C2133: 'revealed': dimensione sconosciuta
1>c:\documents and settings\privato\documenti\visual studio 2008\projects\dddd\dddd\dddd.cpp(210) : warning C4244: 'inizializzazione': conversione da 'time_t' a 'int'. Possibile perdita di dati.
1>Il log di compilazione è stato salvato in 'file://c:\Documents and Settings\privato\Documenti\Visual Studio 2008\Projects\dddd\dddd\Debug\BuildLog.htm'
1>dddd - 13 errore/i, 1 avviso/i
========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========










matteog
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 23:58
Giovedì, 02/07/2009
Testo quotato

Postato originariamente da matteog:
ho i seguenti errori potete farmi capire sove sbaglio?



Dove sbagli? Ma l'hai scritto tu il codice?


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 0:01
Venerdì, 03/07/2009
Ormai mi sembra di capire che i nuovi utenti che postano aiuti per programmi completi, non l'hanno fatto loro :-| potrei sbagliarmi ma boh.. ma questo è il 3 utente di seguito che vedo! :rotfl:

a vedere gli errori immediati tra i tanti possibili è:

void main()
void main()
ci sono due main,

board è stato dichiarato un intero e non matrice ^^'.

Ma mi dico.. che utilità si ha copiando soltanto e non studiando da zero?

Ultima modifica effettuata da Lawliet il 03/07/2009 alle 0:04


"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
cit. theprogrammer
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 12:36
Venerdì, 03/07/2009
primo se viene chiesto qualcosa nn è detto che sia copiato ma ci può essere anche solo un errore nella copia dal programmi di compilazione,secondo quando fate dei programmi può darsi che vi possiate trovare delle difficoltà,terzo se siamo studenti è normale che preferiamo chiedere aiuto a persone che se ne intendono di più!!approposito visto che siamo noi che dobbiamo studiare perchè nn ti ripassi le matrici visto che devono essere dichiarate con il tipo e il nome ma manca solo colonne e righe perchè stranamente nn le ha prese il code e mancano anche nel revelead a questo punto.Poi mi chiedo se quando la gente vi scrive delle richieste gli rispondete così poi sperate anche che qualcuno continui a venirci in questo forum??:pat::k:


matteog
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 13:22
Venerdì, 03/07/2009
Testo quotato

Postato originariamente da matteog:

primo se viene chiesto qualcosa nn è detto che sia copiato ma ci può essere anche solo un errore nella copia dal programmi di compilazione,secondo quando fate dei programmi può darsi che vi possiate trovare delle difficoltà,terzo se siamo studenti è normale che preferiamo chiedere aiuto a persone che se ne intendono di più!!approposito visto che siamo noi che dobbiamo studiare perchè nn ti ripassi le matrici visto che devono essere dichiarate con il tipo e il nome ma manca solo colonne e righe perchè stranamente nn le ha prese il code e mancano anche nel revelead a questo punto.Poi mi chiedo se quando la gente vi scrive delle richieste gli rispondete così poi sperate anche che qualcuno continui a venirci in questo forum??:pat::k:



A parte il fatto che dovresti usare un po' di punteggiatura, in modo da farti comprendere, quello che non hai ben chiaro e' che, in qualsiasi forum, ottieni delle risposte solo se poni le domande in un certo modo.

NON hai usato i tag CODE (e quindi il codice NON e' leggibile), non dici NULLA a commento del codice che (si presume) tu abbia scritto (se non l'hai fatto, non sai neanche commentarlo) e pretendi che altri PRENDANO tutto il codice, lo CORREGGANO (e lo interpretino nelle parti mancanti), lo COMPILINO e ti dicano cosa fare ...

Beh ... se non farai piu' domande, non ci mancherai ...

Ultima modifica effettuata da theprogrammer il 03/07/2009 alle 13:23


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 16:42
Venerdì, 03/07/2009
Testo quotato

Postato originariamente da matteog:

terzo se siamo studenti è normale che preferiamo chiedere aiuto a persone che se ne intendono di più!!



verissimo, però io quando studiavo perdevo anche giorni per capire e cercare di risolvere gli errori poi, SE non riuscivo a far funzionare tutto, chiedevo nel forum(ma quasi mai devo dire)

è inutile chiedere ad altri di risolvere problemi per i quali basterebbe aprire un manuale alla prima pagina in cui ti dice che ci deve essere solo un main....


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 17:18
Venerdì, 03/07/2009
Pure questo devi dire? Quoto tutto ciò che hanno scritto theprogrammer e lorenzo. E inoltre da dove l'hai copiato il codice... se "leggi bene e tutto", stanno pure le correzioni e aiuti da parte di altri utenti!
Faresti bene a studiarti da un buon libro.
Saluti.


"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
cit. theprogrammer
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:23
Venerdì, 03/07/2009
Testo quotato

Postato originariamente da matteog:

primo se viene chiesto qualcosa nn è detto che sia copiato ...



Dicendo certe cose, si rischia di fare brutta figura...

http://www.cplusplus.com/forum/beginner/3042/


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 9:29
Domenica, 05/07/2009
Testo quotato

Postato originariamente da theprogrammer:

Testo quotato

Postato originariamente da matteog:

primo se viene chiesto qualcosa nn è detto che sia copiato ...



Dicendo certe cose, si rischia di fare brutta figura...

http://www.cplusplus.com/forum/beginner/3042/



owned


Ingegnere Informatico
https://ldlagency.it
PM Quote