Objective c 目标c-信和;点模型

Objective c 目标c-信和;点模型,objective-c,model,structure,Objective C,Model,Structure,我正在开发一个文字游戏,基本上我想给字母表的每个字符分配一个整数值 目前,我有一个助手来返回每个字符的值,但我想知道应该如何构造初始数据结构 目前,它是一本字典,包含字母表中的每个字母作为键,我希望这些点成为该键的对象。设置points对象的最佳实践是什么 我想避免这样的事情: if (_letter == 'a' || _letter == 'A') _points = 1; else if (_letter == 'b' || _letter == 'B') _points = 4

我正在开发一个文字游戏,基本上我想给字母表的每个字符分配一个整数值

目前,我有一个助手来返回每个字符的值,但我想知道应该如何构造初始数据结构

目前,它是一本字典,包含字母表中的每个字母作为键,我希望这些点成为该键的对象。设置points对象的最佳实践是什么

我想避免这样的事情:

if      (_letter == 'a' || _letter == 'A') _points = 1;
else if (_letter == 'b' || _letter == 'B') _points = 4;
else if (_letter == 'c' || _letter == 'C') _points = 3;

非常感谢

您可以使用一个由26个元素组成的C整数数组,其中每个整数都是该字母的点值,第0个元素是a,第1个元素是B,等等。然后,您只需将字母小写,然后从中减去
'a'
,并将其用作数组的索引。在这一点上,唯一剩下的是防止考虑非ASCII字母字符,这可以通过在小写(
if)后进行简单的范围检查来完成(c>='a'&&c您可以使用一个26个元素的c整数数组,其中每个整数是该字母的点值,第0个元素是a,第1个元素是B,等等。然后您只需将字母小写,然后从中减去
'a'
,并将其用作数组的索引。此时,唯一剩下的事情是防止不考虑使用非ASCII字母字符,这可以在小写后通过简单的范围检查来完成(
if(c>='a'&&c),您可以利用字符是c中的整数(因此也是Objective-c)这一事实,只需使用整数数组,键入字符的小写版本-'a',如下所示:

int *letterValues[] = {1,4,3}; // a = 1, b=4, etc...
char thisChar = 'B';

int thisCharVal = letterValues[tolower(thisChar) - 'a'];
请注意,这使用的是tolower,它在(std库)中声明,从小写字母字符中减去'a'实质上是推导字母表中的“索引”:“a'-'a'=0,“第一”项'b'-'a'=1,等等。因此,数组初始值设定项(
{1,4,3}
)就是要按顺序分配给字符的值(如果您愿意,也可以使用指定的初始值设定项,也可以使用chars:

int *letterValues[] = {1,4,3, 'z'=4};

您可以利用C中的字符是整数(因此也是Objective-C)这一事实,只需使用一个整数数组,将字符的小写版本键入“a”,如下所示:

int *letterValues[] = {1,4,3}; // a = 1, b=4, etc...
char thisChar = 'B';

int thisCharVal = letterValues[tolower(thisChar) - 'a'];
请注意,这使用的是tolower,它在(std库)中声明,从小写字母字符中减去'a'实质上是推导字母表中的“索引”:“a'-'a'=0,“第一”项'b'-'a'=1,等等。因此,数组初始值设定项(
{1,4,3}
)就是要按顺序分配给字符的值(如果您愿意,也可以使用指定的初始值设定项,也可以使用chars:

int *letterValues[] = {1,4,3, 'z'=4};

如果只是标准拉丁字母,没有umlauts或其他特殊字符,最简单的方法就是为“point”值创建一个26整数的数组:

int LookupPoints(字符c)
{
静态常量无符号字符点[26]={1,4,3,…};
c=c | 0x20;/*所有小写字母*/

assert(c>='a'&&c如果它只是标准拉丁字母表,没有umlauts或其他特殊字符,最简单的方法就是为“点”值创建一个26个整数的数组:

int LookupPoints(字符c)
{
静态常量无符号字符点[26]={1,4,3,…};
c=c | 0x20;/*所有小写字母*/
断言(c>='a'&&c)