|
LQ Newbie
Registered: Jul 2007
Posts: 2
Original Poster
Rep:
|
max_r and mappa[][][] are numbers defined...
here's alla the program
#include<iostream.h>
#include<time.h>
#include <passe_par_tout.h>
#include<stdlib.h>
# define DIM 30
int bomba,r,c,max_c,max_r,mappa [DIM][DIM][2],andare_di_accordo,o,q,s;
double z[2];
int controllo (int mappa [DIM][DIM][2], int max_c, int max_r, int bomba)
{
int r,c,k=0;
for (r=0;r<max_r;r++)
{
for (c=0;c<max_c;c++)
{
if (mappa[r][c][0]==9) k++;
}
}
if (!(k-bomba)) return (1);
else
{
for (r=0;r<max_r;r++)
{
for (c=0;c<max_c;c++) mappa [r][c][0]=0;
}
}
return (0);
}
//-------------------------------------------------------------------------------------------
void leggimappa (int mappa[DIM][DIM][2])
{
int i,j,k,p,l;
for(i=0;i<bomba;i++)
{
p=random();
l=random();
r=(p/2147483647.)*(max_r);
c=(l/2147483647.)*(max_c);
mappa [r][c][0]=9;
}
if (!controllo(mappa, max_r, max_c, bomba)) leggimappa (mappa);
for (r=0;r<max_r;r++)
{
for (c=0;c<max_c;c++)
{
k=0;
for (i=r-1;i<=r+1;i++)
{
for (j=c-1;j<=c+1;j++)
{
if (i>=0 && i<max_r && j>=0 && j<max_c && (i!=r || j!=c))
{
if (mappa[i][j][0]==9) ++k;
}
}
}
if (mappa [r][c][0] !=9) mappa [r][c][0]=k;
}
}
return;
}
//-------------------------------------------------------------------------------------------
void disegnamappa1 (int mappa[DIM][DIM][2])
{
int r,c;
for (r=0;r<max_r;r++)
{
for (c=0;c<max_c;c++)
{
cout<<mappa[r][c][0];
}
cout<<endl;
}
return;
}
//-------------------------------------------------------------------------------------------
void lamappa (int mappa[DIM][DIM][2])
{
cout<<"Quanto vuoi grande il campo? (n° righe,colonne)\n";
cin>>max_r;
cin>>max_c;
char *stringa="minato!";
int X,Y;
double xmin=0, ymin=0, xmax=max_c, ymax=max_r;
X=(max_c*16);
Y=(max_r*16);
m_startg(stringa,&X,&Y);
X=100;
Y=100;
m_window(&X,&Y);
m_frame(&xmin,&ymin,&xmax,&ymax);
int r,c;
X=1,Y=1;
m_use_as_pixmap(&X,&Y);
int K;
char *b="nulla.ppm";
for (r=0;r<max_r;r++)
{
for (c=0;c<max_c;c++)
{
int a[]={r*16,c*16,0,0,max_r,max_c,0};
m_load_external_pixmap(&(K=1), b, a);
}
}
}
//-------------------------------------------------------------------------------------------
void click()
{
int i=m_mouse(z);
int M=z[0],N=z[1];
cout<<M<<endl<<N<<endl;
if(mappa[(max_r-1)-N][M][0]==9)
{
cout<<"Sei esploso schiappa!!\n";
o++;
}
else
{
int K;
char *b;
switch (mappa[(max_r-1)-N][M][0])
{
case 1: b="a.ppm";
break;
case 2: b="b.ppm";
break;
case 3: b="c.ppm";
break;
case 4: b="d.ppm";
break;
case 5: b="e.ppm";
break;
case 6: b="f.ppm";
break;
case 7: b="g.ppm";
break;
case 8: b="h.ppm";
break;
case 9: b="mina.ppm";
break;
z[0]=M, z[1]=N;
int a[]={M*16,(max_r-N)*16,0,0,max_r,max_c,0};
int X=1,Y=1;
m_use_as_pixmap(&X,&Y);
m_load_external_pixmap(&(K=1), b, a);
q++;
}
}
}
//-------------------------------------------------------------------------------------------
int main()
{
s=time(0);
srandom (s);
cout<<"Quante bombe vuoi?"<<endl;
cin>>bomba;
//griglia();
lamappa(mappa);
leggimappa(mappa);
disegnamappa1(mappa);
for (int G=0;;G++)
{
click();
if(o!=0) break;
}
int K=0;
m_wait_for_events (&K);
//cout<<max_c<<endl<<max_r<<endl;
}
|