2014-05-02 116 views
0

我最近張貼的問題就在這裏我怎樣才能創建一個UIImageView

Randomly generated tunnel walls that don't jump around from one to the next

的偏移非常說我得到了「醉酒走路」的隧道,而不是相關的一個由於缺乏的算法。

答案對我正在嘗試創建的程度起作用,但我無法弄清楚如何正確地爲我的遊戲實現算法。

我相信第一步是爲牆對創建偏移量。我希望屏幕兩側出現的圖像(名爲:「Left1」和「Right1」,「Left2」和「Right2」....「Left41」和「Right41」)稍微偏移到「重新產卵」爲了在外觀上創造一個隧道的幻想,彼此相繼的左或右。我試圖使用提供給我的代碼來創建一組我的牆的偏移量,但嘗試構建時遇到了一些錯誤。它首先告訴我,一個「Left1」的局部聲明隱藏了實例變量,我相信這是因爲它已被聲明爲我函數中的一個變量?這兩次出現..隨着這一點,我有一個錯誤,說分配到'UIImageView * __ strong'從不兼容的類型'浮動'。我該如何解決這些問題?還是我在其他地方做錯了?

由於語義問題,我不知道如何真正重新排列它,因此我對這部分感到迷茫。

我可以回答有關該計劃的任何問題,以便於評估情況。

-(void) TunnelMovement{ 

    CGFloat Left1 = 14; 
    for(int i = 0; i < 41; i++){ 
     CGFloat offset = (CGFloat)arc4random_uniform(2*100) - 100; 
     Left1 += offset; 
     Right1 = Left1 + 14; 
     //... 
    } 
} 

這就是我在我的代碼完全填入從給出的答案空白後。不知道我是否放入所有必需品或什麼。謝謝。

+0

正如您已經被告知(在您刪除的帖子中),「從不兼容的類型'float'分配給'UIImageView * __ strong'。」是由於將一個float類型的變量賦值給一個UIImageView類型的變量。由於您幾天後一直無法解決這個小的一行錯誤消息,這隻能意味着您根本沒有編程經驗。我可以建議你抽出時間閱讀關於編程基礎知識的一些基本教程,然後繼續學習,否則你將只會繼續不理解和/或應用給你的任何答案,除非spoon 012 – Gruntcakes

+0

但是隨意發佈代碼行顯示錯誤,我會很樂意糾正它(它可能是右上角的最後一行 - 因此您還需要在此之前發佈代碼,包含聲明或Right1的代碼) – Gruntcakes

+0

錯誤來自Right1 =左1 + 14; 另外兩個黃色警告來自該行以及其上方的行 –

回答

0

[我可以給你快速更正錯誤信息,但是你正在嘗試運行,你甚至不能走,你幾乎無法抓取。 堆棧溢出是一個編程論壇,但它不是學習或教授編程的地方,人們將不會有耐心去教授基本知識。]

如果它們是完全不同的東西。在行:

Right1 = Left1 + 14; 

RIGHT1是一個UIImageView和LEFT1是CGFloat的,他們是完全不同的事情。 Left1只是一個簡單的數字,Right1是一個複雜的對象。

您試圖定位UIImageView,因此您需要將Left1 + 14的值分配給UIImageView的一部分,該部分將定位它並且它也是CGFloat。

所以,你需要將其分配給像邊界或框架或中心的x值,如

Right1.center.x = Left1 + 14; 

該警告是因爲你有相同名稱的兩個不同的東西,你的UIImageView稱爲Left1,但你有一個CGFloat也叫做Left1,你不應該給兩個不同的東西同名 - CGFloat Left1隱藏了名爲Left1的UIImageView。您應該將它稱爲Left1X或LeftWallX或類似的,因爲它在您的其他問題的答案中。

這只是錯誤和警告,你可能還沒有準備好轉移到如何繪製迷宮的語義,如果你與這兩個結果。特別是你至少需要知道邊界,框架,中心,x,y,CGPoint,CGRect,CGSize都是爲了完全理解要改變什麼值以及改變這些值會對位置產生什麼影響UIImageViews。

----編輯---對象編程101

當你有一個對象喜歡的UIImageView它就像一個有一所房子,房子可以有一個名稱,並在它很多的房間,每一個名字,在每個房間內都有很多東西。你正試圖用一臺新電視機替換一個房間內的舊電視機。

所以RIGHT1就像房子

Right1.center就像是在一所房子

Right1.center.x就像是在房間裏叫中心,這是在叫RIGHT1家裏電視的房間。

Right1 = Left1 + 14; 

就像是試圖換一個新的電視一所房子,而不是試圖將其交換一所房子內的一個房間內的televsion。

這種比喻是否太愚蠢?

+0

好吧,所以我改變了Left1的那個特定的方法到Left1X,它似乎修復它。唯一的紅色錯誤現在我越來越是「未聲明的標識符 'Right1X' 的使用,因爲我有這個現在 - (無效)TunnelMovement { CGFloat的Left1X = 14;對於 (INT I = 0; I < 41;我++){ CGFloat的偏移量=(CGFloat的)arc4random_uniform(2 * 100) - 100; Left1X + =偏移; Right1X.center.x = Left1X + 14; // ... } } 但是你解釋得很好,除了這裏和隨機的youtube視頻,我還沒有很多地方可以學習xcode –

+0

有很多很棒的書,但是它不是你需要學習的目標C,它在ge橙花。亞馬遜的書籍爲以前沒有編程經驗的人員教授iOS開發。他們教授編程以及iPhone應用程序編寫,這正是您需要的。 Right1.center.x = ...不是Right1X.center.x = ... – Gruntcakes

+0

我認爲它必須是其他東西,因爲當我嘗試使用Right1.center.x時,它會告訴我表達式是不可轉讓。 –