我是 iOS 开发的初学者,所以这是我的问题,
我正在尝试实现一个简单的战舰游戏,我手动将我的战舰放入 allCoordinates 数组,第一个元素是 x 坐标,第二个元素是 y 坐标,第三个元素是战舰的大小。
问题是;每次尝试都必须只增加一次命中和未命中,但是当用户进入第 6 艘船时,命中变为 1,未命中变为 5,因为循环继续检查每一行并增加未命中。
我不能在错过++ 之后就休息一下,所以我在这里没有想法。
谢谢:
for ( int i=0 ;i<19;i++ ){
if ([self.xCoordinate.text isEqualToString:[allCoordinates objectAtIndex:i*3]] &&
[self.yCoordinate.text isEqualToString:[allCoordinates objectAtIndex:i*3+1]] )
{
NSLog(@"hit");
hit++;
result.text = [NSString stringWithFormat:@"You hit %ix1 ship",[allCoordinates objectAtIndex:i*3+2]];
break;
}else {
NSLog(@"not hit");
result.text = [NSString stringWithFormat:@"You missed"];
missed++;
}
hitLabel.text = [NSString stringWithFormat:@"%i!",hit];
missed = missed%18;
missedLabel.text = [NSString stringWithFormat:@"%i!",missed];
这是我的数组
allCoordinates = [[NSArray alloc] initWithObjects:
@"15",@"2",@"3",
@"13",@"2",@"3",
@"14",@"2",@"3",
@"10",@"7",@"3",
@"11",@"7",@"3",
@"12",@"7",@"3",
@"16",@"8",@"3",
@"16",@"9",@"3",
@"16",@"10",@"3",
@"3",@"4",@"4",
@"4",@"4",@"4",
@"5",@"4",@"4",
@"6",@"4",@"4",
@"9",@"10",@"4",
@"9",@"11",@"4",
@"9",@"12",@"4",
@"9",@"13",@"4",
@"5",@"14",@"1",
@"18",@"17",@"1",
nil];
编辑:我通过在 for 循环之后放置一个 BOOL ishit 来修复它,它解决了我的问题
if(ishit==YES){
hit++;
}else {
missed++;
}
最佳答案
如果您对命中感兴趣,请计算循环期间的命中。不要计算未命中。无论如何,计数似乎并不重要,所以只要使用 BOOL
来判断是否有任何命中。循环后,如果有任何命中,则设置命中文本。如果没有,则都是未命中,您应该设置未命中文本。
关于iphone - for循环递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528434/