Mayın tarlası ödevi

Katılım
25 Ocak 2018
Mesajlar
2
Merhaba mayın tarlası ödevim var. Oyunda yandıktan sonra tekrar başlanması veya çıkılması seçeneği ayarlamayı bilmiyorum. Ayrıca her sütunda ve satırda en fazla 3 mayın olması gerektiği söylendi.Bunu da bilmiyorum. İnternetten bulduğum oyunu kendime göre düzenledim sadece. Yardımcı olursanız sevinirim.

Kod:
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <cstring>


FILE *outputf = fopen ("mine.out","w");
int width=0,length=0,mines=0,map[200][200],hiddenmap[200][200],checked[200][200];
int inputy,inputx,ax,ay,x,y;
void printintro()
{
while (width>10 || width <9)
{
printf("Genislik Degeri Giriniz (Suanlik Sadece 10x10 Oynanabilir) : ");
scanf("%d",&width);
}
while (length>10 || length <9)
{
printf("Uzunluk Degeri Giriniz (Suanlik Sadece 10x10 Oynanabilir) : ");
scanf("%d",&length);
}
while (mines>15 || mines <14)
{
printf("Mayin Sayisini Giriniz (Suanlik Sadece 15 Mayin Secilebilir): ");
scanf("%d",&mines);
}
printf("Oyun yukleniyor...\n\nOrnekteki Gibi Mayinsiz Bolgeyi Sectikce Sayilar Mayinlara Olan Uzakligi Gosterir : \n\n");
}
void createmap()
{
srand(time(0));
for (int a=1; a<length+1; a++)
for (int b=1; b<width+1; b++)
{
map[a]=0;
hiddenmap[a] = 'X';
}
int temp_width,temp_length;
for (int i = 1; i <= mines; i++)
{
temp_length= rand()%length+1;
temp_width= rand()%width+1;
if (map[temp_length][temp_width]!= '*')
map[temp_length][temp_width]= '*';
else i--;


}

}
void putnumber()
{
for (int a=1; a<length+1; a++)
for (int b=1; b<width+1; b++)
{
if (map[a]!= '*')
{
if (map[a-1][b-1] == '*')
map[a]++;
if (map[a-1] == '*')
map[a]++;
if (map[a-1][b+1] == '*')
map[a]++;
if (map[a][b-1] == '*')
map[a]++;
if (map[a][b+1] == '*')
map[a]++;
if (map[a+1][b-1] == '*')
map[a]++;
if (map[a+1] == '*')
map[a]++;
if (map[a+1][b+1] == '*')
map[a]++;
}
}


}
void printmap()
{
for (int a=1; a<length+1; a++)
{
for (int b=1; b<width+1; b++)
{
if (map[a]!= '*')
{
fprintf(outputf,"%d ",map[a]);
printf("%d ",map[a]);
}
else
{
fprintf(outputf,"%c ",map[a]);
printf("%c ",map[a]);
}
}
fprintf(outputf,"\n");
printf("\n");

}
}
void printcmdmap()
{
printf("\n\nOYUN BASLIYOR! DIKKATLI OYNA PATLAMA!\n\n");
for (int c=1; c< width+1 ; c++)
printf("%2d ",c);
printf("\n");
for (int a=1; a<length+1; a++)
{
printf("%2d ",a);
for (int b=1; b<width+1; b++)
{
if (hiddenmap[a]== 'X')
printf("%c ",hiddenmap[a]);
else
printf("%d ",hiddenmap[a]);
}

printf("\n");
}
printf("\n");
}
int checkxy (int k, int l)
{
if (k > 0 && k < length+1 && l > 0 && l < width+1)
return 1;
else return 0;
}
void foo(int p)
{
switch(p){
case 1 : ay=y-1 ; ax=x-1; break;
case 2 : ay=y-1 ; ax=x; break;
case 3 : ay=y-1 ; ax=x+1; break;
case 4 : ay=y ; ax=x-1; break;
case 5 : ay=y ; ax=x+1; break;
case 6 : ay=y+1 ; ax=x-1; break;
case 7 : ay=y+1 ; ax=x; break;
case 8 : ay=y+1 ; ax=x+1; break;
}
}
void checkzeros(int b, int a)
{
y=b;
x=a;
for (int i = 1 ; i < 9 ; i++ )
{
foo(i);
if (checkxy(ay,ax)==1 && checked[ay][ax]== 0)
{
hiddenmap[ay][ax]=map[ay][ax];
if (hiddenmap[ay][ax]== 0)
{
checked[ay][ax]=1;
checkzeros(ay,ax);
}
}
}
/*if (checkxy((y-1),(x-1))== 1)
{
hiddenmap[y-1][x-1]=map[y-1][x-1];
if (hiddenmap[y-1][x-1]== 0 )
checkzeros((y-1),(x-1));
}
if (checkxy((y-1),(x))== 1)
{
hiddenmap[y-1][x]=map[y-1][x];
if (hiddenmap[y-1][x]== 0 )
checkzeros((y-1),(x));
}
if (checkxy((y-1),(x+1))== 1)
{
hiddenmap[y-1][x+1]=map[y-1][x+1];
if (hiddenmap[y-1][x+1]== 0)
checkzeros((y-1),(x+1));
}
if (checkxy((y),(x-1))== 1)
{
hiddenmap[y][x-1]=map[y][x-1];
if (hiddenmap[y][x-1]== 0)
checkzeros((y),(x-1));
}
if (checkxy((y),(x+1))== 1)
{
hiddenmap[y][x+1]=map[y][x+1];
if (hiddenmap[y][x+1]== 0)
checkzeros((y),(x+1));
}
if (checkxy((y+1),(x-1))== 1)
{
hiddenmap[y+1][x-1]=map[y+1][x-1];
if (hiddenmap[y+1][x-1]== 0)
checkzeros((y+1),(x-1));
}
if (checkxy((y+1),(x))== 1)
{
hiddenmap[y+1][x]=map[y+1][x];
if (hiddenmap[y+1][x]== 0)
checkzeros((y+1),(x));
}
if (checkxy((y+1),(x+1))== 1)
{
hiddenmap[y+1][x+1]=map[y+1][x+1];
if (hiddenmap[y+1][x+1]== 0)
checkzeros((y+1),(x+1));
}*/
}
void scancheck()
{
printf("x : ");
scanf("%d",&inputx);
printf("y : ");
scanf("%d",&inputy);
if (map[inputy][inputx]!= '*' )
{
hiddenmap[inputy][inputx] = map[inputy][inputx];
checked[inputy][inputx]= 1;
if (hiddenmap[inputy][inputx] == 0)
checkzeros(inputy,inputx);

printcmdmap();
scancheck();
}
else
{
system("color cf");
printf("\n\nKAYBETTIN TEKRAR DENE!\n\n");
printmap();
printf("\n\nOyununuz kaydediliyor... \nOyun dosyasini acarak oyun bilgilerinizi gorebilirsiniz.\n\n");
}
}
void fcall()
{
printintro();
createmap();
putnumber();
printmap();
printcmdmap();
scancheck();
}
int main()
{
fcall();
fclose(outputf);
return 1;


}
 
Son düzenleyen: Moderatör:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…