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
Post a Comment