用c寫的遊戲——掃雷

學習了,system("cls"); time_t; time(&time);還有格式,思想;


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


int num,side;


typedef struct _mine{
char val;
int show;
int safe;
}mine;


void init(mine a[100][100])
{
int n,i,j,k,h;
printf("請輸入邊長和雷數\n");
scanf("%d%d",&side,&num);
for(i=1;i<=side;i++)
{
for(j=1;j<=side;j++)
{
a[i][j].safe=0;
a[i][j].show=0;
a[i][j].val=' ';
}
}
srand((int)time(0));
n=0;
while(n<num)
{
i=rand()%side+1;
j=rand()%side+1;
if(a[i][j].val=='@')
continue;
a[i][j].val='@';
n++;
}
for(i=1;i<=side;i++)
{
for(j=1;j<=side;j++)
{
if(a[i][j].val!='@')
{
n=0;
for(k=i-1;k<=i+1;k++)
{
for(h=j-1;h<=j+1;h++)
{
if(a[k][h].val=='@')
n++;
}
}
if(n!=0)
{
a[i][j].val=48+n;
}
}
}
}
}


void show(mine a[100][100])
{
int i,j;
printf("  ");
for(i=1;i<=side;i++)
{
printf("%4d",i);
}
printf("\n");
printf("   ");
for(i=1;i<=side;i++)
{
printf("----");
}
printf("\n");
for(i=1;i<=side;i++)
{
printf(" %d | ",i); 
for(j=1;j<=side;j++)
{
if(a[i][j].show==0)
{
printf("%c",'#');
}
else if(a[i][j].show==1)
{
printf("%c",a[i][j].val);
}
else if(a[i][j].show==2) 
{
printf("%c",'?');
}
printf(" | ");
}
printf("\n");
}
printf("   ");
for(i=1;i<=side;i++)
{
printf("----");
}
printf("\n");
}


int shu(mine a[100][100])
{
int i,j,n;
n=0;
for(i=1;i<=side;i++)
{
for(j=1;j<=side;j++)
{
if(a[i][j].show==1)
n++;
}
}
return n;
}


void kongbai(mine a[100][100],int x,int y)
{
int k,h;
if(a[x][y].safe==0)
{
a[x][y].safe=1;
a[x][y].show=1;
if(a[x-1][y].val!='@'&&x-1>=1&&x-1<=side&&y>=1&&y<=side)
{
a[x-1][y].show=1;
if(a[x-1][y].val==' ')
{
kongbai(a,x-1,y);
}
}
if(a[x+1][y].val!='@'&&x+1>=1&&x+1<=side&&y>=1&&y<=side)
{
a[x+1][y].show=1;
if(a[x+1][y].val==' ')
{
kongbai(a,x+1,y);
}
}
if(a[x][y-1].val!='@'&&x>=1&&x<=side&&y-1>=1&&y-1<=side)
{
a[x][y-1].show=1;
if(a[x][y-1].val==' ')
{
kongbai(a,x,y-1);
}
}
if(a[x][y+1].val!='@'&&x>=1&&x<=side&&y+1>=1&&y+1<=side)
{
a[x][y+1].show=1;
if(a[x][y+1].val==' ')
{
kongbai(a,x,y+1);
}
}
}
}


int NUM_mine(mine a[100][100])
{
int i,j,n=0;
for(i=1;i<=side;i++)
{
for(j=1;j<=side;j++)
{
if(a[i][j].val=='?')
{
n++;
}
}
}
return (num-n);
}


void main()
{
mine a[100][100];
int f,x,y,i,j;
char ch;
time_t start_time,end_time;
init(a);
time(&start_time);
while(1)
{
time(&end_time);
system("cls");
show(a);
printf("\n  地雷:%d\t\t\t  時間: %d 秒\n",NUM_mine(a),end_time-start_time);
printf("\n提示: 1爲安全,0爲地雷,格式(1/0 x y)");
scanf("%d%d%d",&f,&x,&y);
if(f==1)
{
a[x][y].show=1;
if(a[x][y].val=='@')
{
a[x][y].val='X';
time(&end_time);
system("cls");
printf("  ");
for(i=1;i<=side;i++)
{
printf("%4d",i);
}
printf("\n");
printf("   ");
for(i=1;i<=side;i++)
{
printf("----");
}
printf("\n");
for(i=1;i<=side;i++)
{
printf(" %d | ",i); 
for(j=1;j<=side;j++)
{
printf("%c",a[i][j].val);
printf(" | ");
}
printf("\n");
}
printf("   ");
for(i=1;i<=side;i++)
{
printf("----");
}
printf("\n");
printf("\n  地雷:%d\t\t\t  時間: %d 秒\n",NUM_mine(a),end_time-start_time);
printf("\n你輸了哈哈哈哈!!!!\n");
printf("還敢來嗎?(Y||N)");
getchar();
scanf("%c",&ch);
if(ch=='Y')
{
init(a);
time(&start_time);
}
else
break;
}
else
{
kongbai(a,x,y);
}
if(shu(a)==(side*side-num))
{
time(&end_time);
system("cls");
printf("  ");
for(i=1;i<=side;i++)
{
printf("%4d",i);
}
printf("\n");
printf("   ");
for(i=1;i<=side;i++)
{
printf("----");
}
printf("\n");
for(i=1;i<=side;i++)
{
printf(" %d | ",i); 
for(j=1;j<=side;j++)
{
printf("%c",a[i][j].val);
printf(" | ");
}
printf("\n");
}
printf("   ");
for(i=1;i<=side;i++)
{
printf("----");
}
printf("\n你贏了,蒙的吧\n");
printf("還敢來嗎?(Y||N)");
getchar();
scanf("%c",&ch);
if(ch=='Y')
{
init(a);
time(&start_time);
}
else
break;
}
}
else if(f==0)
{
a[x][y].show=2;
}
}
}*/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章