注册 登录
编程论坛 C++教室

多关卡地图推箱子游戏

卡卡西西里 发布于 2020-03-07 12:02, 2924 次点击

# include<stdio.h>
# include<conio.h>
# include<stdlib.h>
//调出地图
    void file(int map[14][16],int n,int flag) //n表示关卡数 ,flag定位位置
{
                                                                                                                                             
   
      
      FILE*fp=fopen("map.txt","r");
      if(fp==NULL)
      {
          printf("文件读取错误\n");
         
      }
      else
      for(int i=0 ;i<14 ;i++)
           {   for(int j=0 ;j<16 ;j++)
                {
                      map[i][j]=fgetc(fp);
                        
                }
             fgetc(fp);
          }
         
        
      
          if(n<=9)
       {
          flag=257*(n-1)+5;//1~9关
         
       }
      
       else
        {
         flag=257*9+258*(n-10)+6;//10~43关定位关卡数
         
         fseek(fp,flag,SEEK_SET);
       }
         
          fclose(fp) ;                                
            

  }
   



 //地图的生成
void drawmap(int map[14][16])

{   
     
     for( int i=0 ; i<14 ; i++)
     {   for( int j=0 ; j<16 ; j++)
         
      {   
               
           switch (map[i][j])
        {      
           case '0':
                           printf("  ");//空地 打入两个空格
                           break;
               case '1':
                            printf("■") ;//墙
                            break;
               case '2':
                            printf("  ");//内部空地 打入两个空格
                            break;
               case '3':
                         printf("×");//目的地
                         break;
            case '4':
                          
                          printf("◎");//箱子
                          break;
            case '5':
                         printf("☆");//箱子推到目的地后的显示
                         break;
            case '6':
                         printf("♀");//小人
                         break;
           }
           
         
         
     }      printf("\n");
             }
            
            
      
}
   
   

int main()
{    int N,FLAG;
     int MAP[14][16];
     printf("please input your level:%d\n");
     scanf("%d",&N);
     if(N>0&&N<=43)
     {
         file(MAP,N,FLAG);
         drawmap(MAP);
     }
      
     else
     printf("Game Over!\n");
   
   
    return 0;
   
   
   
}
11 回复
#2
卡卡西西里2020-03-07 12:03
麻烦帮我看一下为什么总是输入关卡数却总是在第一关
#3
shuidaan2020-03-07 14:35
新手。想请教一下  你们用什么编辑工具,来写C++  ,请指教。新手
#4
xianfajushi2020-03-07 16:42
没有提供"map.txt"文件无法测试
#5
xianfajushi2020-03-07 16:43
自己开贴,莫在别人贴里面问
以下是引用shuidaan在2020-3-7 14:35:09的发言:

新手。想请教一下  你们用什么编辑工具,来写C++  ,请指教。新手

#6
叶纤2020-03-07 20:42
回复 3楼 shuidaan
C4driod.......今天刚下的电脑端,用的code::block
#7
return_02020-03-08 15:39
用devc++
#8
return_02020-03-08 15:48
你都没把map文件给出来,我们懵了。
#9
倾听心跳2020-03-25 09:26
你调用的地图生成函数只会打印第一关的
#10
zwh20112022-06-27 21:35
map.txt在哪里
#11
zwh20112022-06-28 09:19
运行不了

#12
bsdn2022-06-28 09:52
666
1