注册 登录
编程论坛 C语言论坛

推箱子多关卡地图生成

卡卡西西里 发布于 2020-03-07 11:58, 1898 次点击
# 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;
   
   
   
}
    为什么当我输入关卡数的时候总是出现在第一关呢?麻烦各位大佬帮我看一下
4 回复
#2
xianfajushi2020-03-07 16:45
提供"map.txt"内容或上载改文件,否则,没弄过的人无法去帮你做测试。
#3
return_02020-03-09 19:54
你这个帖子是在c++所能触及的所有地方发了一遍啊
#4
return_02020-03-09 19:54
写的的确是不错,
#5
return_02020-03-11 15:42
厉害
1