| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 629 人关注过本帖
标题:小白来问问题啦求高手指教啊
只看楼主 加入收藏
BCCNxinren
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-6-7
结帖率:33.33%
收藏
已结贴  问题点数:5 回复次数:4 
小白来问问题啦求高手指教啊
目的: 有2张地图   在船进入村那个点的时候自动进入小地图(第2张) 然后小地图也能有出口回到大地图 并且还能继续在大地图里正常进行下去

2张地图都是适当的偷懒了  现在只是想问下 怎么才能实现上面提到的目的?  思路很混乱

下面我贴码(请把上述功能实现的前提下修改完整这段码)   顺便把附件也发一下吧(乱码汉字出现 请无视)


主文件:

#include <stdio.h>
#include <stdlib.h>
#define UMI 0
#define RIKU 1
#define FUNE 2
#define MURA 3
#define GYO 13
#define RETU 22

int endflag=0;
int shipx=0;
int shipy=0;
int treasurex=18;
int treasurey=13;
int MURAx=6;
int MURAy=2;
int map[GYO][RETU]={0};

void move(void);
void makemap(void);
void message(void);
void ending(void);

void makemap(void)
{
    int i,j;
    char dummy;
    FILE *fp;

    fp = fopen("map.dat","map2.dat","r");
    if(fp == NULL){
        printf("幐攕偟傑偟偨丅\n");
        exit(1);
    }
    for(i=0;i<GYO;i++){
        for(j=0;j<RETU;j++){
            fscanf(fp,"%d%c",&map[i][j],&dummy);
        }
    }
    fclose(fp);
    map[shipx][shipy]= FUNE;
}

void move()
{
    int i;
    int x,y;

    x=shipx;
    y=shipy;
    printf("\n堏摦愭傪擖椡偟偰偔偩偝偄丅>");
    scanf("%d",&i);
    if(i==2){shipx++;}
    else if(i==4){shipy--;}
    else if(i==6){shipy++;}
    else if(i==8){shipx--;}

    if(shipx>13){shipx=13;}
    if(shipy>22){shipy=22;}
    if(shipx<0){shipx=0;}
    if(shipy<0){shipy=0;}
    if(map[shipx][shipy]==RIKU){shipx=x; shipy=y;}
    if(map[shipx][shipy]==MURA){shipx=x; shipy=y;}
    if((shipx==treasurex)&&(shipy==treasurey)){endflag=1;}
}

void message()
{
    int i,j;

    for(i=0;i<GYO;i++){printf("-");}
    printf("\n");
    for(i=0;i<GYO;i++){
        for(j=0;j<RETU;j++){
            if(map[i][j]==UMI){printf("?");}
            else if(map[i][j]==RIKU){printf("鵂");}
            else if(map[i][j]==FUNE){printf("?");}
            else if(map[i][j]==MURA){printf("懞");}
        }
        printf("\n");
    }
    for(i=0;i<GYO;i++){printf("-");}
    printf("\n");
}

void ending()
{
    printf("偍傔偱偲偆両\n");
}
int main(void)
{
    while(endflag!=1){
        makemap();
        message();
        move();
    }
    ending();
    return(0);
}



地图:

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,
0,0,0,1,1,3,0,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,
0,1,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,
0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,
0,1,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,0,1,
0,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,
0,0,1,1,0,0,0,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,
0,0,1,0,0,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,0,0,
1,0,0,0,1,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,0,1,
1,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,0,1,
0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,0,0,0,1,1,1,
0,1,1,1,1,1,1,0,0,1,0,1,1,0,0,1,1,0,0,0,1,0,

以上
新建文件夹.rar (1.45 KB)

求高手出现     谢谢了
搜索更多相关主题的帖子: include 汉字 
2013-06-07 19:55
木小子雨
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:30
专家分:15
注 册:2013-6-6
收藏
得分:2 
貌似。。。貌似。。。
2013-06-09 08:32
BCCNxinren
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-6-7
收藏
得分:0 
回复 2楼 木小子雨
这就是一个船在海上能自由移动遇到山就受阻停止不能穿过 然后定义了一个宝藏的位置 然后船到宝藏的位置后 游戏结束 现在想添加一个船在大地图里的村的那一位置时触发进入到小地图(第二张地图),由于这里思路就卡住了 所以小地图也就没做出来(随便有个进出口就可以) 就是想问这个功能 怎么才能实现?

#include <stdio.h>
#include <stdlib.h>
#define UMI 0 海
#define RIKU 1 陆地
#define FUNE 2 船
#define GYO 13
#define RETU 22 地图长和宽

int endflag=0;
int shipx=0;
int shipy=0; 船初始坐标
int treasurex=18;
int treasurey=13; 宝藏坐标
int map[GYO][RETU]={0};

void move(void);
void makemap(void);
void message(void);
void ending(void);

