1.學習心得
在參加NCKU的Coding-X課程也要過一半了,這短短的一個月中,修課生45人、旁聽生60人、總共105人,努力在魔鬼課程中靠強迫自己去學習留下來、繳交了最後一個lab的只有44人,存活率是不到一半的…
但也讓我想起,曾經我聽過有人說學習是不能速成的,但這只是對學習周期的概念有所不同而已,我可以拉長時間的長度和寬度,兩個月一天8小時的訓練和半年一天3小時時間是一樣的,你能說前者就是速成嗎?有些人是可以承受長時間的學習,但有些人是需要慢慢來的,但不管如何,是不能一概否決哪一方..
只要我們能善用時間,就永遠不愁時間不夠用。 — — 德國詩人Goethe
2.Java Swing的鍵盤感應和坦克的位移
其實一開始,並不是使用true or false的判定,而是在Swing keyPressed(按鍵按壓)這個函式下,直接定義,那會導致移動會不順暢且要加上左上和左下等方向時,程式碼會變成異常復雜且難以閱讀,所以我就把code改成以8個布林值變數(預設false)來代表方向,當按鍵觸發時,false會改成true,在丟進locataDirection()這個函式,去用if判斷(if是要裡面的值為true時才執行)。
那判斷的過程以左為例,if (bL && !bU && !bR && !bD) dir = Direction.L;如果bL為true(按壓按鍵觸發),其他的變數為!bU(!是反向運算子,簡單說就是相反),那就把dir 這個變數= Direction.L,最後進去move()這個函式,用switch的情況做判斷移動,會有另一個的函式keyReleased(按鍵放掉)去把布林值重置 。
3.障礙物的設置和判定
在障礙物的設置和判定上 ,先把地圖上的物件用矩陣定義,0是代表可以通行,1,2,3各自代表著障礙物,就會把障礙物的物件先給定義出來了,圖片也是這時候插入,那在碰撞的部分,會在設一個collision_array跟這個array是一樣的,但collision_array是在幫助定義碰撞,這會放在move()裡面去做判定(這邊已經比較複雜),大略來說,(48,48)是坦克車的大小,用移動的向量去除來做判定,當碰到3時是甚麼狀況,碰到2是甚麼狀況(這邊還是感謝組長的偉大 இдஇ)。
總結
在下個月有更深的課程要學習,而且大型專案的分工部分也出來了,要自己學習Android Studio和Firebase,真的是燃燒滿滿阿,已經是蠟燭兩頭燒了,但發現合作就是如此,一方面展現自己擅長的部分,一方面去自己想學習的部分,跟高手合作,真的非常期待之後成品出來的那天啊。最後,可以幫我按like讓我可以賺咖啡錢喔,我會很開心的 (ゝ∀・)。。