我最近開始自學Obj-c並開展了一個大型項目,以學習語言的原理。我正在做一個14瓦的棋盤遊戲。現在放置這些我覺得最好把每個瓷磚的座標放在.plist中,訪問這個信息然後返回每個座標。所以plist看起來像這樣:Obj-c座標數組 - 最佳實踐?
root ---> position on board ---> item 0 ---> TileX(number(4)),Tile y(number(12))--->第1項...等。等多達13
現在,在代碼中,我有這個作爲
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"WheelData.plist"];
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:finalPath];
NSArray *positionOnBoard = [NSArray arrayWithArray:[plistData objectForKey:@"Position On Board"]];
int numberOfPositions = [positionOnBoard count];
NSMutableArray *PositionX;
NSMutableArray *PositionY;
NSMutableArray *arrayOfPositionsX = [[NSMutableArray alloc] initWithCapacity:numberOfPositions];
NSMutableArray *arrayOfPositionsY = [[NSMutableArray alloc] initWithCapacity:numberOfPositions];
for (int d = 0; d < numberOfPositions; d++) {
[arrayOfPositionsX addObject:[[positionOnBoard objectAtIndex:d] objectForKey:@"Tile X"]];
[arrayOfPositionsY addObject:[[positionOnBoard objectAtIndex:d] objectForKey:@"Tile Y"]];
PositionX = [NSMutableArray arrayWithArray:arrayOfPositionsX];
PositionY = [NSMutableArray arrayWithArray:arrayOfPositionsY];
if (d == 0) {
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 1) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 2) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 3) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 4) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 5) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 6) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 7) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 8) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 9) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 10) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 11) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else if (d == 12) {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
} else {
[arrayOfPositionsX removeObjectAtIndex:0];
[arrayOfPositionsY removeObjectAtIndex:0];
NSLog(@"%i %@ %@", d, arrayOfPositionsX, arrayOfPositionsY);
}
}
return PositionX;
return PositionY;
現在很明顯,此刻我只是nslogging這個,所以我讓每個分片返回其兩個X值和Y值。我最終會將這種情況繪製到某種CGRectMake網格上,然後使用圖像在視圖控制器上顯示。正如我所說,我是新來的,仍然在學習。有沒有簡單的方法來做到這一點?更好的方法?我真的很感激反饋,謝謝!
這個問題可能會更好在StackExchange - 在那裏更廣泛的編程討論發生。 AFAIK,StackOverflow用於解決特定問題。 。 。話雖如此,爲什麼不創建一個代表你遊戲概念的豐富模型呢?即是否有**董事會**,由一組**職位**組成?然後,您可以使用ActiveRecord或DAO模式從持久存儲(平面文件,本地數據庫,雲等)加載此模型。 –
我不完全確定你需要用瓷磚做什麼。它們是否始終處於固定的網格佈局(例如,2行7列),但各個圖塊的位置是否更改?如果是這種情況,那麼使用二維數組來保存遊戲板的佈局可能會更簡單。或者,瓷磚可以在空間的任何位置移動,因此您需要精確的X和Y座標?在這種情況下,您可能會考慮將X和Y座標(以及大小)存儲在一個NSRect中,因爲在繪製切片時會爲您節省一個步驟。 – nonex
對不起,應該更好地解釋它!這些座標表示六邊形圖像的中心點(因爲它們具有屬性,所以稍後可能會有對象),所以在網格上將設置14個六邊形。現在我需要這樣做,而不是僅僅製作一個背景圖片,因爲這些貼圖會根據所選規則對遊戲玩法產生影響。我不確定這是否能夠澄清任何事情。 :) – JonHerbert