惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
宝玉的分享
宝玉的分享
博客园_首页
量子位
博客园 - 司徒正美
罗磊的独立博客
腾讯CDC
IT之家
IT之家
S
Schneier on Security
Hugging Face - Blog
Hugging Face - Blog
L
Lohrmann on Cybersecurity
H
Hacker News: Front Page
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
Know Your Adversary
Know Your Adversary
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AWS News Blog
AWS News Blog
Spread Privacy
Spread Privacy
I
InfoQ
T
Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
云风的 BLOG
云风的 BLOG
L
LINUX DO - 热门话题
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
Latest news
Latest news
Forbes - Security
Forbes - Security
Security Latest
Security Latest
NISL@THU
NISL@THU
The GitHub Blog
The GitHub Blog
P
Proofpoint News Feed
The Hacker News
The Hacker News
M
MIT News - Artificial intelligence
S
SegmentFault 最新的问题
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
B
Blog
A
Arctic Wolf
C
Check Point Blog
G
Google Developers Blog
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
L
LINUX DO - 最新话题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Privacy International News Feed
小众软件
小众软件

博客园 - Tom Song

招聘net 开发 RAR 协议- 探针协议 Linq To Sql 项目从Beta迁移到RTM注意事项 杀人游戏系列 之三 提供游戏代码下载 杀人游戏系列 之二 Linq To Sql进阶系列 -目录导航 C# 3.0入门系列-目录导航 谈Linq To Sql的优劣--纯个人观点 Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别 Linq To Sql进阶系列(六)用object的动态查询与保存log篇 数据库中使用 Synonym和openquery SQL 语句中特殊字符的处理及预防sql 注射 Linq To Sql进阶系列(五)Store Procedure篇 C# 3.0与Linq To Sql的学习方法--浅谈 C#3.0入门系列(十二)-Lambda表达式中Lifting Linq To Sql进阶系列(四)User Define Function篇 Linq To Sql进阶系列(三)CUD和Log C#3.0入门系列(十一)-之In, Like操作 Linq To Sql进阶系列(二)M:M关系
杀人游戏系列 之一
Tom Song · 2007-10-12 · via 博客园 - Tom Song

本文以一个游戏为例,向大家演示了了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.

2,建立领域模型
这些游戏的规则,是我们在实际玩游戏时制定出来的。此时还并没有牵扯到程序这个层面上。那通过游戏规则的制定,我们对这个模型也愈加清楚。综合上面游戏规则中出现的对象,来建立模型用图来表示,

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在某些细节上的差别