结对和团队项目建议 - 黄金点游戏

简介:

这个游戏可以变成一个持续发展的团队项目:

1)在课堂上玩,用Excel 纪录成绩。做成简单的单机版游戏,锻炼基本编程

2)两人合作,做成简单的 client/server App,用户从网页/手机上输入数字,并算出获胜者。 技术讨论的议题有: 

  • 前面写的模块有多少是可以重用的? 为何不能重用?
  • 研讨 client/server 的API 应该怎么设计,如何认证用户?
  • 如何开发client App
  • 为了保证游戏按时完成,如何在服务器/客户端做时钟同步?
  • 如果获得第一名的多个用户的数字相同,如何排定次序?(提示:可以考虑提交时间,历史成绩)

3)如何设计测试用例, 保证server 的正确性, 效率, 压力测试 (如何模拟上千个客户端,从不同的端口,提交不同的数字?)

4)原来我们是让用户从客户端输入数字, 看到结果之后,再玩下一轮。用户玩这个游戏是有一定的策略的, 我们如何能把这个策略变成程序,成为人工智能呢? 能否利用 AI 算法提交数据?
  client 程序能访问所有以前的历史记录, 它再推测下一个数字是多少, 然后提交。

  这里面也有很多问题要克服,例如,如果数字很小 0.00000000000000000001,  下溢了, 怎么办?
    应该提交的是 double, float, 还是 string 类型?


5) 全班同学每人写一个程序, 玩一万轮, 服务器要能快速处理。  
挑战:
如何在服务器和客户端都做到高效, 能多少秒钟就比完一轮, 并把数据传给所有客户端? 客户端是通过什么接口来接受比赛数据,或者从某个公共来源去读取数据?

6) 修改规则, 每个用户每次可以提交两个数字, 其他规则一样,再玩一万轮。

  挑战:这个时候,有程序会不会提交一个大的数字,来保证自己的另一个数字比较接近 golden number? 你的AI 程序如何在这个新规则下占得先机?

7)让互联网的用户可以通过网站注册, 然后用某种 Domain Specified Language 写这个AI 的规则, 然后他们也可以通过网站玩这个游戏。 
挑战: 设计这种 DSL,并解释执行。

  例如, DSL 可以支持下面的规则:

  ① 我每一轮都提交上一轮所有数字的平均值 * 0.618 * 0.618

  ② 如果我上一轮的提交的数值小于当轮的 golden number,那我的下一个数字要是上个数字的两倍


8) 扩展到全球,服务器能 24/7 不断主持游戏,并记录成绩。 
挑战:这个过程就能练很多技能和软工设计的功夫





本文转自SoftwareTeacher博客园博客,原文链接:http://www.cnblogs.com/xinz/p/5972932.html,如需转载请自行联系原作者


目录
相关文章
|
存储 文件存储
如何使用Nest.js 上传文件及自定义文件名保存
在 Nest.js 中进行文件上传并自定义文件名保存的过程相对简单
731 0
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
机器学习/深度学习 XML 搜索推荐
图像自动化保存工具:Python脚本开发指南
图像自动化保存工具:Python脚本开发指南
|
缓存 监控 Java
优化Spring Boot应用的数据库访问性能
优化Spring Boot应用的数据库访问性能
|
存储 网络安全 开发工具
Git 协同开发详解:从基础命令到多人协作
Git 协同开发详解:从基础命令到多人协作
293 0
|
存储 PHP 数据安全/隐私保护
攻防世界 Web_php_unserialize
攻防世界 Web_php_unserialize
285 0
|
机器学习/深度学习 人工智能 运维
智能化运维的崛起:自动化与人工智能在IT管理中的融合
本文深入探讨了智能化运维在现代企业中的重要性,并分析了自动化技术和人工智能(AI)如何共同推动IT运维管理的革新。文章首先概述了传统运维面临的挑战,然后详细介绍了智能化运维的核心概念和实施步骤,最后通过具体案例展示了智能化运维在实际工作中的应用效果和潜在价值。
329 0
|
存储
char *str,char &str,char *& str和char str的区别
char *str,char &str,char *& str和char str的区别
391 0
|
敏捷开发 Java 测试技术
「架构」模型驱动架构设计方法及其运用
本文探讨了MDA在软件开发中的应用,从需求分析到测试,使用UML建模功能需求,通过PIM设计架构,自动生成代码以减少错误。MDA提升了可维护性、可扩展性和可移植性,通过工具如Enterprise Architect和Eclipse MDT支持自动化转换。虽然有挑战,如模型创建和平台转换,但结合敏捷方法和适当工具能有效解决,从而提高开发效率和软件质量。
1226 0
「架构」模型驱动架构设计方法及其运用
|
前端开发
elementui的el-dialog组件与el-tabs同时用导致浏览器卡死的原因解决
elementui的el-dialog组件与el-tabs同时用导致浏览器卡死的原因解决
280 0