当前位置 > 首页 > Asp.net

C#网络版斗地主——地主权限的传递

6/7/2009 5:18:00 PM来源:Asp.net

C#斗地主网络版源码:http://www.cnblogs.com/zhubenwuzui/archive/2009/06/06/1497673.html

本文是对C#网络版斗地主的总结。

首先服务器使用一个随机数来随即选出默认地主。然后发送信息给选出来的玩家。玩家接收到信息后显示两个按钮“叫地主”,“不叫”。如果选择不叫,则把可以叫地主的权限发送给另外一个玩家,如果另外两个玩家都不要的话,就执行Restart()方法重新发牌。

叫地主权限的传递顺序如下图所示:

具体实现方法:

服务器得到一个1-3的随机数,1代表服务器是默认地主(默认地主就是随机选择的第一个有权限叫地主的玩家),2代表client1是默认地主,3代表client2是默认地主。只有服务器端能够选择地主,所以该方法在server类中

 

[代码]

 

客户端的循环接收数据程序会分析服务端发送过来的数据,client类:

(代码比较长,所以只贴出和地主权限传递有关的一部分)

 

[代码]

 

 

player1.areYouLandLordtrue,timer控件会检测到,然后把叫地主和不叫按钮显示出来。

叫地主按钮的click事件:

 

[代码]

 

当玩家单击“不叫”按钮时。如果玩家是服务器,如第一张图所示,程序会向他的下家发送选择地主的权限,当LandLordNum3时,服务器就是最后一个玩家,如果他也不叫地主的话,就只能重新发牌了。

如果玩家是客户端的话,直接向server端发送"AreYouLandLord"来表明自己不要地主。

Server端会判断是client1还是client2发送的消息,然后做出不同的响应

下面是"不叫"按钮的click事件处理程序

Player类中,player1.SelectLandLordEnd的具体代码如下:

 

[代码]

 

地主的权限传递就这么多了,可能写的比较乱,但是并不复杂,相信大家仔细多看几遍应该能够明白的.。如果那里有错误的话欢迎在下面留言栏反馈。谢谢!

下面是server类里面的监听客户端消息的程序:

(由于篇幅所限,这里只贴出与地主权