
推 serding: 不能亂動了 09/08 16:16
→ SangoGO: 至少他還有用Switch而不是if else 09/08 16:16
推 HJC6666: switch也沒很亂吧 總比把東西亂放好 09/08 16:16
→ yezero: 可以想像只是有點失望 09/08 16:16
→ kirimaru73: 很合理啊 都是用球去撞 09/08 16:17
→ kirimaru73: switch成五十塊反而可以讓每塊的深度不要太深 09/08 16:17
→ xga00mex: 然後發現第一個case永遠為true 09/08 16:17
推 StarTouching: 巨型狀態機 這不是很棒嗎? 09/08 16:18
推 h0103661: 1993年欸,那個時候上課都在用組語 09/08 16:18
推 HJC6666: 永遠true更爽了 剩下49條砍掉都不怕出事= = 09/08 16:18
→ h0103661: 用switch已經是高階語言了 09/08 16:19
推 tnlinna: 好奇那個年代可以呈現出那樣的彈珠彈跳感算是很厲 09/08 16:19
→ tnlinna: 害嗎?那時有物理引擎之類的東西了? 09/08 16:19
推 gino0717: 那個誰跟你說你應該總是使用if else還出了本書 09/08 16:19
推 piyan5566: 至少不是寫成巢狀if else 09/08 16:19
推 kirimaru73: 二維運動反彈加個重力 不算太複雜 09/08 16:20
→ twosheep0603: 狀態機 沒有問題 09/08 16:20
→ HolyBugTw: 還有什麼更好的寫法嗎?願聞其詳 09/08 16:20
推 speedingriot: 以彈珠台這例子來說,用switch沒有什麼不好吧? 09/08 16:22
推 oyaji5566: if else if else if else if else if else if else 09/08 16:22
推 Gwaewluin: 至少比全都if好很多了 09/08 16:27
推 kirimaru73: 這個案例寫50個case或50個if else都算是合理用法 09/08 16:27
推 StarTouching: 任天堂又贏 09/08 16:27
→ kirimaru73: switch有一些比較奇怪的規則要注意 你想要穩一點就寫 09/08 16:27
→ kirimaru73: 50個if else然後都用{}框好 有人要叫就隨便他叫 09/08 16:28
→ xxxzxcvb: 不然要一堆if else 喔 最後的判斷要把前面全都跑過 09/08 16:28
→ xga00mex: 寫到50我猜是用來判斷撞到什麼 現代可能寫成物件吧 09/08 16:29
→ kirimaru73: if else要判斷的只有if裡面的東西啊 switch一樣要比較 09/08 16:29
→ kirimaru73: 如果那50個東西被彈珠撞的反應有明顯的樹狀結構 09/08 16:30
→ xga00mex: 不過邏輯如果不複雜用switch也沒差 09/08 16:30
→ kirimaru73: 那就會寫成樹狀if else了 不過我也不是做這遊戲的 09/08 16:30
推 yezero: 只是在這裡聽到switch這種程設課前幾堂就學到的東西覺得 09/08 16:31
→ yezero: 有點奇怪而已。身為微軟的程式猿沒有更神奇的寫法嗎… 09/08 16:31
→ kirimaru73: 如果處理50種碰撞都是相異的小事 那並列沒什麼問題 09/08 16:31
→ xga00mex: 能寫的簡單幹嘛複雜化 09/08 16:31
→ kirimaru73: 彈珠檯本身就是個貼圖碰撞遊戲 不管你是要顯示外觀 09/08 16:32
→ kirimaru73: 還是要處理彈珠碰撞 switch和if else都是最直接的選擇 09/08 16:33
→ kirimaru73: 我個人是比較偏好if else啦 switch你還要想一下冒號 09/08 16:33
→ kirimaru73: 換行 以及裡面如果要宣告變數可能會有什麼麻煩 09/08 16:34
推 lsd25968: 這邊switch case很合理吧 每個事件都是平等的話 如果一 09/08 16:34
→ kirimaru73: 當然你內容夠簡單的話用哪個都沒差 09/08 16:34
→ lsd25968: 長串if那維護才會看到吐血== 09/08 16:34
推 llabc1000: 只要她會動,那就沒問題。 09/08 16:35
→ kirimaru73: 50個case和50個else if其實看起來也差不多 09/08 16:35
→ kirimaru73: case裡面宣告變數反而還稍微有點問題 09/08 16:35
推 shallreturn: 菜雞覺得用switch 很美(X 09/08 16:35
→ npc776: 牛用奶頭走路.gif 09/08 16:35
→ kirimaru73: switch它其實是個......用goto原理都出來的東西 09/08 16:35
→ kirimaru73: 我給它比較多尊重 夠單純的任務才會叫它上工 09/08 16:36
推 vios10009: 至少不是用if else 外加 goto 09/08 16:37
推 clh960524: 我倒是覺得是用 X-macro 加上 array,之後套 switch-c 09/08 16:38
→ clh960524: ase 09/08 16:38
→ clh960524: 這樣只要維護 X-macro 就好 09/08 16:38
推 kirimaru73: 以這張圖來說 只知道是跟這50個彈珠檯零件有關的判斷 09/08 16:41
→ FertilizerN: If it works, it works 09/08 16:41
→ kirimaru73: 如果是簡單的事情 那用簡單的語法處理很合理 09/08 16:41
→ kirimaru73: 如果是很複雜的行為 那開發過程中就會自己分類包裝了 09/08 16:42
→ kirimaru73: 一個if或switch加起來幾千行確實是不應該 09/08 16:43
→ kirimaru73: 不過發文者也沒說那個switch裡面有多大 09/08 16:43
推 ltytw: 用switch會好讀嗎 09/08 16:47
推 NightDream08: 這個的關鍵不是在switch,而是"巨型"。無論什麼程式 09/08 16:50
→ NightDream08: 碼你只要聽到某個"巨型"的東西(不管那東西是條件判 09/08 16:50
→ NightDream08: 斷還是函式還是其他的什麼),那通常都會讓人類一個 09/08 16:50
→ NightDream08: 頭兩個大,就這樣。 09/08 16:50
推 ULTIMGBK: 看起來就是球跟場地有互動就來跑這個switch 簡單粗 09/08 16:51
→ ULTIMGBK: 暴 比什麼不小心搜尋到整個包包造成卡頓 還是什麼 09/08 16:51
→ ULTIMGBK: 你看這顆石頭有幾百萬面但優化0分 拍賣太多人用會 09/08 16:51
→ ULTIMGBK: 壞掉 好很多 09/08 16:51
推 YeaPa: 我猜碰觸物件之後該物件會觸發一個共同event,而不是每個物 09/08 16:51
→ YeaPa: 件有獨立的event,然後再從參數裡面帶物件的編號,所以後面 09/08 16:51
→ YeaPa: 的handler用switch case去處理,如果是這樣的話那會比if el 09/08 16:51
→ YeaPa: se好很多,包括效能的部分 09/08 16:51
推 npc776: 我有點忘記 場上是不是可以多一顆球 這樣運作沒問題嗎 09/08 16:52
推 ss218: 那時代的程式語言就差不多那樣吧 09/08 16:54
推 ymsc30102: 可以三顆噢 09/08 16:54
推 EXTECH: 寫得蠻好的啊 09/08 16:54
推 Giornno: 至少不是if 09/08 16:57
推 ilohoo: switch case比if else好讀 不過要是能物件化每個物件各自 09/08 16:58
→ ilohoo: 處理碰撞事件會更好擴充 09/08 16:58
→ Giornno: 或者是用jumpx跳來跳去的 09/08 16:58
推 inte629l: 多球不知道如何設計 handler再傳入ball*之類的? 但又要 09/08 16:58
→ inte629l: 忙多顆球的物理有點忙 09/08 16:58
→ inte629l: C++的話有種想套template method XD 09/08 16:59
推 EXTECH: 如果是50物件都有獨自物理特性,沒毛病啊 09/08 17:06
推 whosu: 看他這個圖片的案例 switch確實沒啥問題 就是很多而已 09/08 17:06
推 Pixis: 童年 09/08 17:17
推 crazyanight: 我比較喜歡看if else switch還要找break 09/08 17:28
→ crazyanight: 不過如果內容簡單的話確實switch更合理 09/08 17:29
推 ao40418: switch控制狀態機不是基本到不行嗎 09/08 17:34
→ edgefish02: 至少不是用goto 大家就要知足 XD 09/08 17:51