/ CCSprites - iPhone, वस्तुनिष्ठ-ग, मैट्रिक्स, बहुआयामी-सरणी, cocos2d-iphone प्रदर्शित करने के लिए बहुआयामी सरणी के माध्यम से लूप करने के बजाय ऑब्जेक्टिव-सी में टेक्स्ट फाइल के माध्यम से लूपिंग की आवश्यकता है।

CCSprites - iPhone, वस्तुनिष्ठ-सी, मैट्रिक्स, बहुआयामी-सरणी, cocos2d-iphone को प्रदर्शित करने के लिए बहुआयामी सरणी के माध्यम से लूप करने के बजाय ऑब्जेक्टिव-सी में पाठ फ़ाइल के माध्यम से मदद की आवश्यकता है

मैं एक iPhone खेल मैं "मी के बारे में एक सवाल हैविकसित होना। फिलहाल, नीचे दिए गए कोड I "का उपयोग कर रहा हूं, वर्तमान में मैं अपने बहुआयामी सरणी के माध्यम से लूप का उपयोग करता हूं और मेरे दृश्य पर स्थिति ईंटों। मेरे कोड के अनुसार मेरे कोड के भीतर कई दो आयामी सरणियों होने के बजाय (gameLevel1)।

आदर्श रूप में, मैं अपनी परियोजना के भीतर एक पाठ फ़ाइल से पढ़ना चाहता हूं और इसके बजाय मूल्यों के माध्यम से लूप करता हूं।

कृपया ध्यान रखें कि मुझे पसंद हैमेरे खेल के भीतर एक से अधिक स्तर (संभवतः 20) इसलिए मेरी पाठ फ़ाइल में यह निर्धारित करने के लिए कि मुझे किस स्तर पर प्रस्तुत करना है, यह निर्धारित करने के लिए किसी प्रकार की विभाजक रेखा वस्तु होनी चाहिए।

मैं तब किसी प्रकार की विधि के बारे में सोच रहा था जिसे मैं कहता हूं और वह विधि उस स्तर की संख्या को ले जाएगी जिसका मैं प्रतिपादन में रुचि रखता हूं।

जैसे विभाजक के आधार पर कॉल करने की विधि?

- (शून्य) रेंडरलेवल: (एनएसएसटीरिंग *) लेवलनंबर;

विधि का उपयोग:

[स्वयं रेंडर लिवेल: @ "# LEVEL_ONE"];

जैसे पाठ फ़ाइल उदाहरण?

#LEVEL_ONE#
0,0,0,0,0,0,0,0,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,0,0,0,0,0,0,0,0
#LEVEL_TWO#
1,0,0,0,0,0,0,0,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,0,0,0,0,0,0,0,1

कोड जो मैं वर्तमान में उपयोग कर रहा हूं:

int gameLevel[17][9] = {
{ 0,0,0,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,0,0,0,0,0,0,0,0 }
};

for (int row=0; row < 17; row++)
{
for (int col=0; col < 9; col++)
{
thisBrickValue = gameLevel[row][col];
xOffset = 35 * floor(col);
yOffset = 22 * floor(row);

switch (thisBrickValue)
{
case 0: brick = [[CCSprite spriteWithFile:@"block0.png"] autorelease]; break;
case 1: brick = [[CCSprite spriteWithFile:@"block1.png"] autorelease]; break;
}
brick.position = ccp(xOffset, yOffset);
[self addChild:brick];
}
}

उत्तर:

जवाब के लिए 0 № 1

ऐसा लगता है कि आप किसी फ़ाइल को पार्स करना चाहते हैं, जिसका उत्तर इस प्रश्न में उद्देश्य-सी के लिए दिया गया है: मैं ऑब्जेक्टिव-सी में टेक्स्ट फाइल कैसे पार्स करूं?

आपके मामले के लिए, मुझे लगता है कि आप निर्धारित करना चाहते हैंक्या प्रत्येक पंक्ति "#Level X #" पंक्ति है या ब्लॉक की पंक्ति है। तब आप अपने स्वयं के निर्माण के NSMutableArray में जोड़ने के लिए एक पंक्ति में सभी ब्लॉकों की एक सरणी देने के लिए समान घटकों का उपयोग कर सकते हैं (@ @ पास करने के बजाय @ @, "पासिंग फ़ंक्शन"।

एक व्यक्तिगत डिजाइन विकल्प के रूप में, मेरे पास एक अलग फ़ाइल में प्रत्येक स्तर है। यह सभी मौजूदा स्तरों वाले फ़ाइल को अपडेट करने के बिना भविष्य के स्तर / अपडेट को अनुमति देता है।


उत्तर № 2 के लिए 1

एक अलग फ़ाइल में प्रत्येक स्तर होने से बना होगातेजी से लोड करना, विशेष रूप से बाद के स्तरों के लिए, अधिक लचीलेपन की पेशकश करेगा, और शायद इसे लागू करने में आसान होगा। ये बिंदु आपके द्वारा उपयोग किए जाने वाले स्तरों की संख्या के लिए केवल अकादमिक हैं।

मैं वास्तव में निश्चित नहीं हूं कि आपका प्रश्न क्या है, हालांकि। मुझे कुछ प्रश्न चिह्न दिखाई देते हैं, लेकिन वे प्रश्न समाप्त नहीं होते हैं। क्या आप वास्तविक प्रश्न के साथ अपने प्रश्न को अद्यतन करने का मन करेंगे?