ios - Obj-c Arrays for coordinates - best practices? -


i have begun teaching myself obj-c , have undertaken large project in order learn principles of language come up. making game 14 tile board. in placing these felt best put coordinates each tile in .plist, access info , return out each coordinate. plist looks this:

root ---> position on board ---> item 0 ---> tilex (number(4)), tile y (number(12)) ---> item 1 ...etc. etc. 13.

now in code have as

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]; (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; 

now @ moment nslogging getting each tile return both x value , y value. plot on sort of cgrectmake grid , use images show on viewcontroller. said new , still learning. there simpler ways this? better ways? appreciate feedback, thank you!

you can add string of positions plist file in format {10,10}.... plist structure this;

<plist version="1.0"> <array>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string>     <string>{10,10}</string> </array> </plist> 

then, access data below;

nsarray *positionsarray = [[nsarray alloc] initwithcontentsoffile:[[nsbundle mainbundle] pathforresource:@"page" oftype:@"plist"]]; 

the above array hold positions in nsstring format. can generate cgpoint these nsstrings. can directly use these cgpoints position tiles or can separate out x , y coordinates per need. please find code snippet below;

int count = 0; for(nsstring *strpos in positionsarray) {     count++;     cgpoint position = cgpointfromstring(strpos);     nslog(@"position %d -> x:%f y:%f",count,position.x,position.y); } 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -