0

快速提问,

我对编程相当陌生并且遇到了问题。我正在制作游戏,并且在每一轮结束时,该轮得分最高的获胜者出局,我隐藏了该玩家的玩家视图和标签,但需要弄清楚如何制定方法,以便在我的案例 4 切换中( self.players) 未设置标签和隐藏的播放器视图,并且 turn 变量根据我从开关中取出的标签重新排列。

switch (self.players) {
    case 5:
        switch (self.turn) {
            case 1:
                explanationLabel.text = [NSString stringWithFormat:@"%d",score];
                break;
            case 2:
                explanationLabelTwo.text = [NSString stringWithFormat:@"%d",score];
                break;
            case 3:
                explanationLabelThree.text = [NSString stringWithFormat:@"%d",score];
                break;
            case 4:
                explanationLabelFour.text = [NSString stringWithFormat:@"%d",score];
                break;
            case 5:
                explanationLabelFive.text = [NSString stringWithFormat:@"%d",score];
                break;

例如,如果由 explainLabelFour 代表的 playerFour 赢得了第一轮,那么四名玩家的切换应该是..

 switch (self.players) {
case 4:
    switch (self.turn) {
        case 1:
            explanationLabel.text = [NSString stringWithFormat:@"%d",score];
            break;
        case 2:
            explanationLabelTwo.text = [NSString stringWithFormat:@"%d",score];
            break;
        case 3:
            explanationLabelThree.text = [NSString stringWithFormat:@"%d",score];
            break;
        case 4:
            explanationLabelFive.text = [NSString stringWithFormat:@"%d",score];
            break;

我发现使它工作的唯一方法是执行 if 语句来查看每个标签是否被隐藏然后相应地设置它们,但它的效率非常低。这是一个骰子游戏,在掷出三轮后,轮数上升一圈。

提前致谢!

4

2 回答 2

0

不确定我是否完全理解您的需求,但您可以为每个玩家设置一个标志

IE

player1.isPlaying = YES;

循环浏览当前活跃的玩家。

于 2013-08-23T05:40:45.317 回答
0

给你的每个人explanationLabel一个标签,关于你的self.turn

例如,

explanationLabel.tag = 1;
explanationLabelTwo.tag = 2;
explanationLabelThree.tag = 3;
.
.
explanationLabelN.tag = N;

现在,您必须调用一个名为类似的方法,hideLabels

- (void) hideLabels {
    explanationLabel.hidden = YES;
    explanationLabelTwo.hidden = YES;
    explanationLabelThree.hidden = YES;
}

你必须hideLabels在外部 switch case 调用之前调用,

然后在案例中,使用标签获取标签对象

switch (self.players) {
    case 5:
        UILabel *tempExplanationLabel = (UILabel *)[self.view viewWithTag:self.turn];
        tempExplanationLabel.hidden = NO;
}

至此,您将只显示当前轮次所在的标签,如果您愿意,您还可以更改该特定标签的框架以获得更好的结果可见性。你可以通过 assiningexplanationLabel.frame来做到这一点tempExplanationLabel.frame

于 2013-08-23T05:52:47.167 回答