C語(yǔ)言——迷宮游戲

游戲效果:
主界面:

游戲界面(每次出現(xiàn)的迷宮都不一樣的):

源代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int i,j,x,y,a[50][50],f=0,m=0,x0,x1,y0,y1,q,N;
char c,n='1';
void input()
{
system("cls");
srand(time(0));
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=1;
}
}
x0=rand()%2+N/2-1;
y0=rand()%2+N/2-1;
a[x0][y0]=2;
x=x0;y=y0;
while(x*y!=0 && x!=N-1 && y!=N-1)
{
q=rand()%3-1;
m=m+q;
if(m<0)m=3;
else if(m>3)m=0;
switch (m)
{
case 0:
x++;
if(a[x][y]!=2)
a[x][y]=0;
break;
case 1:x--;
if(a[x][y]!=2)
a[x][y]=0;
break;
case 2:y++;
if(a[x][y]!=2)
a[x][y]=0;
break;
case 3:y--;
if(a[x][y]!=2)
a[x][y]=0;
break;
}
}
x1=x;
y1=y;
a[x1][y1]=3;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(a[i][j]==1)
a[i][j]=rand()%2;
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
switch(a[i][j])
{
case 0:printf(" ");break;
case 1:printf("※");break;
case 2:
printf("○");
x=j;
y=i;
break;
case 3:printf("★");break;
}
}
printf("\n");
}
}
void start()
{
n='1';
f=0;
printf("歡迎來(lái)到趣味冒險(xiǎn)島~\\(≧▽≦)/~,\n\n\n請(qǐng)選擇游戲難度:\n\n\n\t1、容易\n\n\n\t\t2、中等\n\n\n\t3、困難\n\n\n\t\t0、結(jié)束游戲\n");
scanf("%d",&N);
if(N==0)exit(0);
N=N*10;
input();
}
void print()
{
system("cls");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
switch(a[i][j])
{
case 0:printf(" ");break;
case 1:printf("※");break;
case 2:printf("○");break;
case 3:printf("★");break;
}
}
printf("\n");
}
}
void move()
{
c=getch();
if(c>'Z')c-=32;
switch(c)
{
case 'A':
if((a[y][x-1]==0) && x>0)
{
a[y][x]=0;
x--;
a[y][x]=2;
}
if(a[y][x-1]==3)f=1;
break;
case 'D':
if((a[y][x+1]==0) && x<N-1)
{
a[y][x]=0;
x++;
a[y][x]=2;
}
else if(a[y][x+1]==3)f=1;
break;
case 'W':
if((a[y-1][x]==0) && y>0)
{
a[y][x]=0;
y--;
a[y][x]=2;
}
else if(a[y-1][x]==3)f=1;
break;
case 'S':
if((a[y+1][x]==0) && y<N-1)
{
a[y][x]=0;
y++;
a[y][x]=2;
}
else if(a[y+1][x]==3)f=1;
break;
}
}
void main()
{
system("color ac");
while(1)
{
system("cls");
start();
while(f==0)
{
move();
print();
}
printf("恭喜你成功走出迷宮:\n再來(lái)一次?\n1、是\t2、否\n");
n=getch();
if(n=='2')break;
}
}
?