1 00:00:00,000 --> 00:00:11,870 2 00:00:11,870 --> 00:00:12,530 >> ROB BOWDEN:你好。 3 00:00:12,530 --> 00:00:13,510 我搶。 4 00:00:13,510 --> 00:00:15,140 想知道如何實現這個遊戲? 5 00:00:15,140 --> 00:00:18,400 好吧,讓我們打出來 員工的解決方案。 6 00:00:18,400 --> 00:00:21,890 >> 所以,讓我們先低著頭給init 我們告訴你要的功能 7 00:00:21,890 --> 00:00:24,380 第一個執行。 8 00:00:24,380 --> 00:00:30,602 第一個,我們就來看看 在它的init槳。 9 00:00:30,602 --> 00:00:34,550 好吧,那麼請記住,我們想要的 劃將完全集中在 10 00:00:34,550 --> 00:00:35,870 在x軸上。 11 00:00:35,870 --> 00:00:39,000 因此,我們需要弄清楚 在那裡,應該去。 12 00:00:39,000 --> 00:00:42,650 >> 由於板的寬度 - 這 也湊定義往上頂 - 13 00:00:42,650 --> 00:00:46,380 我們需要減去了槳寬度 和除以2,從而使 14 00:00:46,380 --> 00:00:48,960 該槳葉的中心是在 該中心的董事會。 15 00:00:48,960 --> 00:00:53,170 請記住,在x坐標指 擋板的左上角, 16 00:00:53,170 --> 00:00:56,210 所以這是究竟在何處 我們希望它是。 17 00:00:56,210 --> 00:00:59,950 y坐標無所謂 盡可能多的,因為我們可以將 18 00:00:59,950 --> 00:01:01,800 但無論我們想要的。 19 00:01:01,800 --> 00:01:07,080 因此,我們實例化槳,我們設置 色黑,我們設置填充為True 20 00:01:07,080 --> 00:01:11,240 所以它是一個填充的矩形,而我們 然後將其添加到窗口,並返回 21 00:01:11,240 --> 00:01:12,170 槳。 22 00:01:12,170 --> 00:01:14,540 這就是它的初始化 槳。 23 00:01:14,540 --> 00:01:17,480 >> 這將是類似的 用於初始化記分牌。 24 00:01:17,480 --> 00:01:21,950 因此,我們要初始化的標籤, 我們將顏色設置為 25 00:01:21,950 --> 00:01:25,180 淺灰色 - 你可以選擇任何你 想 - 我們要的字體設置為 26 00:01:25,180 --> 00:01:26,700 無襯線48 - 27 00:01:26,700 --> 00:01:28,630 也可以選擇任何你想要的 - 28 00:01:28,630 --> 00:01:30,180 我們將它添加到窗口。 29 00:01:30,180 --> 00:01:34,760 現在這個發送備份是不是真的 必要的,它只是在一些情況下, 30 00:01:34,760 --> 00:01:37,010 事情發生在標籤重疊。 31 00:01:37,010 --> 00:01:40,680 那麼當我們使用碰撞檢測, 碰撞檢測將檢測其他 32 00:01:40,680 --> 00:01:42,380 當它檢測到標籤的事情之前。 33 00:01:42,380 --> 00:01:45,670 但是,這真的不應該影響 我們這個計劃。 34 00:01:45,670 --> 00:01:48,720 >> 最後,我們有這個更新記分牌 函數,我們寫。 35 00:01:48,720 --> 00:01:51,020 因此,讓我們來看看那個。 36 00:01:51,020 --> 00:01:54,590 現在,在這裡我們看到的東西的 幾乎是相同的東西 37 00:01:54,590 --> 00:01:56,930 我們在label.c看到。 38 00:01:56,930 --> 00:01:59,100 因此,我們有一個標籤 - 39 00:01:59,100 --> 00:02:03,540 12個字符的字符緩衝區, 這僅僅是足以應付任何 40 00:02:03,540 --> 00:02:05,920 整數,負的或正的。 41 00:02:05,920 --> 00:02:10,310 然後,我們用sprintf複製 點到該緩衝區。 42 00:02:10,310 --> 00:02:14,290 所以S這包含代表一個字符串 點的數目。 43 00:02:14,290 --> 00:02:18,180 >> 最後,我們設置標籤 該字符串。 44 00:02:18,180 --> 00:02:22,820 然後,我們需要居中的標籤 在例子中,我們已經從9至10 45 00:02:22,820 --> 00:02:24,920 點,我們已經轉移了。 46 00:02:24,920 --> 00:02:29,330 因此,我們計算在x和y坐標 標籤這將 47 00:02:29,330 --> 00:02:30,765 得到的寬度和高度 窗外。 48 00:02:30,765 --> 00:02:34,010 雖然,我們也可以只使用 常量寬度和高度哈希 49 00:02:34,010 --> 00:02:35,290 定義往上頂。 50 00:02:35,290 --> 00:02:38,220 我們也得到了寬度和高度 標籤和鴻溝 51 00:02:38,220 --> 00:02:40,160 通過2至中心。 52 00:02:40,160 --> 00:02:43,530 然後我們使用設置位置實際 把它放在那個位置。 53 00:02:43,530 --> 00:02:45,830 所以這是它的初始化記分牌。 54 00:02:45,830 --> 00:02:46,320 >> 確定。 55 00:02:46,320 --> 00:02:50,390 因此,init球將是非常相似 給init撥片也是如此。 56 00:02:50,390 --> 00:02:55,700 我們在這裡看到,我們使用newgoval 為了實例化一個新球。 57 00:02:55,700 --> 00:03:00,810 在這裡,我們使用的是2倍的半徑 當球2的寬度,並 58 00:03:00,810 --> 00:03:03,140 半徑為次 球的高度。 59 00:03:03,140 --> 00:03:07,240 現在,還為newgoval,x和 y坐標,我們傳遞是怎麼回事 60 00:03:07,240 --> 00:03:10,220 指的左上方 球,這實際上是 61 00:03:10,220 --> 00:03:11,910 外球本身。 62 00:03:11,910 --> 00:03:15,510 因此,為了讓球正好 集中在主板,我們需要傳遞 63 00:03:15,510 --> 00:03:20,730 寬度除以2為中心,並 然後減去了半徑推 64 00:03:20,730 --> 00:03:23,350 球的實際中心成 該中心的董事會。 65 00:03:23,350 --> 00:03:26,810 和我們做同樣的事情 為y軸,不同的是使用 66 00:03:26,810 --> 00:03:28,490 高度而不是寬度。 67 00:03:28,490 --> 00:03:30,890 >> 使放置的球的中心。 68 00:03:30,890 --> 00:03:35,910 與此實例的球,設置 顏色為黑色,填充球, 69 00:03:35,910 --> 00:03:37,960 後來終於把它添加到 窗口並返回它。 70 00:03:37,960 --> 00:03:40,700 這就是它的初始化 球。 71 00:03:40,700 --> 00:03:44,420 >> 所以,現在讓我們來看看初始化 磚是稍微更 72 00:03:44,420 --> 00:03:47,840 複雜,但它是相當 類似的init槳。 73 00:03:47,840 --> 00:03:51,400 現在,我們首先需要弄清楚 每塊磚的寬度。 74 00:03:51,400 --> 00:03:54,610 請記住,我們有一個叫做常數 調用它指定了 75 00:03:54,610 --> 00:03:56,860 磚的列數 我們有。 76 00:03:56,860 --> 00:04:01,010 所以,我們要確定寬度 通過取寬度的單個磚的 77 00:04:01,010 --> 00:04:04,340 整板的,減去 從我們的縫隙的大小 - 78 00:04:04,340 --> 00:04:07,310 這是哈希定義了頂部和指 向的像素數即 79 00:04:07,310 --> 00:04:09,490 應該是每塊磚之間 - 80 00:04:09,490 --> 00:04:14,910 所以我們就要有一個共 間隔時間調用一個空白像素 81 00:04:14,910 --> 00:04:16,360 單列。 82 00:04:16,360 --> 00:04:20,450 而這也將參照一些空白 像素的左側和右側 83 00:04:20,450 --> 00:04:22,850 左欄和右欄中的磚。 84 00:04:22,850 --> 00:04:26,990 >> 所以減去了那些空白像素 留給我們的像素的數目是 85 00:04:26,990 --> 00:04:28,530 磚實際使用。 86 00:04:28,530 --> 00:04:32,900 然後我們把通過調用來獲得 每磚的像素的數目。 87 00:04:32,900 --> 00:04:37,800 所以在這裡我們定義一個數組,僅僅 指定我們要為每一種顏色 88 00:04:37,800 --> 00:04:39,140 排磚。 89 00:04:39,140 --> 00:04:42,680 如果我們有超過排磚 我們指定的顏色,我們拭目以待 90 00:04:42,680 --> 00:04:45,980 那我們就回送及周圍 再次使用紅色,然後橙色和 91 00:04:45,980 --> 00:04:47,680 黃色等。 92 00:04:47,680 --> 00:04:52,490 >> 這樣,作為p設定規格的提示,我們 要遍歷所有的行和 93 00:04:52,490 --> 00:04:54,590 磚塊列。 94 00:04:54,590 --> 00:04:58,490 但是,我們遍歷所有的列之前,我們 看到這裡,我們正在指定 95 00:04:58,490 --> 00:05:02,030 每塊磚的y位置 在特定的行。 96 00:05:02,030 --> 00:05:06,410 我們也可以移動到這一點,第二 for循環,但隨後我們就只是 97 00:05:06,410 --> 00:05:09,640 一遍又一遍做計算 再次,當我們不需要。 98 00:05:09,640 --> 00:05:13,810 >> 所以地磚的y位置是怎麼回事 為餘量,這是散列 99 00:05:13,810 --> 00:05:17,830 定義往上頂,只是指 電路板的頂部之間的空間 100 00:05:17,830 --> 00:05:19,910 所有磚塊的開始。 101 00:05:19,910 --> 00:05:24,370 而我們將要添加到該行 我們是在時代的高度 102 00:05:24,370 --> 00:05:28,420 個別磚加的差距 這是每塊磚之間。 103 00:05:28,420 --> 00:05:31,640 所以這也是一個垂直 每塊磚之間的差距。 104 00:05:31,640 --> 00:05:34,000 所以,讓我們的y坐標 的磚。 105 00:05:34,000 --> 00:05:38,170 >> 所以在這裡我們要計算 x坐標的磚。 106 00:05:38,170 --> 00:05:42,050 現在,我們有差距,因為除以2, 記得以前,我說,在 107 00:05:42,050 --> 00:05:45,020 電路板的左側,我們要 留下一點空間。 108 00:05:45,020 --> 00:05:47,630 所以間隙除以2是該空間。 109 00:05:47,630 --> 00:05:51,950 然後我們添加到該列 我們是在時間寬度加上 110 00:05:51,950 --> 00:05:55,150 間隙,即寬度的空間量 單個磚塊佔用和 111 00:05:55,150 --> 00:05:58,510 然後間隙空間 每塊磚之間。 112 00:05:58,510 --> 00:06:00,700 以便計算x坐標 的磚。 113 00:06:00,700 --> 00:06:04,890 >> 現在我們只需要實例化 磚給出x和y坐標 114 00:06:04,890 --> 00:06:09,120 使用我們計算每個寬 磚和斷裂高度是 115 00:06:09,120 --> 00:06:10,800 哈希定義往上頂。 116 00:06:10,800 --> 00:06:12,420 我們設定磚的顏色。 117 00:06:12,420 --> 00:06:15,790 我們正在使用我們的顏色陣列和注意事項 我們傳遞的是該行中 118 00:06:15,790 --> 00:06:19,760 上模數的顏色這是會令 我們轉回到身邊的紅色,如果我們 119 00:06:19,760 --> 00:06:22,140 比顏色更行。 120 00:06:22,140 --> 00:06:25,020 最後,我們將填寫磚 顏色並將其添加到該窗口。 121 00:06:25,020 --> 00:06:26,440 >> 就是這樣。 122 00:06:26,440 --> 00:06:30,190 所以,這是它為我們所有的 初始化方法。 123 00:06:30,190 --> 00:06:33,200 現在我們需要來看看,雖然 循環,你必須填寫。 124 00:06:33,200 --> 00:06:39,000 所以在這裡我們看到,這是我們的,而 循環將會繼續下去,直到 125 00:06:39,000 --> 00:06:42,250 比賽結束了,這不是手段 我們用盡生命或 126 00:06:42,250 --> 00:06:43,910 我們運行了磚。 127 00:06:43,910 --> 00:06:46,390 >> 我們有那麼第一件事 是一個等待點擊。 128 00:06:46,390 --> 00:06:51,380 因此本場比賽等著我們來實際 點擊球開始移動之前。 129 00:06:51,380 --> 00:06:53,340 然後我們要去 遞減的生活。 130 00:06:53,340 --> 00:06:56,710 因此,如果我們有三個生命,現在我們 下降到兩個人的生命,我們用我們的 131 00:06:56,710 --> 00:06:58,160 第三次生命。 132 00:06:58,160 --> 00:06:59,920 我們要圍繞球。 133 00:06:59,920 --> 00:07:05,180 所以,現在,這是不是真的要幫助 我們的第一個生命,我們玩 134 00:07:05,180 --> 00:07:07,910 由於球是已經去 已經從中心時,我們 135 00:07:07,910 --> 00:07:09,010 實例化它。 136 00:07:09,010 --> 00:07:12,910 但是,我們看到,當我們最終失去了 生活和環回身邊,那麼我們 137 00:07:12,910 --> 00:07:15,800 會希望從recenter球 電路板的底部回 138 00:07:15,800 --> 00:07:17,130 的中心。 139 00:07:17,130 --> 00:07:21,840 >> 所以,現在我們在這裡需要生成 球的X速度。 140 00:07:21,840 --> 00:07:26,060 並且,按照該規範,我們以D蘭特 48,以產生一些隨機數 141 00:07:26,060 --> 00:07:27,820 以指定的速度。 142 00:07:27,820 --> 00:07:31,130 我們增加一到,既然我們只是 要在1的範圍內的速度 143 00:07:31,130 --> 00:07:33,380 到的2代替零到1。 144 00:07:33,380 --> 00:07:37,415 最後,我們以D蘭特48再次 為了確定球是否 145 00:07:37,415 --> 00:07:40,490 將要移動到左邊 或有權啟動。 146 00:07:40,490 --> 00:07:45,310 >> 因此d蘭特48返回一個隨機數 零和1之間,所以通過詢問 147 00:07:45,310 --> 00:07:50,330 如果這是小於0.5,我們有一個50 50 切換的速度機會 148 00:07:50,330 --> 00:07:52,740 球是負面的。 149 00:07:52,740 --> 00:07:55,790 最後,我們設置的垂直速度 球到只是某個常數。 150 00:07:55,790 --> 00:07:57,550 我們選擇三種。 151 00:07:57,550 --> 00:07:59,300 現在我們有另一個循環。 152 00:07:59,300 --> 00:08:02,800 >> 所以這個內循環是 是否要繼續。 153 00:08:02,800 --> 00:08:04,960 注意這裡,而磚 大於零, - 154 00:08:04,960 --> 00:08:07,100 因此,如果我們運行了磚,我們已經 贏得了比賽,我們可以 155 00:08:07,100 --> 00:08:08,770 打破這個循環 - 156 00:08:08,770 --> 00:08:13,140 和所有獲取Y滾珠比高度不 減去2倍的半徑。 157 00:08:13,140 --> 00:08:17,310 那麼,這是認識到的是,如果在 球恰好晃過槳,在 158 00:08:17,310 --> 00:08:19,500 這種情況下,你已經失去了生命。 159 00:08:19,500 --> 00:08:23,500 >> 尋找這裡面的for循環,我們有 在檢查一個鼠標事件。 160 00:08:23,500 --> 00:08:27,530 因此,如果有一個鼠標事件,該 意味著我們要檢查, 161 00:08:27,530 --> 00:08:30,880 見,如果鼠標被移動,並且如果 鼠標被移動了,我們希望有 162 00:08:30,880 --> 00:08:33,210 槳跟上鼠標。 163 00:08:33,210 --> 00:08:38,789 因此,要做到這一點,我們計算新 槳,這是怎麼回事的位置 164 00:08:38,789 --> 00:08:42,900 搶鼠標的位置 - 它採用抓起​​位置 165 00:08:42,900 --> 00:08:44,890 倘若我們通過 - 166 00:08:44,890 --> 00:08:48,940 然後我們要減去了 槳葉的寬度除以2,所以 167 00:08:48,940 --> 00:08:54,240 槳住宿集中在鼠標 代替槳的左側 168 00:08:54,240 --> 00:08:55,740 住居中。 169 00:08:55,740 --> 00:09:00,750 >> 所以,現在我們也希望確保我們 不走在左邊或右邊 170 00:09:00,750 --> 00:09:01,740 電路板的一面。 171 00:09:01,740 --> 00:09:05,480 所以在這裡我們只是檢查,如果 槳將是關閉的左側 172 00:09:05,480 --> 00:09:08,370 董事會,只是堅持 它的左側。 173 00:09:08,370 --> 00:09:11,000 在這裡,我們正在檢查,如果槳 將在右側的 174 00:09:11,000 --> 00:09:13,600 板,只需把它貼 向右側。 175 00:09:13,600 --> 00:09:17,290 最後,我們其實設置 擋板的位置。 176 00:09:17,290 --> 00:09:20,610 >> 現在,如果沒有一個鼠標移動, 這意味著我們要 177 00:09:20,610 --> 00:09:21,900 要移動球。 178 00:09:21,900 --> 00:09:24,260 因此,我們已經有了在x 和球y的速度 179 00:09:24,260 --> 00:09:25,560 所以我們移動它。 180 00:09:25,560 --> 00:09:27,750 但現在我們要檢測 一對夫婦的事情。 181 00:09:27,750 --> 00:09:31,950 所以在這裡我們要檢測,如果我們要么打 的左側或右側 182 00:09:31,950 --> 00:09:34,240 板,我們希望把球反彈。 183 00:09:34,240 --> 00:09:39,790 因此,在這種情況下,令x速度 到負x速度。 184 00:09:39,790 --> 00:09:43,900 >> 如果球擊中了電路板的頂層, 那麼我們也希望球反彈。 185 00:09:43,900 --> 00:09:46,750 但是,現在我們要改變 在y速度。 186 00:09:46,750 --> 00:09:49,130 請注意,我們不具備的條件 球擊中的底部 187 00:09:49,130 --> 00:09:53,230 因為該板已經被抓獲 在這裡在這個while循環。 188 00:09:53,230 --> 00:09:56,630 >> 最後,我們要檢測一些 碰撞中,如果球擊中 189 00:09:56,630 --> 00:10:01,040 無論是槳或磚,我們要 做一些特殊情況下的東西。 190 00:10:01,040 --> 00:10:06,590 所以,如果有一個碰撞,其中 案例對象將不能為空,那麼, 191 00:10:06,590 --> 00:10:10,950 如果對象打槳,我們會 只是想反彈球。 192 00:10:10,950 --> 00:10:16,110 這裡,另外,我們設置的位置 球只槳以上。 193 00:10:16,110 --> 00:10:19,710 請注意,我們正在採取的x坐標位置 球,只是重用。 194 00:10:19,710 --> 00:10:23,250 但在這裡,我們得到的y位置 槳和移動球 195 00:10:23,250 --> 00:10:24,620 槳以上。 196 00:10:24,620 --> 00:10:28,070 >> 這是一種特殊情況,以使球 不打槳,然後, 197 00:10:28,070 --> 00:10:31,530 之前,它能夠移出槳, 另一個循環善有善報和 198 00:10:31,530 --> 00:10:34,830 它認為它仍然在面板上和 所以在y速度被重新設置為 199 00:10:34,830 --> 00:10:38,210 負面然後將球正中下懷 枝彈跳上的槳。 200 00:10:38,210 --> 00:10:42,510 所以,如果我們沒有打槳, 那麼我們還需要檢查 201 00:10:42,510 --> 00:10:43,930 如果我們打磚。 202 00:10:43,930 --> 00:10:47,030 所以這是我們該如何檢查 看看我們打磚。 203 00:10:47,030 --> 00:10:50,250 >> 我們需要檢查這一點,因為我們可能 其實打標籤,而我們 204 00:10:50,250 --> 00:10:52,320 不想刪除該標籤。 205 00:10:52,320 --> 00:10:57,120 因此,如果我們打一塊磚,我們可以刪除 從窗口,磚遞減 206 00:10:57,120 --> 00:11:01,170 我們對磚的數量,增加我們的 點的數量,現在我們需要 207 00:11:01,170 --> 00:11:05,410 更新這正是記分牌 同樣的,因為我們,當我們看到以前看過 208 00:11:05,410 --> 00:11:06,300 初始化記分牌。 209 00:11:06,300 --> 00:11:08,790 但是,現在我們只是更新 記分牌,因為我們已經改變了 210 00:11:08,790 --> 00:11:09,370 點的數目。 211 00:11:09,370 --> 00:11:12,180 它現在應該顯示 我們打多一個突破。 212 00:11:12,180 --> 00:11:16,320 >> 最後,如果我們打磚 我們也想反彈。 213 00:11:16,320 --> 00:11:21,240 所以最後,我們只是暫停,這樣的 球是不動的超級快,我們 214 00:11:21,240 --> 00:11:24,360 其實可以打我們的槳。 215 00:11:24,360 --> 00:11:25,910 而這幾乎是它。 216 00:11:25,910 --> 00:11:32,200 所以,現在我們將循環回到頂部 這個while循環,並持續到 217 00:11:32,200 --> 00:11:35,700 要么我們失去了生命或 我們運行了磚。 218 00:11:35,700 --> 00:11:37,300 >> 如果我們失去了生命,會發生什麼? 219 00:11:37,300 --> 00:11:41,870 然後我們要退出這個while 循環,我們將看到將循環備份 220 00:11:41,870 --> 00:11:45,110 到外while循環的頂部。 221 00:11:45,110 --> 00:11:48,740 在這種情況下,我們要 執行此重新設置。 222 00:11:48,740 --> 00:11:52,010 而這個設置都將有我們拭目以待 一點擊,我們的遞減數 223 00:11:52,010 --> 00:11:56,060 生命,recenter球,重新計算 的x和y的速度,並 224 00:11:56,060 --> 00:11:57,670 然後繼續遊戲。 225 00:11:57,670 --> 00:12:01,490 >> 因此,將一直持續,直到 磚結束是小於 226 00:12:01,490 --> 00:12:02,540 或等於零 - 227 00:12:02,540 --> 00:12:04,630 在這種情況下,我們贏得了比賽 - 228 00:12:04,630 --> 00:12:10,430 或生命小於零,其中 情況下,我們已經輸掉了比賽。 229 00:12:10,430 --> 00:12:15,190 因此,一旦是那樣的話,我們打出來 while循環中,我們到達這裡 230 00:12:15,190 --> 00:12:17,660 我們要去的地方等待點擊 退出遊戲之前,這樣的 231 00:12:17,660 --> 00:12:20,140 遊戲不只是立即 關閉我們。 232 00:12:20,140 --> 00:12:23,420 最後,我們將關閉 窗口,就是這樣。 233 00:12:23,420 --> 00:12:25,500 我的名字是羅布,這是突圍。 234 00:12:25,500 --> 00:12:30,592