2014-01-22 99 views
0

我很新的Objective-C編程,但建立自己的骰子滾動遊戲幫助我瞭解它的基本知識。我知道這裏有很多關於擲骰子游戲的主題,但沒有找到我要找的東西。 我用8個不同的骰子(全部在一個單獨的圖像視圖中)創建了一個使用從1到6的隨機生成號碼的遊戲。玩家可以用一個水龍頭滾動所有骰子,並且標籤更新的總量爲點在每個滾。但是,爲了提高分數,我想讓玩家在一次擲骰後(通過點擊單個骰子)保持一定的死亡,並繼續與其他玩家一起。 我已經實現了一個日誌,顯示如果某個芯片被竊聽,如下:骰子游戲:保持個人骰子

- (void)viewDidLoad { 

UITapGestureRecognizer *recogDice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)]; 
[self.firstDieView addGestureRecognizer:recogDice]; 
} 

-(void)tapRecognized:(UITapGestureRecognizer *)sender { 
NSLog(@"Nr 1 touched"); 
} 

當然,這確實讓我發現,模具被竊聽,但我不知道如何把它從代碼中這樣,當其他人再次滾動時,事實上它不會滾動。 我爲滾動碼如下:

-(void)throw { 
DiceThrowController *diceController = [[DiceThrowController alloc] init]; 

int firstNumber = [diceController getDieNumber]; //for this example i've cut out the other dice, which are the same as this one, only called 'second' etc. 

[self.firstDieView showDieNumber:firstNumber]; 

self.sumLabel.text = [NSString stringWithFormat:@"%d", firstNumber]; 
} 

任何人都可以點我在這裏向正確的方向?我的遊戲完美運行,但我想添加一些實際的交互/目標。謝謝

+0

每個骰子視圖是否都有自己的diceThrowController實例? –

回答

0

骰子是一個清晰的對象,因爲你會看到,所以創建一個Dice類會有很大的意義。

我個人可能有該類以下公共屬性:

@property (nonatomic) BOOL locked; 
@property (nonatomic) NSInteger currentValue; 

,並可能用於顯示目的的ImageView的。 我個人有邏輯「紡」的骰子在骰類中的方法:

-(void)spin{ 
    if (!self.locked){ 
     // Your actual spin logic goes here 
    } 
}; 

,並具有由tapGestureRecognizer這觸發。

在你DiceThrowController你可以有一個NSArray *diceSet;包括所有的實例。要獲得總分,您只需遍歷diceSet即可累計得分:

NSInteger totalScore = 0; 

for (Dice *dice in diceSet){ 
    totalScore += dice.currentValue; 
} 
1

如何使用NSMutableArray保存這些輕敲分數。只需用8個零初始化數組,所以你知道哪個骰子尚未挖掘:

NSMutableArray diceScores = [NSMutableArray arrayWithCapacitive:8]; 
[diceScores setArray:@[@0, @0, @0, @0, @0, @0, @0, @0]]; 

當骰子被竊聽只是保存在數組中的得分對應的指數(所以先在骰子指數0。 ..)與replaceObjectAtIndex:withObject:

但請注意,此解決方案需要您更改您的API一點。既然你不能保存數組中的整數,但只有對象,你應該改變你的getDieNumber,以便它返回一個NSNumber而不是一個int。