我是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++;
}
答案 0 :(得分:2)
如果您对点击感兴趣,请计算循环中的点击次数。不计算未命中数。无论如何,计数似乎无关紧要,所以如果有任何事情被击中,只需使用BOOL
。在循环之后,如果有任何命中,则设置命中文本。如果没有,所有都是未命中,你应该设置未命中文本。