2012-01-08 6 views
0

편지 세트를 만들고, 포인트 값을 지정하고 (참조 : "스크래블"게임 사용) 인덱스를 통해 액세스 할 수있는 프로세스를 알고 싶습니다. 그래서 Objective-C에서 타일 순서를 섞어서 조작 할 수 있습니다.Objective-C로 구조체로 빌드하기

저는 XCode4를 사용하고 있으며, 느슨하게 Scrabble을 기반으로 간단한 단어 게임을 프로그래밍하려고합니다.

문자 블록의 여러 변수를 유지하는 구조를 만들어 C에서이 작업을 수행 할 수있었습니다.

struct singleTile { 
char letter; 
int value; 
}; 

각 문자에 대한 데이터를 저장하는 배열을 보유하는 또 다른 구조체입니다.

struct singleTile set[] = 
{ 
    {"A", 1}, 
    {"B", 4}, 
    {"C", 4}, 
    {"D", 2}, ...etc. 
} 

색인 번호를 통해 각 문자에 대한 정보를 표시 할 수 있습니다.

printf("The second letter is %s and is worth %d points\n", set[2].letter, set[2].value); 

어떻게 이것을 Objective-C로 변환합니까? NSArrays와 NSMutableArrays에 대한 튜토리얼을 읽었지만 위의 광산 (특히 문자와 값)과 같은 정보를 두 개 이상 보유하는 배열의 예제를 찾지 못했습니다.

그렇게하기를 원하지 않는 한 모든 것을 입력하지 마십시오. 프로세스 및/또는 논리를 나에게 설명하고 올바른 방향으로 나를 가리키면 프로그래밍 방법을 알아낼 수 있어야합니다.

미래에는 각 타일에 문자와 값을 넘어서는 더 많은 정보를 보유하고 싶습니다. 따라서 장애물이 될 수없는 기본 교훈은 저에게 중요합니다.

시간과 관대함에 감사드립니다.

미리 감사드립니다. -Jeff

답변

2
NSMutableDictionary *letterPoints = [[NSMutableDictionary alloc] init]; 
[letterPoints setObject:[NSNumber numberWithInt:1] forKey:@"A"]; 
... 
... 
[letterPoints setObject:[NSNumber numberWithInt:26] forKey:@"Z"]; 

이것은 기본 목표 - C 사전에 배열 구조체의 아주 기본적인 변환입니다. 아이디어는 글자를 기준으로 포인트 값을 조회 할 수 있으며 글자를 색인에 매핑하는 것이 아닙니다.

각 문자와 함께 다른 개체를 저장하여이 개념을 확장 할 수 있습니다. 즉, 단순히 포인트 값을 저장하는 대신 문자와 연관된 속성/메소드가 포함 된 객체를 저장할 수 있습니다.

1

원하는대로 여러 가지 방법이 있습니다.

먼저 대부분의 경우 Objective-C에서 일반 C 개념 및 구문을 사용할 수 있습니다. .m이 아닌 .mm 모듈을 만들면 C++을 사용할 수 있습니다.

둘째, char 및 int를 포함하는 간단한 Objective-C 클래스를 정의하고 그 인스턴스를 NSArray에 여러 개 삽입 할 수 있습니다.

세 번째로 NSString을 NSNumber에 매핑하는 NSDictionary를 사용할 수 있습니다.하지만이 방법은 char 값에서 int로 매핑하는 것이지 다른 방법으로는 사용할 수 없습니다.

그리고 다른 콤보가 많이 있습니다.

1

Tile 클래스를 작성하여 Tile 개의 개체를 NSArray 또는 NSMutableArray에 저장할 수 있습니다. Tile 클래스는 문자 값에 대해 적어도 NSString, 점수 값에 대해 NSNumber을 포함합니다.

, 의 변수를 쉽게 설정하고 액세스 할 수 있도록 @property 속성을 추가 할 수 있습니다.letterQTile.score 두 번, letterYTile.colorTile 클래스가 다른 속성으로 확장, 또는 타일 (예를 들어 두 번 편지의 "특별한"종류를 만들기위한 서브 클래스화할 수 등 타일의 모양을 설명합니다, 당신에게 Q 타일의 점수를 제공합니다 - 단어 등).

으로 jsumnerssuggests, 대신 배열은, 당신의 Tile 객체는 각각 빠른 조회를 들어, NSDictionary의 키에 관련 지을 수있다.

객체 지향 프로그래밍에 대한 개요는 단락에 들어갈 수있는 범위를 벗어나지 만 온라인에서 여러 자습서 (example)가 있습니다.