发布GameHall 2.0 a测试版本源码

<script type="text/JavaScript"> </script> <script src="http://a.alimama.cn/inf.js" type="text/javascript"></script>

代码下载:http://files.cnblogs.com/Jax/GameHall-2.0-a.rar(含DB)

我申请的CodePlex:http://www.codeplex.com/GameHall(还来不及把源码放上去)

 

这个版本只实现了大厅,不包括任何游戏。用户可以同时进入多个大厅,但是只能在一个大厅的桌子坐下,进行游戏。 <script type="text/JavaScript"> </script> <script src="http://a.alimama.cn/inf.js" type="text/javascript"></script>

目前仍基于Winform开发,只使用到了.NET 3.5中的LINQ技术处理数据,并大量使用了C# 3.0中的语法糖。

使用了泛型事件和函数式编程,从而完全消除了对Delegate的依赖。

使用TCP Socket通信,抽象出了通信层,为以后版本更换通信方式做准备。

使用了HandShake模式,Client是主动的,Server端是被动的。也就是说,有Request才会有Response。所有38个自定义协议请参见Protocol.txt文件。

在桌子的选择上(4人桌打牌、2人桌下棋)实现了面向接口编程,从而将来能够灵活地增加3人桌和5人桌。这只是一个小的尝试,将来游戏也会采用这套机制。

对非法退出进行了精确地控制。

这个项目有很大的扩展性。一是通讯上的扩展,可以轻松更换TCP连接、UDP连接、HTTP连接等等。二是易于加载新游戏,也就是插件技术,而不用改动大厅程序。

不要怪我很少捕获异常。我是有苦衷的,尤其是Server端的处理要考虑到性能,不能加太多。

附带两个小程序。一个是NAT打洞技术的实现(为以后使用局域网的用户开发);另一个是WPF+WCF版本的简易聊天室(在Jacob老兄的一个源码上进行了重构,是接下来升级WCF的测试程序)。

所有代码我都进行了多轮阶段性测试。但还是要请大家为我挑毛病(尤其是测试人员)。主要集中在Client端。

部分界面如下:

Server端:只是一个CUI程序

image

Client端:

1)登陆成功,从Server端得到游戏列表并绑定到左边的Treeview。由于未联系到广告商,只好放美女照片。

image

2)进入“棋类”大厅(2人桌),左边是用户列表和聊天信息

image

3)进入“牌类”大厅(4人桌)

image

4)放大了看:

a

 

话说,我写这套开源项目,就是为了向世人展现.NET的所有新技术,而并不注重实用性和太复杂的业务逻辑。因此,把原先“只能进入一个大厅”改为“可以同时进入多个大厅”,所增加的逻辑复杂度,是我没有预料到的。为此我在大年初一熬了一个通宵修改数据结构,这也是我很后悔的一件事情。“不要把逻辑搞得很复杂”,将是我接下来的宗旨。但是,安全性和性能,我还是会很在意的。

实战中遇到了很多平时做研究时没有遇到的问题,解决起来煞费周折,我会把这些经验发布到blog上,以飨后人。

重头戏在接下来半个月的开发。WPF、WCF、WF和SilverLight还没出场呢!其中WCF与WF的整合是关键。WPF则主要用来展示Data Binding技术(这门技术决对比WInform好很多很多)。SilverLight用于用户注册。

转自:http://www.cnblogs.com/Jax/archive/2009/02/08/1386121.html

<script type="text/JavaScript"> </script> <script src="http://a.alimama.cn/inf.js" type="text/javascript"></script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值