Fork me on GitHub

C# winfrom 局域网版多人成语接龙(一)

在学习 springjdbc+c3p0时做了一个数据库版的获得给定词汇的成语接龙,这个做了之后,我突然就想做一个可供多人游戏的成语接龙游戏,由于自己根本不熟悉java的图形界面开发,感觉没有winform做起来方便,我就决定用winform+socket做一个出来,现在基本功能已经完成了,还差数据的正式支持。
 
功能很简单:
服务器有分房功能,可控制每个房间的游戏人数,连接数据库查词,判断词语正确与否。
 
客户端也很简单,就准备和抢答功能。当房间人数满了,且所有人都准备了,开始3、2、1倒计时,倒计时结束后,服务器第一次随机从数据库查一个成语出来转发给这个房间的客户端,接受到成语后开始答题倒计时,当客户端的答题倒计时结束后,客户端如果没有回答问题,也回发送一个特殊的答案到服务器表示这个客户端没回答,服务器接受到答案后,开始答案判断,并把第一个发送到服务器的答案作为下次接龙的成语发送回客户端,如果一个房间内所有用户都没有作答,则由服务器再到数据库找一个成语,发送出去。客户端每接受到一个新的成语,就重新开始答题倒计时。
 
游戏规则,答对得分,搭错扣分,不答不扣分不加分。现在判断游戏结束的条件是分数先达到一定值后,就胜利。后面可能还要加个游戏时间,时间到了,没有一个客户端的分数达到结束的条件,就以最高分胜出。
 
做这个我是用的socket的异步方法,期间也遇到些问题,我感觉最麻烦的还是处理,服务器和客户端的连接和关闭,以及当一个房间的客户端规定时间内都没回答问题,那么就会在同一时刻发送消息给服务器,这个时候服务器接受的数据会被覆盖,一开始我再异步接受回调函数里加lock,消息能一个个的进来了,但是因为接受数据的buffer数组只有一个,这就会造成,一个客户端端口是5555接受到的buffer的数据却是客户端6666发送的数据,这是我调试发现的,后来,我就把服务器接受到的客户端连接,一个客户端连接给一个buffer数组,每个客户端连接都用自己的,问题就被我解决了。
 
做这个,也是心血来潮,做得并不是很完善,也只在本机上测试过,没有多台电脑测试,也算是小小的练练手。做这个我还专门安装了powerdesign16.5的,但是根本不会用,学的软件工程的什么用例图,流程图,时序图什么的都不知道怎么画,以前上班的时候,公司想接手乙方的代码,我才入行没多久,作为公司唯一的懂点开发的人,公司就让我问维护这个项目需要些什么资料,我就问乙方有没有那些图什么的,对方说没有。我就感觉现在小的公司都不会去实现设计那些东西了,估计都是先开发一个原型出来,再功能迭代。后面我会把数据库部分补上。
 
感觉,现在越来越多的人都再学写代码了,如果没有过硬的本事,技术和业务都不行的话,到后面老了,负担变重,工资上不去,年龄也大了,这条路还能走通嘛,换条路再走,能接受一切从零开始的挑战嘛?


posted @ 2020-11-16 21:52  HelloLLLLL  阅读(83)  评论(0编辑  收藏  举报