2012年11月11日 星期日

踩大便ONLINE!

花了不少時間 總算是完成了!!
99%國人(本人)自製 國產(本人產)線上遊戲大作!!
踩大便ㄤ賴!!!!
<<DROP BOX下載>>    MineOnline.jar




------胡扯結束進入正題------

事情的起因是因為我妹最近常常在玩windwos的踩地雷
不知不覺  她玩踩地雷的反應速度已經到我完全來不及看的程度了
於是便想說  既然這麼有興趣的話(雖然她只是用來殺時間)
那何不做個線上版的踩地雷
讓她試試看跟其他人切磋?

然後就開始了最近一連串的自我練習
最後作出來的成品也打算使用我妹天才般的命名
"踩大便online"

------以下為心得與筆記------

之前的Thread練習中
分別建立了Server與Client的物件
但在一般的小型對連遊戲中
往往有一位玩家建立伺服器
並同時參與遊戲
也就是說    除去剛開始的連線設定外
Server端與Client端所做的輸入與輸出幾乎是一樣的
過去像是世紀帝國、LF2、一些可以線上對戰的模擬器等
都是這樣的架構
因此  為了方便以後有可能的開發工作
也把這樣的架構另外打包
包成另一種Server與Client端幾乎對等的物件
命名為LinkPackage(很爛的命名)

在這個物件中   可以設定目前要當Server或是Client
以及加入事件監聽的Listener
設定完之後  分別有Server端的開始等待function
以及Client的開始連線function
確認連線後     不管是Server端或是Client端
兩邊都以"send"這個function來送出指令
接收到物件時對應的處理手續也都已經寫在Listener中
(且不管Server端或Client端都可以寫在同一個Listener物件中)
簡單來說  對開發者來說
如果除去連線傳輸的延遲時間
連線後Server端是跟Client端一樣的操作方式
只要在Listener中將兩種版本對應的事件寫好
不需要特別去注意目前撰寫的是Server版還是Client版

這個工作理論上可以用更簡單的方式達成
就是當Server端開始運行Server時
建立一個獨立且無法參與遊戲的Server(有點像裁判)
然後自己再以Client的身分連線到自己所開的Server中
但不知為何  個人不太喜歡這樣的做法
所以....下次再說吧XD

最後是重頭戲的踩大便!
遊戲背後採用剛剛所說的LinkPackage所撰寫
算是自己練習使用自己寫的工具

遊戲過程上
Server端玩家設定自己的player name與port
並依照自己的喜好(?)選定地圖的大小
以及地圖中地雷的數量後
點擊SV按鈕開始Server
此時便會看到自己所設定的player name出現在左方列表中
之後等待Client端加入

Client端玩家此時設定自己的player name
並輸入Server端的ip與所指定的port
按下CT按鈕確定加入遊戲
成功加入後Server端與Client端都會看到更新過的玩家列表

當所有玩家都加入就位後(目前設定最多8人同.......樂?)
Server端按下OK按鈕開始遊戲
此時所有玩家的畫面才會出現符合剛剛所設定大小的地圖
並進入倒數

為何要倒數?   因為這個遊戲的規則跟MSN踩地雷完全不同
採用即時制!!
規則簡單說起來  就是大家搶著點開格子
點開的格子上的數字就是所能得到的分數
最後全部有數字的格子被點開時  總分最多的人獲勝

有玩過踩地雷的人都知道
格子裡的數字代表該格子周圍8格內地雷的數量
因此周圍越多地雷的格子分數越高
但在附近踩到地雷的風險也越高(踩到地雷扣10分)
每個玩家要做的事情就是找出地雷
並把地雷附近的格子點開賺取分數
為了方便辨識  使用滑鼠右鍵可以將格子切換為不可點狀態
但這個狀態其他玩家是看不到的
所以不會因為自己找到地雷而讓其他人佔便宜

---------------心得-------------

自取其辱這句話簡直就是為我所寫
跟我妹以及我爸3人混戰了幾場後
被我妹慘電
只好繼續改進這個遊戲並且推廣
讓大家知道不是我弱!  是我妹太強!!

目前遊戲的介面陽春到不行
一些顏色設定等也都弄得很糟
過陣子比較有空的時候
會再找時間整個重新規劃整理過一遍
並且把規則做些變化增加可玩性
如果這些都能順利完成的話....
再把原始碼拿出來獻醜吧(目前實在太醜沒有獻醜的勇氣)
以上

沒有留言 :

張貼留言