void makemap(void)
{
int i,j;
char dummy;
FILE *fp;

fp = fopen("map.dat","r");
if(fp == NULL){
printf("没有地图\n");
exit(1);
}
for(i=0;i<GYO;i++){
for(j=0;j<RETU;j++){
fscanf(fp,"%d%c",&map[i][j],&dummy);
}
}
fclose(fp);
map[shipx][shipy]= FUNE;
}

void move()
{
int i;
int x,y;

x=shipx;
y=shipy;
printf("\n输入2,4,6,8来控制船的移动>");
scanf("%d",&i);
if(i==2){shipx++;}
else if(i==4){shipy--;}
else if(i==6){shipy++;}
else if(i==8){shipx--;}

if(shipx>13){shipx=13;}
if(shipy>22){shipy=22;} 定义船不能出地图之外
if(shipx<0){shipx=0;}
if(shipy<0){shipy=0;}
if(map[shipx][shipy]==RIKU){shipx=x; shipy=y;}
if((shipx==treasurex)&&(shipy==treasurey)){endflag=1;} 当船和宝藏的坐标一致时
}

void message()
{
int i,j;

for(i=0;i<GYO;i++){printf("-");}
printf("\n");
for(i=0;i<GYO;i++){
for(j=0;j<RETU;j++){
if(map[i][j]==UMI){printf("");}
else if(map[i][j]==RIKU){printf("鸺");} 以下3个分别为 陆地 船 海的表示符号
else if(map[i][j]==FUNE){printf("");}
else if(map[i][j]==MURA){printf("蒙");}
}
printf("\n");
}
for(i=0;i<GYO;i++){printf("-");}
printf("\n");
}

void ending()
{
printf("找到宝藏了\n");
}
int main(void)
{
while(endflag!=1){
makemap();
message();
move();
}
ending();
return(0);
}
2013-06-09 09:51
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:2 
来学习的。。表示没有用C写个这样的游戏的,没有明白楼主的意思。



学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-10 23:01
BCCNxinren
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-6-7
收藏
得分:0 
回复 4楼 蚕头燕尾
这就是一个船在海上能自由移动遇到山就受阻停止不能穿过 然后定义了一个宝藏的位置 然后船到宝藏的位置后 游戏结束 现在想添加一个船在大地图里的村的那一位置时触发进入到小地图(第二张地图),由于这里思路就卡住了 所以小地图也就没做出来(随便有个进出口就可以) 就是想问这个功能 怎么才能实现?

#include <stdio.h>
#include <stdlib.h>
#define UMI 0 海
#define RIKU 1 陆地
#define FUNE 2 船
#define GYO 13
#define RETU 22 地图长和宽

int endflag=0;
int shipx=0;
int shipy=0; 船初始坐标
int treasurex=18;
int treasurey=13; 宝藏坐标
int map[GYO][RETU]={0};

void move(void);
void makemap(void);
void message(void);
void ending(void);

void makemap(void)
{
int i,j;
char dummy;
FILE *fp;

fp = fopen("map.dat","r");
if(fp == NULL){
printf("没有地图\n");
exit(1);
}
for(i=0;i<GYO;i++){
for(j=0;j<RETU;j++){
fscanf(fp,"%d%c",&map[i][j],&dummy);
}
}
fclose(fp);
map[shipx][shipy]= FUNE;
}

void move()
{
int i;
int x,y;

x=shipx;
y=shipy;
printf("\n输入2,4,6,8来控制船的移动>");
scanf("%d",&i);
if(i==2){shipx++;}
else if(i==4){shipy--;}
else if(i==6){shipy++;}
else if(i==8){shipx--;}

if(shipx>13){shipx=13;}
if(shipy>22){shipy=22;} 定义船不能出地图之外
if(shipx<0){shipx=0;}
if(shipy<0){shipy=0;}
if(map[shipx][shipy]==RIKU){shipx=x; shipy=y;}
if((shipx==treasurex)&&(shipy==treasurey)){endflag=1;} 当船和宝藏的坐标一致时
}

void message()
{
int i,j;

for(i=0;i<GYO;i++){printf("-");}
printf("\n");
for(i=0;i<GYO;i++){
for(j=0;j<RETU;j++){
if(map[i][j]==UMI){printf("");}
else if(map[i][j]==RIKU){printf("鸺");} 以下3个分别为 陆地 船 海的表示符号
else if(map[i][j]==FUNE){printf("");}
else if(map[i][j]==MURA){printf("蒙");}
}
printf("\n");
}
for(i=0;i<GYO;i++){printf("-");}
printf("\n");
}

void ending()
{
printf("找到宝藏了\n");
}
int main(void)
{
while(endflag!=1){
makemap();
message();
move();
}
ending();
return(0);
}
2013-06-11 19:46
快速回复:小白来问问题啦求高手指教啊
数据加载中...
 
   



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

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