bluewingsky
   
發文: 409
積分: 0
|
於 2015-06-22 06:19
     
你寫的這種方式太過於複雜了, 不要說別人來看你的程式碼, 想必你自己回過頭看也會看到霧剎剎吧。
其一,太多重複性的程式碼, 其實可以寫成一個方法,需要時直接呼叫該方法, 這樣可以簡化程式碼,方便閱讀。
其二,遊戲執行的路線很模糊, 移動與吃子都寫在一起了, 以至於是要移動還是要吃子的判斷容易搞混。
你的問題應該是在要吃子時,被移動的判斷給限制住了, 因為不能往有子的方向移動,所以就無法過去吃子。
你的程式碼在1278行處,有一個判斷click==1的if, 做的是如果目前為沒有選取棋子的狀態所做的處理, 以便下一次點選可以移動棋子, 但是卻沒有處理到如果此次點選不是為了選取,而是要吃子的可能。 所以我在後面1286行處加入了else if,做為判斷此次點選是要吃子的處理, 然後把吃子相關的移動、吃子處理複製過來, 黑炮就可以直接跳過紅炮而吃掉紅馬了。
但是這不是很好的處理方法, 這是整個遊戲系統的問題,改起來可能是個大工程。
我以前剛開始寫小遊戲的時候也是這樣, 想到什麼寫什麼,越寫越多之後連我自己也不知道我在寫什麼, 但是寫久了,慢慢就會知道怎麼樣去"設計"可以讓程式碼更簡潔好懂, 往物件導向發展吧,會有幫助的。
書的話,我自己是用碁峯出版的"Java概論與實作-網路動畫遊戲入門程式" 裡面有教怎麼在視窗做2D、3D繪圖,還有教相關的事件處理, 也有一些簡單的小例子實作。 但是我覺得,你還是應該親自到書店去翻翻看, 確定是你想要的再買,像我自己是買了第三本遊戲動畫教學的書, 才買到這本用比較習慣。
 
|