ROB BOWDEN:你好。 我搶。 想知道如何實現這個遊戲? 好吧,讓我們打出來 員工的解決方案。 所以,讓我們先低著頭給init 我們告訴你要的功能 第一個執行。 第一個,我們就來看看 在它的init槳。 好吧,那麼請記住,我們想要的 劃將完全集中在 在x軸上。 因此,我們需要弄清楚 在那裡,應該去。 由於板的寬度 - 這 也湊定義往上頂 - 我們需要減去了槳寬度 和除以2,從而使 該槳葉的中心是在 該中心的董事會。 請記住,在x坐標指 擋板的左上角, 所以這是究竟在何處 我們希望它是。 y坐標無所謂 盡可能多的,因為我們可以將 但無論我們想要的。 因此,我們實例化槳,我們設置 色黑,我們設置填充為True 所以它是一個填充的矩形,而我們 然後將其添加到窗口,並返回 槳。 這就是它的初始化 槳。 這將是類似的 用於初始化記分牌。 因此,我們要初始化的標籤, 我們將顏色設置為 淺灰色 - 你可以選擇任何你 想 - 我們要的字體設置為 無襯線48 - 也可以選擇任何你想要的 - 我們將它添加到窗口。 現在這個發送備份是不是真的 必要的,它只是在一些情況下, 事情發生在標籤重疊。 那麼當我們使用碰撞檢測, 碰撞檢測將檢測其他 當它檢測到標籤的事情之前。 但是,這真的不應該影響 我們這個計劃。 最後,我們有這個更新記分牌 函數,我們寫。 因此,讓我們來看看那個。 現在,在這裡我們看到的東西的 幾乎是相同的東西 我們在label.c看到。 因此,我們有一個標籤 - 12個字符的字符緩衝區, 這僅僅是足以應付任何 整數,負的或正的。 然後,我們用sprintf複製 點到該緩衝區。 所以S這包含代表一個字符串 點的數目。 最後,我們設置標籤 該字符串。 然後,我們需要居中的標籤 在例子中,我們已經從9至10 點,我們已經轉移了。 因此,我們計算在x和y坐標 標籤這將 得到的寬度和高度 窗外。 雖然,我們也可以只使用 常量寬度和高度哈希 定義往上頂。 我們也得到了寬度和高度 標籤和鴻溝 通過2至中心。 然後我們使用設置位置實際 把它放在那個位置。 所以這是它的初始化記分牌。 確定。 因此,init球將是非常相似 給init撥片也是如此。 我們在這裡看到,我們使用newgoval 為了實例化一個新球。 在這裡,我們使用的是2倍的半徑 當球2的寬度,並 半徑為次 球的高度。 現在,還為newgoval,x和 y坐標,我們傳遞是怎麼回事 指的左上方 球,這實際上是 外球本身。 因此,為了讓球正好 集中在主板,我們需要傳遞 寬度除以2為中心,並 然後減去了半徑推 球的實際中心成 該中心的董事會。 和我們做同樣的事情 為y軸,不同的是使用 高度而不是寬度。 使放置的球的中心。 與此實例的球,設置 顏色為黑色,填充球, 後來終於把它添加到 窗口並返回它。 這就是它的初始化 球。 所以,現在讓我們來看看初始化 磚是稍微更 複雜,但它是相當 類似的init槳。 現在,我們首先需要弄清楚 每塊磚的寬度。 請記住,我們有一個叫做常數 調用它指定了 磚的列數 我們有。 所以,我們要確定寬度 通過取寬度的單個磚的 整板的,減去 從我們的縫隙的大小 - 這是哈希定義了頂部和指 向的像素數即 應該是每塊磚之間 - 所以我們就要有一個共 間隔時間調用一個空白像素 單列。 而這也將參照一些空白 像素的左側和右側 左欄和右欄中的磚。 所以減去了那些空白像素 留給我們的像素的數目是 磚實際使用。 然後我們把通過調用來獲得 每磚的像素的數目。 所以在這裡我們定義一個數組,僅僅 指定我們要為每一種顏色 排磚。 如果我們有超過排磚 我們指定的顏色,我們拭目以待 那我們就回送及周圍 再次使用紅色,然後橙色和 黃色等。 這樣,作為p設定規格的提示,我們 要遍歷所有的行和 磚塊列。 但是,我們遍歷所有的列之前,我們 看到這裡,我們正在指定 每塊磚的y位置 在特定的行。 我們也可以移動到這一點,第二 for循環,但隨後我們就只是 一遍又一遍做計算 再次,當我們不需要。 所以地磚的y位置是怎麼回事 為餘量,這是散列 定義往上頂,只是指 電路板的頂部之間的空間 所有磚塊的開始。 而我們將要添加到該行 我們是在時代的高度 個別磚加的差距 這是每塊磚之間。 所以這也是一個垂直 每塊磚之間的差距。 所以,讓我們的y坐標 的磚。 所以在這裡我們要計算 x坐標的磚。 現在,我們有差距,因為除以2, 記得以前,我說,在 電路板的左側,我們要 留下一點空間。 所以間隙除以2是該空間。 然後我們添加到該列 我們是在時間寬度加上 間隙,即寬度的空間量 單個磚塊佔用和 然後間隙空間 每塊磚之間。 以便計算x坐標 的磚。 現在我們只需要實例化 磚給出x和y坐標 使用我們計算每個寬 磚和斷裂高度是 哈希定義往上頂。 我們設定磚的顏色。 我們正在使用我們的顏色陣列和注意事項 我們傳遞的是該行中 上模數的顏色這是會令 我們轉回到身邊的紅色,如果我們 比顏色更行。 最後,我們將填寫磚 顏色並將其添加到該窗口。 就是這樣。 所以,這是它為我們所有的 初始化方法。 現在我們需要來看看,雖然 循環,你必須填寫。 所以在這裡我們看到,這是我們的,而 循環將會繼續下去,直到 比賽結束了,這不是手段 我們用盡生命或 我們運行了磚。 我們有那麼第一件事 是一個等待點擊。 因此本場比賽等著我們來實際 點擊球開始移動之前。 然後我們要去 遞減的生活。 因此,如果我們有三個生命,現在我們 下降到兩個人的生命,我們用我們的 第三次生命。 我們要圍繞球。 所以,現在,這是不是真的要幫助 我們的第一個生命,我們玩 由於球是已經去 已經從中心時,我們 實例化它。 但是,我們看到,當我們最終失去了 生活和環回身邊,那麼我們 會希望從recenter球 電路板的底部回 的中心。 所以,現在我們在這裡需要生成 球的X速度。 並且,按照該規範,我們以D蘭特 48,以產生一些隨機數 以指定的速度。 我們增加一到,既然我們只是 要在1的範圍內的速度 到的2代替零到1。 最後,我們以D蘭特48再次 為了確定球是否 將要移動到左邊 或有權啟動。 因此d蘭特48返回一個隨機數 零和1之間,所以通過詢問 如果這是小於0.5,我們有一個50 50 切換的速度機會 球是負面的。 最後,我們設置的垂直速度 球到只是某個常數。 我們選擇三種。 現在我們有另一個循環。 所以這個內循環是 是否要繼續。 注意這裡,而磚 大於零, - 因此,如果我們運行了磚,我們已經 贏得了比賽,我們可以 打破這個循環 - 和所有獲取Y滾珠比高度不 減去2倍的半徑。 那麼,這是認識到的是,如果在 球恰好晃過槳,在 這種情況下,你已經失去了生命。 尋找這裡面的for循環,我們有 在檢查一個鼠標事件。 因此,如果有一個鼠標事件,該 意味著我們要檢查, 見,如果鼠標被移動,並且如果 鼠標被移動了,我們希望有 槳跟上鼠標。 因此,要做到這一點,我們計算新 槳,這是怎麼回事的位置 搶鼠標的位置 - 它採用抓起​​位置 倘若我們通過 - 然後我們要減去了 槳葉的寬度除以2,所以 槳住宿集中在鼠標 代替槳的左側 住居中。 所以,現在我們也希望確保我們 不走在左邊或右邊 電路板的一面。 所以在這裡我們只是檢查,如果 槳將是關閉的左側 董事會,只是堅持 它的左側。 在這裡,我們正在檢查,如果槳 將在右側的 板,只需把它貼 向右側。 最後,我們其實設置 擋板的位置。 現在,如果沒有一個鼠標移動, 這意味著我們要 要移動球。 因此,我們已經有了在x 和球y的速度 所以我們移動它。 但現在我們要檢測 一對夫婦的事情。 所以在這裡我們要檢測,如果我們要么打 的左側或右側 板,我們希望把球反彈。 因此,在這種情況下,令x速度 到負x速度。 如果球擊中了電路板的頂層, 那麼我們也希望球反彈。 但是,現在我們要改變 在y速度。 請注意,我們不具備的條件 球擊中的底部 因為該板已經被抓獲 在這裡在這個while循環。 最後,我們要檢測一些 碰撞中,如果球擊中 無論是槳或磚,我們要 做一些特殊情況下的東西。 所以,如果有一個碰撞,其中 案例對象將不能為空,那麼, 如果對象打槳,我們會 只是想反彈球。 這裡,另外,我們設置的位置 球只槳以上。 請注意,我們正在採取的x坐標位置 球,只是重用。 但在這裡,我們得到的y位置 槳和移動球 槳以上。 這是一種特殊情況,以使球 不打槳,然後, 之前,它能夠移出槳, 另一個循環善有善報和 它認為它仍然在面板上和 所以在y速度被重新設置為 負面然後將球正中下懷 枝彈跳上的槳。 所以,如果我們沒有打槳, 那麼我們還需要檢查 如果我們打磚。 所以這是我們該如何檢查 看看我們打磚。 我們需要檢查這一點,因為我們可能 其實打標籤,而我們 不想刪除該標籤。 因此,如果我們打一塊磚,我們可以刪除 從窗口,磚遞減 我們對磚的數量,增加我們的 點的數量,現在我們需要 更新這正是記分牌 同樣的,因為我們,當我們看到以前看過 初始化記分牌。 但是,現在我們只是更新 記分牌,因為我們已經改變了 點的數目。 它現在應該顯示 我們打多一個突破。 最後,如果我們打磚 我們也想反彈。 所以最後,我們只是暫停,這樣的 球是不動的超級快,我們 其實可以打我們的槳。 而這幾乎是它。 所以,現在我們將循環回到頂部 這個while循環,並持續到 要么我們失去了生命或 我們運行了磚。 如果我們失去了生命,會發生什麼? 然後我們要退出這個while 循環,我們將看到將循環備份 到外while循環的頂部。 在這種情況下,我們要 執行此重新設置。 而這個設置都將有我們拭目以待 一點擊,我們的遞減數 生命,recenter球,重新計算 的x和y的速度,並 然後繼續遊戲。 因此,將一直持續,直到 磚結束是小於 或等於零 - 在這種情況下,我們贏得了比賽 - 或生命小於零,其中 情況下,我們已經輸掉了比賽。 因此,一旦是那樣的話,我們打出來 while循環中,我們到達這裡 我們要去的地方等待點擊 退出遊戲之前,這樣的 遊戲不只是立即 關閉我們。 最後,我們將關閉 窗口,就是這樣。 我的名字是羅布,這是突圍。