【逍遥骰】2022·K班结对编程任务

林毅032002626 2022-09-23 11:57:20
加精

本次结对编程任务为:一款随机骰子对战小游戏的设计与实现
作业提交截止时间为:2022.10.14 22:00

🎲Part·0 关于结对编程

结对编程(Pair Programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。
在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。

🎲Part·1 游戏规则简介

1.1 初始盘面

img

1.2 轮流掷骰

img

1.3 消除规则

img

1.4 结算规则

img

🎲Part·2 结对任务流程

2.1 原型设计环节

原型模型必须采用专用的原型设计工具实现:如Adobe XD、Mockplus、Axure RP、Figma、Balsamiq Mockup、UXPin、Prototype Composer、GUI Design Studio等。不同的原型设计软件的入手难度可实现的界面交互复杂度不同,大家根据自己的实际情况,选择适合自己的软件进行设计。

应用功能可包含但不限于

  • 游戏欢迎页面

  • 游戏规则介绍

  • 游戏模式选择

    • 本地对战(即两名玩家使用同一设备对战,可离线进行)
    • 人机对战(即应用程序能够实现自动掷骰、决策,与真人玩家进行对战)
    • 在线对战(即玩家能够和其他客户端匹配对战)
  • 托管功能(可参考斗地主的托管)

  • 对战积分排行榜

  • 不影响规则前提下的彩蛋设计

2.2 编程实现环节

  • 编程实现你们的原型设计,尽可能达到较高还原度

  • 进行算法设计,尽可能使人机对战中的AI更智能

    通常来说,游戏AI(Game AI)区别于我们讨论计算机视觉、自然语言处理等领域时所说的学术AI

    学术AI的目的是创造一个智能体,该智能体根据环境作出动作,以最大化成功率为目的。例如在图像识别任务中,我们希望AI能够获得尽量高的准确率。

    而游戏AI是开发者希望为玩家创造更加引人入胜的体验而诞生的。我们用的每一个技术、每一个技巧、每一种算法,都是为了这样的一个目标。在这种目的的引导下,我们有时故意不把AI做得那么强大,为玩家提供更好的服务。

    不过,在K班的AI大战中,为了战胜其他小组的AI,可能需要聪明的算法乃至学术AI的方法来实现游戏AI。

  • 在编程实现过程中,需要展示代码组织与内部实现设计(类图),说明算法的关键与关键实现部分流程图,并进行性能分析和改进。具体见下文中的博客撰写内容

  • 在项目开发过程中,学习使用GitHub进行代码托管、历史版本管理。

  • 项目完成后,请制作一段不超过2分钟的产品演示视频,并上传到Bilibili视频平台。

2.3 AI大战环节

  • 若条件允许,作业截止后组织召开班级内的最强AI角逐赛,每个结对队伍与其他结对队伍制作的AI进行两两对战,评选出班级最强AI。具体PK赛制与得分规则后续给出。

  • 若条件允许,且评选出班级最强AI后,每组可派出至多一名成员与最强AI进行人机对战赛,胜出可获得Bonus得分奖励。

img

🎲Part·3 博客撰写内容

在正文第一行给出GitHub项目地址(本行除链接外无任何其他文本内容)

在正文第二行给出Bilibili视频地址(本行除链接外无任何其他文本内容)

如果成功上线了小程序,请在正文第三行给出小程序名称或小程序码供读者体验

一、结对探索(4分)(汉字序号为一级标题,下同)

1.1 队伍基本信息(1分)(阿拉伯数字序号为二级标题,下同)

​ 结对编号:____;队伍名称:____;

学号姓名作业博客链接具体分工

1.2 描述结对的过程(1分)

1.3 非摆拍的两人在讨论设计或结对编程过程的照片(2分)

二、原型设计(16分)

2.1 原型工具的选择(2分)

​ (在此处说明选择了什么原型设计工具?为什么选择这一款原型软件?)

2.2 遇到的困难与解决办法(3分)

​ (原型设计过程中的困难描述、解决尝试、是否解决、有何收获)

2.3 原型作品链接(5分)

​ (静态原型作品得2分,交互性强的原型作品得5分)

2.4 原型界面图片展示(6分)

​ (尽可能图文并茂地在此处介绍你们队伍设计的各功能模块,创新点也在此处展示说明)

三、编程实现(14分)

3.1 网络接口的使用(2分)

3.2 代码组织与内部实现设计(类图)(2分)

3.3 说明算法的关键与关键实现部分流程图(2分)

3.4 贴出重要的/有价值的代码片段并解释(2分)

3.5 性能分析与改进(2分)

​ (描述你改进的思路,展示性能分析图和程序中消耗最大的函数)

3.6 单元测试(2分)

​ (展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路)

3.7 贴出GitHub的代码签入记录,合理记录commit信息(2分)

四、总结反思(11分)

4.1 本次任务的PSP表格(2分)

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划
· Estimate· 估计这个任务需要多少时间
Development开发
· Analysis· 需求分析 (包括学习新技术)
· Design Spec· 生成设计文档
· Design Review· 设计复审
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)
· Design· 具体设计
· Coding· 具体编码
· Code Review· 代码复审
· Test· 测试(自我测试,修改代码,提交修改)
Reporting报告
· Test Report· 测试报告
· Size Measurement· 计算工作量
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划
· 合计

4.2 学习进度条(每周追加)(2分)
(本部分需要包含队伍内所有成员的学习进度条,每缺少一人队伍总分减少2分)

