2015-04-02 42 views
0

抱歉打擾你!現在我在我的遊戲中有一個「bug」,如果有人能指出我在做錯什麼,這將會非常有幫助。發生什麼事是當我通過Xcode運行我的代碼時,TileMap加載文件的好處。在C++中打開std :: ifstream文件的錯誤(一半作品)

但是,當我得到生成的可執行文件,將其複製並粘貼到不同的位置,然後將所有需要的數據文件粘貼到文件夾(.png文件,.txt文件)中時,遊戲可以正常工作,除了事實該地圖不會加載。

我不確定這個bug是否是由於我在IDE中運行它時單獨更改文件位置所致。

圖片:(對不起,我沒有足夠的信譽使這裏的鏈接)在Xcode

遊戲工作運行:enter image description here 遊戲不是從Xcode中運行:enter image description here

這是代碼的一部分TileMap.cpp與從文本文件中的數據加載到一個數組交易(只是爲了告訴你它的工作原理):

int t_map[20][15] {}; 

TileMap::TileMap(std::string fileName, std::string picFile) 
{ 
    std::ifstream inFS; 
    inFS.open(fileName.c_str()); 
    if(!(inFS.is_open())) 
    { 
     std::cout << "Could not open file.\n"; 
     return; 
    } 

    //controlls row 
    int tt = 0; 

    while(!inFS.eof()) 
    { 
     char buff[100]; 

     //move to buffer thing 
     inFS.getline(buff, 100); 

     const char * token[20] = {}; 
     int j = 0; 

     token[0] = strtok(buff, ","); 

     if(token[0]) 
     { 
      for(j=1;j<COLMAX;j++) 
      { 
       token[j] = strtok(0, ","); 
       if(!token[j]) 
        break; 
      } 
     } 

     for(int i=0;i<COLMAX;i++) 
     { 
      t_map[i][tt] = atoi(token[i]); 
     } 
     tt++; 
    } 

    inFS.close(); 
    //ends the loading the file and starts the image stuff 
    TextureManager::Instance()->load(picFile, "tileMap", Game::Instance()->getRenderer()); 
} 

文本文件的內容我傳:

2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3 
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 

非常感謝您的閱讀和幫助。

+4

可能的重複[爲什麼iostream :: eof裏面的循環條件被認爲是錯誤的?](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-錯誤) – Wintermute 2015-04-02 08:09:34

+0

你如何建立'fileName'和'picFile'參數?你有沒有檢查路徑實際上是正確的?換句話說,它從文件中讀取失敗還是根本找不到文件? – Ionut 2015-04-02 08:34:37

+0

我假設文件路徑是正確的,因爲它在xCode中運行時工作。 – KojinKuro 2015-04-02 08:46:39

回答

0

我找到了自己問題的答案。我需要獲取基本路徑,然後讓系統從那裏搜索文件。