如何用C#实现一个简单的服务器处理程序

来源:百度知道 编辑:UC知道 时间:2024/06/15 21:45:30
首先写给可以给我回答的人
答案可以给我提供一个可行的类,并提供一些对本问题有用的本类方法
或者给我提供针对本问题简单的可行方案,我不要求回答有多详细,但是希望不是没用的回答,最后谢谢了...

这个服务器程序是这样的:
目的是写一个纸牌游戏,每个玩家可以通过各自的客户端与服务器之间的交互将状态提交给每一个玩家(是否准备好,打的拿张牌,玩家登陆姓名等..)
客户端可以向服务器发送消息,当让服务器也可以处理和反馈这些消息.
客户与服务端主要用于局域网,我尝试socked类,但是希望有更好的办法

最近闲来无事,决定自己开发一个网络斗地主,一来出于兴趣,一来巩固和检测以下自己目前对已学知识和思想的了解。
思想:
因为是多房间,多桌子。所以,我的想法是首先建立一个玩家类。对进入游戏的玩家实例该类,这样方便管理和修改玩家信息,同时,建立桌子类。对每个桌子上的座位设置为属性,这样玩家类+桌子类就形成了最基础的部分。

具体思想如下:
建立玩家类PLAYER

玩家ID
玩家房间号
玩家桌子号
玩家CLIENT
玩家性别
玩家积分
玩家手上的牌
玩家已经出的牌
....肯定还有些没写,难得写了

建立桌子类TABLE

桌子房间号
桌子上玩家数组
桌子是否开始游戏
桌子上玩家数量
桌子已经出的牌的牌型
桌子已经出的牌的最小值
桌子当前出的牌的牌型
桌子当前出的牌的最小值
....肯定还有些没写,难得写了

进入大厅—进入斗地主-进入房间一(也可以是房间二,建立连接将当前房间号和自己的传给服务端,服务端将自己的ID插入数据库并且返回数据库中所有当前游戏房间的玩家的信息反馈给当前玩家,点桌子进入游戏界面,建立连接,将自己ID和房间号,桌子号,座位号,传到服务端,服务端根据传入的桌子号查找(private Dictionary<string, Table> clientTable;)clientTable ,如果没有这个键值,就添加
Table newtb=new Table();
Newtb.房间号=
Newtb.玩家数组.add();
……..
clientTable.Add(桌子号, newtb);

如果存在这个值
Table temptable = (Table) clientTable(桌子号)
temptable.玩家数组.add();
temptable.玩家数+1;