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


C# winfrom 局域网版多人成语接龙(一)的更多相关文章

  1. 成语接龙(dfs)

    成语接龙 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 92(17 users) Total Accepted: 23(14 user ...

  2. Flask开发成语接龙游戏,闲来无事手机玩玩自己写的游戏吧!

    英语单词学习应用 周五发布的文章Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署发布后,看到喜欢的人比较多.本来周末打算照着扇贝/极光单词,写一个英语单词自测工具.但苦 ...

  3. 再谈Weiphp公众平台开发——1、成语接龙插件

    易错点,注意插件的命名 1.创建插件.在weiphp管理后台创建成语接龙插件,勾选安装后立即启用,不需要配置项和管理列表.点“确定”完成插件的创建. 2.安装插件. 3.检测插件是否成功安装.返回到w ...

  4. python——成语接龙小游戏

    小试牛刀的简易成语接龙. 思路—— 1.网上下载成语字典的txt版本 2.通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快) 3.python程序,查找 用户输入的最 ...

  5. java小程序---简陋版多人聊天室

    功能需求: 1 每运行一次主函数,创建一个客户端聊天界面; 2 客户端界面分三块,公屏(显示所有客户端发送的信息),私屏(用于输入个人想要发送的信息),发送按钮(点击一次,将客户端信息发送到服务端) ...

  6. WebRTC实现网页版多人视频聊天室

    因为产品中要加入网页中网络会议的功能,这几天都在倒腾 WebRTC,现在分享下工作成果. 话说 WebRTC Real Time Communication 简称 RTC,是谷歌若干年前收购的一项技术 ...

  7. java版两人聊天程序

    server.java import java.io.*; import java.net.*; import java.text.SimpleDateFormat; import java.util ...

  8. Java版多人聊天室

    server.java import java.io.*; import java.net.*; import java.text.SimpleDateFormat; import java.util ...

  9. HDU - 1546 ZOJ - 2750 Idiomatic Phrases Game 成语接龙SPFA+map

    Idiomatic Phrases Game Tom is playing a game called Idiomatic Phrases Game. An idiom consists of sev ...

  10. python成语接龙小游戏

    上一篇讲了小游戏的坑现在把源码放出来 #coding:utf-8 import string import pypinyin import sys import random print(" ...

随机推荐

  1. WCHAR 字符串拼接

    LPCWSTR GetIniPath() { WCHAR buffer[MAX_PATH]; BOOL result = SHGetSpecialFolderPath(0, buffer, CSIDL ...

  2. 【编译原理】Antlr 入门使用

    前面文章我们学习了编译器前端的词法和语法分析工具,本篇我们来看看如何借助 Antlr 工具,快速生成词法和语法分析代码. 一.安装 mac 环境: 1)安装 brew install antlr 2) ...

  3. opencv读取中文路径图片

    点击查看代码 img = cv2.imdecode(np.fromfile(filename, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)

  4. 在HarmonyOS上使用ArkUI实现计步器应用

      介绍 本篇Codelab使用ArkTS语言实现计步器应用,应用主要包括计步传感器.定位服务和后台任务功能: 1.  通过订阅计步器传感器获取计步器数据,处理后显示. 2.  通过订阅位置服务获取位 ...

  5. k8s之基于metallb实现LoadBalancer型Service

    一.实验说明 1.介绍 MetalLB 是裸机 Kubernetes 集群的负载均衡器实现,使用标准路由协议,主要用于暴露 K8s 集群的服务到集群外部访问,MetalLB 可以让我们在 K8s 集群 ...

  6. Centos8安装docker-ce

    一.安装步骤 1.安装yum-utils yum install -y yum-utils 2.配置阿里源 yum-config-manager --add-repo http://mirrors.a ...

  7. Visual Studio 2019汇编报错 warning LNK4258: 指令“/ENTRY:main@0”与开关“/ENTRY:main”不兼容;已忽略

    Visual Studio 2019汇编报错 warning LNK4258: 指令"/ENTRY:main@0"与开关"/ENTRY:main"不兼容:已忽略 ...

  8. 01矩阵-【BFS】

    01矩阵 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离.两个相邻元素间的距离为 1 ,方格斜方向不计算距离. 示例 1: 输入: [0 0 0 0 1 0 0 0 0] 输出: ...

  9. Pytorch风格迁移代码

    最近研究了一下风格迁移,主要是想应用于某些主题节日时动态融合背景,生成一些抽象的艺术图片,这里给大家分享一个现成的代码,我本地把环境搭建好后跑了试试,有兴趣的可以直接拿去运行: 1 import to ...

  10. NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落地优化之道

    NL2SQL技术方案系列(1):NL2API.NL2SQL技术路径选择:LLM选型与Prompt工程技巧,揭秘项目落地优化之道 NL2SQL基础系列(1):业界顶尖排行榜.权威测评数据集及LLM大模型 ...