| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:求大神帮我看看怎么才能把函数写的更加通用性,我已经2天没有睡好觉了!
只看楼主 加入收藏
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:4 
求大神帮我看看怎么才能把函数写的更加通用性,我已经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
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
搜索更多相关主题的帖子: 用户 知识 
2014-03-16 10:45
fragileeye
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:107
专家分:387
注 册:2011-5-21
收藏
得分:5 
堆分配,函数传参如下
int func( int sizex, int sizey )
{
    int i = 0;
    int **ibuf = NULL;
    buf = (int **)malloc( sizex * sizeof(int *) );
    for( i = 0; i < sizex; i++ )
    {
        buf[i] = (int *)malloc( sizey * sizeof(int) );
    }
    //buf可用
    for( i = 0; i < sizex; i++ )
    {
        free( ppibuf[i] );
    }
    free(ppibuf);
}
2014-03-16 11:29
zapjun
Rank: 1
来 自:广西柳州
等 级:新手上路
帖 子:30
专家分:8
注 册:2013-12-25
收藏
得分:0 
回复 2楼 fragileeye
大神啊,大神,我们还没有学到指针呢,要是能用指针我就不费力了,老师也不会认可我们的作业啊。

西游记告诉我既没有后台、也没有师傅!所以老实敲代码!
2014-03-16 20:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
把那个二维数组弄到形参里

其实也是指针的

DO IT YOURSELF !
2014-03-16 23:05
fragileeye
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:107
专家分:387
注 册:2011-5-21
收藏
得分:0 
回复 3楼 zapjun
那再简单不过
申请个大数组,用多少输出多少。
s[100][100]
2014-03-20 12:44
快速回复:求大神帮我看看怎么才能把函数写的更加通用性,我已经2天没有睡好觉了 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013430 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved