杀人游戏系列 之一
本文以一個游戲為例,向大家演示了了linq to sql技術,wcf技術,wpf技術在程序開發中的應用。本游戲程序是5個人的團隊,花了5天的時間完成的。其中,在此之前,我們對wcf和wpf從來都沒有接觸過。也和大家一樣現學現做。程序做的很是倉促,自己后來看著都很爛。不足之處,還請大家指出并諒解。
本文不光向大家展示這些技術,同時還把整個項目過程,完整的展現給大家。在此,特別感謝Peter, Boler, Sean, Cloudy. 謝謝你們允許我把它拿到網上來,形成本文.本文將按實際項目中的時間,給大家展開。最后,一起提供所有code。
1,業務分析
首先team在一起討論了殺人游戲。其中,好多人并不曾玩過。為了讓大家有個明確的認識,我們還特意花了20分鐘的時間,玩了一場。通過游戲,大家對游戲的規則有了一個初步的認識。對其中的角色的職責,比如平民,殺手,警察等,也有了初步的認識。Sean從網上當下來一段游戲規則,如下
當注冊用戶進入游戲并點擊按鈕后,即表示其可以開始殺人游戲,待就緒用戶數達到規定范圍內時,游戲創建者點擊,游戲開始,系統自動為游戲參與者隨機分配角色,對于殺手角色,會自動在其窗口中提示其身份;?
游戲是從白天開始的,所有玩家可以在白天的時候發言和投票,當其中一個玩家的票數超過當前存活玩家總數的一半時,該玩家死亡,沒有遺言;當沒有玩家的票數過半,則當天不死人,系統設置的時間到后進入夜晚;?
進入夜晚,系統將在玩家列表中顯示自己的殺手標志,白天標志消失,如不是殺手角色則不顯示。殺手集團只能在夜晚系統規定的時間內使用“殺人”功能,并且必須共同殺死同一個人,該“殺人”功能才有效。當殺手集團完成殺人或者夜晚時間過去后,夜晚立即結束,被殺玩家死亡,被殺者可以留遺言。被殺者以及被投票投死的玩家將在玩家列表出顯示各自角色的標志,該標志所有人可見。死者在亡靈區可自由發言,存活玩家看不見亡靈區對話;?
此時進入第二天白天,所有玩家可以發言并且投票,規則同上。以此類推,直到游戲結束
最終,為了簡化游戲,我們制定了如下的游戲規則。?原文轉貼
1). There are 2 roles, civilian and man.
2) All the civilians and bad men can vote to anyone, Host server determines the most- ballot person to die during daytime.
3) All the bad men can vote to anyone of the commonalties to be killed, also they get the result by voting, and the most- ballot person will be killed during night.
4) The scenario 2) and scenario 3) recurrent once one scenario is finished.
5).After any one of the 2 scenarios finished each time, Host server will judge if all the rest persons are civilians or bad men, if this comes to true, the side of the rest persons will this round, the game finished.
6).While voting in scenario 2) and scenario 3), if once there are more than 1 person get the most-ballot, the voting is invalid, it will let all the players vote again in this scenario till the only one most-ballot person is selected (killed), then go to another scenario.
這些游戲的規則,是我們在實際玩游戲時制定出來的。此時還并沒有牽扯到程序這個層面上。那通過游戲規則的制定,我們對這個模型也愈加清楚。綜合上面游戲規則中出現的對象,來建立模型用圖來表示,
3, 程序架構設計
隨后,我們又討論了程序的架構,決定使用什么樣的技術。決定使用數據庫,并使用linq to sql做為數據訪問層。當然,說實話,這有點多余,但是可以拿分的點。先不管那么多了。又決定使用wpf做界面層,wcf來做通信層。既然是網絡版的,依然還要把服務端和客戶端各自細分一下。整個程序的架構如下
4,分工
最后,大家決定分工合作。Tom負責linq to sql 層面的,Peter主攻wcf方向,cloudy和sean主攻 wpf方向,boler主要是業務邏輯。這樣,一天的工作就結束了,大家各自領著自己的任務去忙活了。
5, 結語
我們最先接觸到是業務邏輯。并不是ui,更不是數據庫。那么先有數據庫呢還是先有對象?linq to sql 能做到先有對象嗎?Tom能帶給你不同的感受嗎?請留意第二篇。
下一篇
殺人游戲系列 之三 提供游戲代碼下載
殺人游戲系列 之二
殺人游戲系列 之一
本blog相關linq to sql文章
C# 3.0 入門系列(一)
C# 3.0入門系列(二)
C# 3.0入門系列(三)
C# 3.0入門系列(四)-之Select操作
C#3.0入門系列(五)-之Where操作
C#3.0入門系列(六)-之OrderBy操作
C#3.0入門系列(七)--之OR工具介紹
C#3.0入門系列(八)-之GroupBy操作
C#3.0入門系列(九)-之GroupBy操作
C#3.0入門系列(十)-之Join操作
C#3.0入門系列(十一)-之In, Like操作
C#3.0入門系列(十二)-Lambda表達式中Lifting
C# 3.0與Linq To Sql的學習方法--淺談
Linq To Sql進階系列(一)-從映射講起
Linq To Sql進階系列(二)M:M關系
Linq To Sql進階系列(三)CUD和Log
Linq To Sql進階系列(四)User Define Function篇
Linq To Sql進階系列(五)Store Procedure篇
Linq To Sql進階系列(六)用object的動態查詢與保存log篇
Linq To Sql進階系列(七)動態查詢續及CLR與SQL在某些細節上的差別
轉載于:https://www.cnblogs.com/126/archive/2007/10/12/922344.html
總結
- 上一篇: 接口与类的区别
- 下一篇: 正则表达式限制文本框只能输入数字,小数点