求大神帮我看看怎么才能把函数写的更加通用性,我已经2天没有睡好觉了!
我希望是函数能够多一些通用性,大家看1初级、2中级、3高级的地图函数其实是一样的,但是就是因为那个数组大小不一样,可我尝试了好多办法,就是不能把地图三个函数等级1初级、2中级、3高级合成一个!!我希望是在主函数判断用户选择的级别是1~2~3然后调用地图一个函数就能出地图了,不需要这三个函数:
void map_one(int ,int ,int );1初级
void map_two(int ,int ,int );2中级
void map_three(int ,int ,int );3高级
我的知识有限,希望大师多多指点!我是新人!
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\主函数调用\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//第一步:做一个地图函数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include "jibie.h"
#include "map.h"
const int chu=9;
const int one=9;
void main()
{
int a=0,ji=0;
printf("请选择级别(1初级、2中级、3高级):");
scanf("%d",&a);
ji=jibie(a);//级别轮错和玩家选择难度
map(ji);//玩家选择的地图!
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\这是H文件\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#ifndef MAP_H
#define MAP_H
#include <conio.h>
#include "move.h"
void map_one(int ,int ,int );1初级
void map_two(int ,int ,int );2中级
void map_three(int ,int ,int );3高级
void map(int ji)
{
if(ji==1)
{
int sx=9,sy=9,lei=10;
map_one(sx,sy,lei);
}
else if(ji==2)
{
int sx=16,sy=16,lei=40;
map_two(sx,sy,lei);
}
else
{
int sx=16,sy=30,lei=100;
map_three(sx,sy,lei);
}
}
//初级地图:
void map_one(int sx,int sy,int lei)//初始化地图方块!
{
srand(time(NULL));
int s[9][9];
int x=0,y=0;//控制的下标!
int a=0,b=0,c=0,d=0,t=0;//随机地雷!
for(int k=0; k<lei; k++)
{
a=rand()%sx;
b=rand()%sy;
if((a!=0&&b!=0)&&(a!=c&&b!=d))
{
s[a][b]=4;
c=a;
d=b;
t=k;
}
else{k=t;}
}
char ch=0;
while(ch!='q')
{
system("cls");
for(int a=0; a<sx; a++)
{
for(int b=0; b<sy; b++)
{
if(s[a][b]!=4)
{
s[a][b]=1;
}
}
}
for(int i=0; i<sx; i++)//打印地图
{
for(int j=0; j<sy; j++)
{
if(i==x&&j==y)
{
if(s[i][j]!=4)
{
s[i][j]=2;
}
}
switch(s[i][j])
{
case 1:
{
printf("□");
break;
}
case 2:
{
printf("♀");
break;
}
case 4:
{
printf("◎");
break;
}
}
}
printf("\n");
}
move(&x,&y,sx,sy);
}//while
}
//中级地图:
void map_two(int sx,int sy,int lei)//初级地图
{
int s[16][16];//初始化地图方块!
int x=0,y=0;//控制的下标!
srand(time(NULL));//随机地雷!
int a=0,b=0,c=0,d=0,t=0;
for(int k=0; k<lei; k++)
{
a=rand()%sx;
b=rand()%sy;
if((a!=0&&b!=0)&&(a!=c&&b!=d))
{
s[a][b]=4;
c=a;
d=b;
t=k;
}
else{k=t;}
}
char ch=0;
while(ch!='q')
{
system("cls");
for(int a=0; a<sx; a++)
{
for(int b=0; b<sy; b++)
{
if(s[a][b]!=4)
{
s[a][b]=1;
}
}
}
for(int i=0; i<sx; i++)//打印地图
{
for(int j=0; j<sy; j++)
{
if(i==x&&j==y)
{
if(s[i][j]!=4)
{
s[i][j]=2;
}
}
switch(s[i][j])
{
case 1:
{
printf("□");
break;
}
case 2:
{
printf("♀");
break;
}
case 4:
{
printf("◎");
break;
}
}
}
printf("\n");
}
move(&x,&y,sx,sy);
}//while
}
//高级地图:
void map_three(int sx,int sy,int lei)//初级地图
{
int s[16][30];//初始化地图方块!
int x=0,y=0;//控制的下标!
srand(time(NULL));//随机地雷!
int a=0,b=0,c=0,d=0,t=0;
for(int k=0; k<lei; k++)
{
a=rand()%sx;
b=rand()%sy;
if((a!=0&&b!=0)&&(a!=c&&b!=d))
{
s[a][b]=4;
c=a;
d=b;
t=k;
}
else{k=t;}
}
char ch=0;
while(ch!='q')
{
system("cls");
for(int a=0; a<sx; a++)
{
for(int b=0; b<sy; b++)
{
if(s[a][b]!=4)
{
s[a][b]=1;
}
}
}
for(int i=0; i<sx; i++)//打印地图
{
for(int j=0; j<sy; j++)
{
if(i==x&&j==y)
{
if(s[i][j]!=4)
{
s[i][j]=2;
}
}
switch(s[i][j])
{
case 1:
{
printf("□");
break;
}
case 2:
{
printf("♀");
break;
}
case 4:
{
printf("◎");
break;
}
}
}
printf("\n");
}
move(&x,&y,sx,sy);
}//while
}
#endif
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\