请提供一下网络象棋的设计思路 ( 积分: 100 )

  • 主题发起人 fongling5355
  • 开始时间
F

fongling5355

Unregistered / Unconfirmed
GUEST, unregistred user!
功课: P2P网络象棋
问题: 请提供一下这方面的设计思路, 谢谢!
 
F

fongling5355

Unregistered / Unconfirmed
GUEST, unregistred user!
功课: P2P网络象棋
问题: 请提供一下这方面的设计思路, 谢谢!
 
C

cqwty

Unregistered / Unconfirmed
GUEST, unregistred user!
这个没有多少难度哦,因为都是人来处理,主要就是处理棋盘上的位置,一端作为服务器,先开启listen。如果有连接者来,那就提供连接了。然后就是关于棋如何传送,一般都是定义相关的信息,谁的棋,位置。这个在模式上没有什么难度,关键是处理下棋规则上。
 
A

ak_2005

Unregistered / Unconfirmed
GUEST, unregistred user!
F

fongling5355

Unregistered / Unconfirmed
GUEST, unregistred user!
请问要如何处理在线会员名单呢?
 
X

xuxiaohan

Unregistered / Unconfirmed
GUEST, unregistred user!
关键是处理下棋规则上, 非常同意, 其他的,真的很容易。。。。
网络传输,用indy也可以
 

风铃夜思雨

Unregistered / Unconfirmed
GUEST, unregistred user!
网络五子棋源码
http://www.danceofwind.com/files/FiveSource.zip
 
C

chinapr

Unregistered / Unconfirmed
GUEST, unregistred user!
诂计没有难度
 
F

fongling5355

Unregistered / Unconfirmed
GUEST, unregistred user!
"
关于 P2P "
如果两个"
点"
都是从同一个LAN 访问会有什么问题吗?
 
D

dfw1001

Unregistered / Unconfirmed
GUEST, unregistred user!
根据ip程序做下限制
 
N

newsmile

Unregistered / Unconfirmed
GUEST, unregistred user!
http://www.delphifans.com 有一个“中国象棋网络版”你可以参考。
 
F

fongling5355

Unregistered / Unconfirmed
GUEST, unregistred user!
dfw1001: 可以详细些吗?
 
X

xuxiaohan

Unregistered / Unconfirmed
GUEST, unregistred user!
五子棋很简单, 但象棋规则复杂,这是重点。
 
W

whatdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
用一个ClientSocket和一个ServerSocket就可以完成,设置好两边共同识别的命令参数,然后通过命令参数进行PP通信,比如一个参数为:j1t2可以理解为“车一平2”,一方设置服务器,另一方加入,然后就可以游戏了,至于游戏规则,写个单机版的都可以,只不过就是用命令参数代替了本地命令而已
 
F

fongling5355

Unregistered / Unconfirmed
GUEST, unregistred user!
如果是使用 TIdTCPClient,TIdTCPServer 是不是有彼此IP 就可通讯, 不用伺服器?
 
G

Genl

Unregistered / Unconfirmed
GUEST, unregistred user!
服务端检查规则不就行了??
请求端为客户端 接受端为服务端。。。。。。。。
建议所有棋子运算全做在服务端上。。。每当有命令的时候 服务端发命令刷新客户端
客户端发命令索取服务端上全部棋子位置资料 之后自我刷新
客户端有动静时 也发命令请求服务端 服务端验证是否移动合法 合法则发命令刷新客户端
也就是说客户端只是画个图而已
这样避免了2个人的游戏修改大战。。。
具体一点就是构建一个2维数组 分别代表横纵座标 数组的值代表是哪一个子。。
比如1是A方第一个车 2是第2个车 3是A方第一个马。。。
这样用一个2维数组就能反映一个棋盘的情况。。。
当客户端移动的时候 先保持画面不动 把客户端的数组改变成移动后的样子 不用验证
直接发给服务端 服务端接到客户端发来的棋表后 比较棋表的差异 就能得出2个变化的元素
就可以直接验证是否合法 这样2个元素的验证非常简单 比想象的简单 动手做一下就知道了 如果不合法 。。。你看着办。。。如果合法 替换自己的棋表 之后把棋表发回去 客户端刷新重画 一定要发棋表 不要发移动合法命令。。。那样有很多隐患
这样就完成了一个CS象棋。。。 CS算不算P2P啊。。。
至于网络传输量的问题 不用考虑 没有人下棋那么快的。。。就算有观战的功能。。。也不会出现太大的强度。。。。再说 数据量也不大 20X20=400 一次400B的数据量也不是很大  压缩了会更小
之所以用20X20是因为我不知道你说的是国际象棋还是中国象棋还是其它的什么象棋
 
G

Genl

Unregistered / Unconfirmed
GUEST, unregistred user!
又提上来了??我说的有什么不对的地方么?
 

Similar threads

回复
0
查看
662
不得闲
回复
0
查看
674
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
734
DelphiTeacher的专栏
D
顶部