目标c-比较两个NSString拼写错误的方法iPhone编程



我正在为一款类似《Hangman》的游戏编写iOS应用程序,只是要求玩家从第一个字母开始,一次猜一个字母。在游戏开始时,秘密单词在UITextField中显示为星号(*)。

当玩家猜测第一个字母时,程序应该将其与秘密单词进行比较,看看这个字母是否正确。如果猜测正确,应用程序应将第一个星号替换为正确的字母。如果猜测不正确,将采取其他措施。玩家一个字母一个字母地重复这个过程,直到秘密单词完全拼写出来。

这是我目前正在使用的代码,用于将猜测的字母与秘密单词进行核对,但它无法正常工作。

-(void) checkGameLetter : (NSString *) letterToCheck{
    bool match = NO;
    NSRange gameLetterRange;
    char charToCheck = [letterToCheck characterAtIndex:0];
        for(int i = 0; i < self.correctWord.length; i++)
        {
            char tempString = [self.correctWord characterAtIndex:i];
            if(charToCheck == tempString){
                match = YES;
                gameLetterRange = NSMakeRange(i, 1);//location, length
                Screen.text =[Screen.text stringByReplacingCharactersInRange:gameLetterRange withString:letterToCheck];
        }
}

您的代码有问题,因为其中没有任何内容表明我们要检查的单词是哪个字母。

例如,假设单词是"zork",用户猜测为"r"。您正试图遍历"zork",查看"r"是否与任何字母匹配。但根据您的规范,如果这是对第一个字母的猜测,我们应该只检查的第一个字母("z")并停止,因为"r"在那个位置是错误的。

因此,您想要编写的内容要比现有代码简单得多。你不想要这个:

-(void) checkGameLetter : (NSString *) letterToCheck{

你想要这个:

-(void) checkGameLetter:(NSString*)letterToCheck againstPosition:(NSInteger)position {

并且不会有循环:你只需直视那个位置的字母,看看它们是否相同。

最后注意一个重要的事实:==不比较两个字符串。它询问它们是否是同一个对象,而它们显然不是。您需要isEqualToString:

相关内容

最新更新