N周新增代码(行)累计代码(行)本周学习耗时(小时)累计学习耗时(小时)重要成长
150050055熟悉x语言1、2、3特性
2100015001217通过练习xxx,掌握了xxx用法

4.3 最初想象中的产品形态、原型设计作品、软件开发成果三者的差距如何?(2分)

(也就是谈一谈本次任务中“理想与现实的差距”,是哪些因素造成了这些差距?)

4.4 评价你的队友(2分)

(分别评价队友值得学习的地方需要改进的地方
(本部分需要包含队伍内两位成员的相互评价,每缺少一人队伍总分减少2分)

4.5 结对编程作业心得体会(3分)

(可包含但不限于评价作业难度、完成后的感受、遇到的代码模块异常或结对困难及解决方法、对之后学习或软件开发的启发)
(本部分需要包含队伍内所有成员的心得体会,每缺少一人队伍总分减少3分)

🎲Part·4 作业评分细则

4.1 博客部分(45%)

本文第三部分博客撰写内容提供了博文模板,需要严格按照博客撰写内容中的一级标题和二级标题进行撰写博客。博客共分为【一、结对探索】(满分4分)、【二、原型设计】(满分18分)、【三、编程实现】(满分12分)、【四、总结反思】(满分11分)四个部分。

4.2 作品部分(55%)

4.2.1 原型设计的实现(20分)

  • 产品演示视频。(满分5分)
  • 作品尽可能多地实现本文2.1原型设计环节中的功能,界面美观且拥有良好的交互体验。(满分15分)

4.2.2 游戏AI部分(30分)

  • 通过人机对战的方式检验AI的可行性以及智能程度(满分5分)
    • 反应速度快,应答流畅(1分)
    • 决策能力(4分)
      • 低硬件资源消耗(1分)
      • 贴近人的理想博弈行为(3分)
  • 作业截止后组织召开班级内的最强AI角逐赛,每个结对队伍与其他结对队伍制作的AI进行两两对战,评选出班级最强AI。具体PK赛制后续给出。获得班级最强AI的队伍得25分,其他参赛组的得分相应递减。

4.2.3 GitHub使用相关(5分)

  • README(徽章、运行环境、编译方法、使用方法)
  • .gitignore
  • Commit信息(需要有意义的提交信息占比90%)
  • 使用分支管理提交代码,使用pull request
  • 开源协议
  • 持续集成
  • Issues模板

4.3 附加部分(+20%)

  • 作品有创新,融入了班级特色创意元素,如有,在博客中2.4 原型界面图片展示部分展示说明。(每处满分+4分,满分+8分)

  • 评选出班级最强AI后,每组可派出至多一名成员与最强AI进行人机对战赛,胜出可获得Bonus得分奖励。(+4分)

  • 鼓励进行微信小程序应用开发,成功上线的结对队伍,在正文第三行给出小程序名称或小程序码,将给予Bonus附加奖励。(+8分)(若选择小程序开发,不使用“逍遥骰”三个字作为小程序名称。)

🎲Part·5 提交注意事项

  1. 撰写博文时,请在编辑区右上角选择【切换为MarkDown】,使用MarkDown语言撰写博客文档,并严格按照博客撰写格式中的一级标题和二级标题进行撰写博客。

  2. 博文尽可能图文并茂,更直观地将你们的作品展示给读者。这将对你们获得更高的得分有很大的帮助!另外, 请注意视频部分的时间限制,超出限制时间会酌情扣分。

  3. 将作业标题严格命名2022软工K班结对编程任务,不要修改,错误命名者扣10分。

  4. 尽管结对编程两个人工作可能是互补的,但两个人的博文中都要完整体现项目过程,互补的部分分工撰写,互相共享,填充到自己的博客中。换言之,两个人博客可以一模一样,但都需要自己发布、并在作业提交通道中提交自己发布的博客链接。(后续团队项目的博客同理)

  5. 作业截止后发布博文:作业截止24小时内补交在原分数上扣20分,24-48小时内扣40分,48-72小时内扣60分,以此类推扣到0分为止。

  6. 发布博文但未提交任务/错误提交链接:24小时内补提交扣10分,24-48小时内扣20分,48-72小时内扣30分,以此类推扣到0分为止(请注意:本次作业开始,不会再在QQ课程群中提醒需要提交任务)。

  7. 缺交:以上两项扣分规则仅适用于在作业截止之后、评测开始之前补提交的情况!作业截止后任意时间开始进行评测,评测开始的具体时间不会提前告知,评测开始时仍未发布博客或未提交任务均视为缺交,评为0分。

  8. 抄袭或作弊:自动评测系统或人工检测到的不诚信行为评为0分(包括但不限于作业抄袭对战中骰子数非随机等)。

...全文
2113 1 打赏 收藏 举报
写回复
0人已提交
完成率0%
暂无数据
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

【勘误】Part·1 游戏规则简介1.3 消除规则图示中的说明②,玩家A被消去的点数应为“3”

发帖
2022福州大学软件工程K班

137

社区成员

2022福州大学软件工程K班
软件工程 高校 福建省·福州市
社区管理员
  • kevinkex
  • Forest_Onee
加入社区
帖子事件
编辑了帖子 (查看)
2022-10-19 22:05
编辑了帖子 (查看)
2022-10-15 00:09
编辑了帖子 (查看)
2022-10-14 22:25
编辑了帖子 (查看)
2022-10-14 16:16
编辑了帖子 (查看)
2022-10-14 16:12
编辑了帖子 (查看)
2022-10-14 00:52
展开
社区公告
暂无公告