2012-06-09 32 views
0

我正在嘗試製作一個混雜了代數方程的遊戲。我爲這個等式的每個組成部分分配了一個出口。例如,如果該方程爲:檢查UILabels彼此的接近程度

X2 + Y = 2(A + B)

然後X2(其爲x的平方),+,Y,= 2(A + B)都將是自己的出路。但是這個方程將會混亂起來,我希望用戶將標籤出口移動到正確的順序。我已啓用touchesMoved,但我的問題在於檢查方程是否按正確的順序。我會將代碼包裝到IBAction按鈕操作中,但是如何分析文本?我會檢查每個標籤之間的偏移嗎?有沒有簡單的方法/ API來做到這一點?謝謝!

+1

您只會在決定標籤是否在有效位置時檢查偏移量,或者將它們「貼緊」到有效位置。爲了確定正確的順序,您應該抽象出整個概念並創建封裝了一個方程邏輯的組件。然後也是一般的整個方程。也許你可以實現一些方法來檢查你是否有一個有效的排序。根據MVC體系結構考慮問題/解決方案。 – Matt

回答

1

假設你的標籤被稱爲xLabelplusLabelyLabelequalsLabelabLabel,你可以做這樣的事情:

NSUInteger xLeftBorder = CGRectGetMinX(xLabel.frame); 
NSUInteger plusLeftBorder = CGRectGetMinX(plusLabel.frame); 
NSUInteger yLeftBorder = CGRectGetMinX(yLabel.frame); 
NSUInteger equalsLeftBorder = CGRectGetMinX(equalsLabel.frame); 
NSUInteger abLeftBorder = CGRectGetMinX(abLabel.frame); 

if(xLeftBorder < plusLeftBorder && plusLeftBorder < yLeftBorder && yLeftBorder < equalsLeftBorder && equalsLeftBorder < abLeftBorder){ 

    //Correct! 
} 

else{ 
    //Incorrect 
} 

這有點笨拙,但它的作品。更好的方法是將它放在一個函數中,每個參數都是一個標籤來檢查。例如:

bool isCorrect = [self checkIf:xLabel isLessThan: plusLabel isLessThan: yLabel isLessThan:equalsLabel isLessThan:abLabel]; 

這是假設你寫的函數返回一個布爾值。

希望這有助於!

+0

謝謝!我要查看這些代碼,並在一個小時內回覆給你! – MCKapur

+0

當然。慢慢來。但是,我不確定我是否會在一個小時內醒來。儘管如此,我會盡快回復你。 – pasawaya

+0

感謝這工作! – MCKapur