在学习 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. 使用Python-psycopg访问postgres、openGauss、MogDB

    摘要 Psycopg 是一种用于执行 SQL 语句的 PythonAPI,可以为 PostgreSQL.GaussDB 数据库提供统一访问接口,应用程序可基于它进行数据操作.Psycopg2 是对 l ...

  2. FPGA芯片结构介绍及工作原理解析

    FPGA工作原理与简介    如前所述,FPGA是在PAL.GAL.EPLD.CPLD等可编程器件的基础上进一步发展的产物.它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克 ...

  3. Vue权限管理该怎么做?控制到按钮级别的权限怎么做?

    一.是什么 权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配的资源 而前端权限归根结底是请求的发起权,请求的发起可能有下面两种形式触发 页面加载触发 页面上的按钮点击触发 总的 ...

  4. 力扣554(java&python)-砖墙(中等)

    题目: 你的面前有一堵矩形的.由 n 行砖块组成的砖墙.这些砖块高度相同(也就是一个单位高)但是宽度不同.每一行砖块的宽度之和相等. 你现在要画一条 自顶向下 的.穿过 最少 砖块的垂线.如果你画的线 ...

  5. 【阿里云采购季】3月采购完,IT运维躺赢一年2

    阿里云2020上云采购季正式上线啦!今年的采购季可以逛些啥?    采购季正式期时间: 3月2日-3月31日 在这段时间里,想买啥就买吧,别忘了把想买的产品加入购物车噢,特惠产品叠加购物车满减,更划算 ...

  6. 最佳实践|从Producer 到 Consumer,如何有效监控 Kafka

    简介: 对于运维人而言,如何安装维护一套监控系统,或如何进行技术选型,从来不是工作重点.如何借助工具对所需的应用.组件进行监控,发现并解决问题才是重中之重.随着 Prometheus 逐渐成为云原生时 ...

  7. OceanBase再破纪录!核心成员陈萌萌:坚持HTAP就是坚持我们做数据库的初心

    简介: 2021年5月20日,据国际事务处理性能委员会(TPC,Transaction Processing Performance Council)官网披露,蚂蚁集团自主研发的分布式关系型数据库Oc ...

  8. 解读如何安全快速建立IT治理环境

    ​简介:云计算经过十多年的发展,从基础的IAAS,大数据,到各种的PaaS有丰富的产品和生态,非常有效地助力了业务增长和技术创新,并提高了业务的效率.最直观的感受是过去需要几天到一个月的资源交付,现在 ...

  9. [FAQ] Windows 终端 `git diff` 出现 LF 空格 ^M 符号, 处理方式

      可能是终端内的换行配置和 IDE 当中的不一致. 比如 PHPStorm 的: Git 终端使用 git config core.autocrlf 查看是 true 还是 false. 是 tru ...

  10. [Go] Colly 使用 POST 提交 application/x-www-form-urlencoded 示范

    Colly 提供了 Post 和 PostRaw 方法,它们的参数类型不一样,需要注意. 目标地址接受指定的 Content-Type,可以通过设置 request Header. 局部代码: // ...