Cocos2d-x 3.x中讀取csv資料檔案
#ifndef _TSXT_CSV_H_ #define _TSXT_CSV_H_ #include "cocos2d.h" #include "../self/SF.h" class TestCSV : public cocos2d:: Ref { public : static const char * FILE_NAME ; static cocos2d :: Vector< TestCSV *> s_textCSVVec ; static bool initStatic(); static void finalizeStatic(); public : TestCSV (); ~ TestCSV(); virtual bool init( std :: map< std :: string , std:: string > row ); private : CC_SYNTHESIZE_READONLY (int ,m_idx , Index); CC_SYNTHESIZE_READONLY ( std:: string , m_name, Name ); CC_SYNTHESIZE_READONLY ( std:: string , m_value, Value ); }; #endif
TestCSV.cpp
#include "TestCSV.h" USING_NS_CC ; const char * TestCSV :: FILE_NAME = "test_csv.csv" ; cocos2d :: Vector< TestCSV *> TestCSV ::s_textCSVVec ; bool TestCSV :: initStatic() { std :: string data = SFUtils:: getFileData (FILE_NAME ); IF_NULL_RETURN_FALSE (data . c_str()); /*CSV格式的檔案每一行最後都是\n\r,所以,可以根據其來將每一行分開*/ std :: vector< std :: string> strVec = SFUtils :: splitString( data , "\r" ); /*dataVec用來儲存所有行的資訊,每個資訊都是成對兒出現的map<key:string,value:string> 這裡的key即ID,name等 */ std :: vector< std :: map< std :: string, std:: string > > dataVec ; /*解析第一行,第一行的資料將是後面行的key值*/ std :: vector< std :: string> nameVec = SFUtils ::splitString ( strVec[ 0 ], "," ); /*解析所有的行,並且新增的dataVec中*/ for ( int i = 1 ; i < strVec. size (); i ++) { std :: map< std :: string, std:: string > rowMap ; std :: vector< std :: string> valueVec = SFUtils ::splitString ( strVec[ i ], "," ); for ( int j = 0 ; j < valueVec. size (); j ++) { rowMap . insert( std :: make_pair( nameVec [j ], valueVec [j ])); } dataVec . push_back( rowMap ); } /*確保陣列中沒有資料*/ s_textCSVVec .clear (); /*將資料轉換為資料物件*/ for ( int i = 0 ; i < dataVec. size () - 1 ; i ++) { TestCSV * pData = new ( std:: nothrow )TestCSV (); if ( pData &&pData -> init( dataVec . at( i ))) { s_textCSVVec .pushBack ( pData); } else { CC_SAFE_RELEASE (pData ); } } return true ; } void TestCSV :: finalizeStatic() { s_textCSVVec .clear (); } TestCSV :: TestCSV() : m_idx(- 1 ) {} TestCSV :: ~TestCSV () {} bool TestCSV :: init( std :: map< std :: string, std:: string > row ) { /*解析資料*/ m_idx = atoi( row ["ID" ]. c_str()); m_name = row[ "name" ]; m_value = row[ "value" ]; return true ; }
用到的其他方法:
std :: string SFUtils ::getFileData ( const char * pFileName)
{
std :: string filePath = FileUtils :: getInstance()-> fullPathForFilename (pFileName );
FileUtils ::getInstance ()-> setPopupNotify( false );
ssize_t fileSize = 0 ;
std :: string data = FileUtils :: getInstance()-> getStringFromFile (filePath . c_str());
FileUtils ::getInstance ()-> setPopupNotify( true );
return data ;
}
//字串拆分
std :: vector< std :: string> SFUtils:: splitString ( std:: string str , std :: string pattern )
{
std :: string:: size_type pos ;
std :: vector< std :: string> result;
str += pattern;
unsigned int size = str . size();
for ( unsigned int i = 0 ; i < size ; i ++)
{
pos = str. find (pattern , i );
if ( pos < size)
{
std :: string s = str. substr (i , pos - i );
result .push_back ( s);
i = pos + pattern . size() - 1 ;
}
}
return result ;
}
用到的資料:
相關推薦
Cocos2d-x 3.x中讀取csv資料檔案
遊戲開發中,資料檔案通常是儲存在xml,json,csv等格式的檔案中,這裡實現了CSV檔案的解析。 1.為什麼是CSV? 資料檔案為什麼儲存在CSV檔案中呢? a,同樣的資料放到CSV中要比放在xml和json中要小。 b,CSV的解析也比較簡單。
Spark建立DataFrame和讀取CSV資料檔案
之前寫的程式中,有些API在Spark SQLContext沒有,我計算的結果先儲存在rdd中,最後在使用RDD轉換成dataframe進行儲存,話不多說下面是程式碼. //一個StruceFie
Cocos2d-x 3.0中 物理碰撞檢測中onContactBegin回調函數不響應問題
track 後來 which compare mar details egl def trac 好吧,事實上這篇也是暫時冒出來的,近期朋友要做個物理遊戲,曾經做物理還是用box2d,呃。確實要花些功夫才幹搞懂當中的精髓,可是聽講這套引擎又一次封裝了一次。要easy非
【玩轉cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader?
有小夥伴提出了這個問題,其實GLProgramCocos2d-x引擎自帶了。完全可以直接拿來用。先上圖吧。使用opengl前後的對比: 1.在cpp中使用openGL shader。 (1)新
cocos2d-x 3.2 XML讀取第二章(優化)
在第一章分別清晰的列出每一步的步驟,但這樣的程式碼冗餘,但XML多的時候,更是寫了N行程式碼,進行重構。 詳細:在init()中 tinyxml2::XMLDocument* homework = new tinyxml2::XMLDocument(); homewor
Cocos2d-x 3.0中 物理碰撞檢測中onContactBegin回撥函式不響應問題
好吧,其實這篇也是臨時冒出來的,最近朋友要做個物理遊戲,以前做物理還是用box2d,呃,確實要花些功夫才能搞懂其中的精髓,但是聽講這套引擎重新封裝了一次,要容易很多,所以就簡單嘗試了一下,感覺確實要簡單不少,不過在這其中還是遇到了些問題,首先就來說說onContactBeg
Cocos2d-x 3.x序列幀動畫
vector 序列幀 bash cpp ams with 序列 object -s Animation : 一個給精靈對象執行的幀動畫對象。 Animate:是將動畫包裝成動作的類。 AnimationCache:管理動畫的單例。 簡介 Animat
Cocos2d-x 3 X手遊開發例項詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
cocos2d-x 3.X eclipse gradle 多渠道多SDK打包配置教程(二)
根據上一篇的指導,應該已經可以出一個同資源同SDK的包了,現在看下在eclipse gradle下如何像Android studio一樣一鍵打出不同SDK接入的渠道包吧 首先一個專案一個專案的複製貼上到工程下,大概是這樣的 每個渠道都建立好build.gradle,裡
【 專欄 】- Cocos2d-x 3.x 圖形學渲染
Cocos2d-x 3.x 圖形學渲染 該專欄主要是介紹Cocos2d-x 3.x圖形學渲染技術講解,針對的是3D模型的材質渲染,幫助喜歡3D的開發者快速掌握該技術。。。。。
Python中使用 pandas 來讀取csv資料
import pandas as pd daily_engagement = pd.read_csv('enrollments.csv') len(daily_engagement['account_k
Cocos2d-x 3.x 頭像選擇器,本地相簿與拍照+頭像編輯功能(Android、IOS雙平臺實現)
大連遊戲行業不是太發達,最後選擇在一家應用外包公司工作,在工作和業餘學習過程中積累了一點微不住道的經驗,希望分享給熱愛遊戲的小夥伴們。 在應用開發過程中會常常有使用者上傳頭像的功能,在網上找了N多資料發現沒有人具體介紹過該用cocos2d-x實現。這篇文章就來介紹一下如何在
cocos2d-x-3.x吞噬點選觸控事件
使用版本是 cocos2d-x-3.1.4 彈出對話方塊,有一個背景,吞噬觸控或者點選事件,使觸控或者點選事件不被傳遞下去,將addEventListenerWithSceneGraphPriority函式裡面的this改成當前layer就可以啦 //
【cocos2d-x 3.x 學習與應用總結】4: 理解CC_CALLBACK_0, CC_CALLBACK_1, CC_CALLBACK_2, CC_CALLBACK_3
前言 得益於C++11的新特性,cocos 3.x版本在很多地方的程式碼看起來都優美了許多。這其中就包括一些回撥函式的寫法,CC_CALLBACK_N系列巨集的作用是對一個成員函式進行適配並返回一個回撥函式。本文介紹一下我對CC_CALLBACK_N系列巨集的
cocos2d-x 3.x BabeLua 外掛不能斷點除錯
cocos2d-x 3.x版本, exe 是執行檔案 src是指令碼資料夾 res是資原始檔夾 lua指令碼在src裡面,但是BabeLua設定的指令碼路徑沒有生效,導致找不到指令碼 後來在 AppDelegate.cpp裡面把src加到搜尋路徑下,就可以除錯得到了
cocos2d-x 3.x C++和Lua通訊方式:Lua堆疊正數索引和負數索引的關係和用法
用cocos2d-x 編寫遊戲的過程中,我們很可能會用到Lua檔案。引用一本書上面的話,Lua最大的優勢在於,不用重新編譯專案就可以修改遊戲邏輯,大大縮減了開發程序。我用的是cocos2d-x
cocos2d-x 3.x遊戲開發學習筆記(1)--mac下配置cocos2d-x 3.x開發環境
原文:http://blog.csdn.net/likendsl/article/details/34617725 開啟使用者目錄下.bash_profile檔案,配置環境 [python] view plaincopyprint? vim ~/.b
009-UE4中藍圖讀取CSV資料表資料
Step1.使用Excel建立CSV檔案 表單內容如下: Step2.Ue4中建立名為TestData的結構體 結構體欄位如下(和表單保持一致): Step3.CVS檔案匯入UE4 指定資料表型
關於cocos2d-x 3.x Layer 與 Scene 錨點更改問題
***************************************轉載請註明出處:http://blog.csdn.net/lttree**************************
用Android studio建立Cocos2d-x 3.X專案
如果你還在用eclipse那你就out了,Android Studio從1.3版開始支援對C++的編輯(雖然從目前來看用Android Studio來編輯C++還比較蛋疼)。而且Cocos2d-x從3.7版開始優化對android studio的支援,相信這一趨勢還會繼續。