2022软工K班结对编程任务

2022软工K班结对编程任务

林佳昕 102192105
李慧祯 102192122
2022-10-02 18:48:08
github链接
https://github.com/Hi-Jane9/Mywork/tree/main/Pair%20programming
bilibili链接
https://www.bilibili.com/video/BV1eT411P7ZK/?vd_source=520f98048ceb29266ac9ccd91a4257e6

一、结对探索(4分)

1.1 队伍基本信息(1分)

结对编号:10 ;队伍名称:开摆队;

姓名学号博客链接具体分工
李慧祯102192122https://blog.csdn.net/m0_62487883/原型设计、前端界面实现、JS的交互
林佳昕102192105https://bbs.csdn.net/topics/608592513前端界面实现、JS的交互、博客编写

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

​ 我们互相问组队,然后就组队了,然后我想了个队名。

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

在这里插入图片描述

二、原型设计(16分)

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

Axure
PS
WPS图片

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

​ 我们首先遇到就是最大的问题就是原型设计,不知道用哪种工具比较好,后来通过询问相关同学采用了axure来进行原型设计,并用前端交互实现骰子功能。

2.3 原型作品链接(5分)

​ 作品链接:https://3528vc.axshare.com

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

在这里插入图片描述

三、编程实现(14分)

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

​ 无

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

文件

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

​ AI算法没做不会做,使用代码逻辑实现AI策略

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

  //重置
                    reset() {
                        return this.values.fill(0),
                            this
                    }
                    //更新
                    update(t) {
                        const {
                            rowsPerGrid: e,
                            cellsPreRow: i
                        } = this.opt;
                        for (let l = 0; l < e; l++)
                            for (let e = 0; e < i; e++) this._set(l, this._colToBitIdx(e), t[l][e]);
                        return this
                    }
                    row(t, e = !1) {
                            return this.checkGridIndex(t),
                                this._row(this.values[t], e)
                        } *
                        rows() {
                            for (const t of this.values) yield [...this._row(t)]
                        } *
                        cells() {
                            for (const t of this.values) yield* this._row(t)
                        }
                        [
                            Symbol.iterator
                        ]() {
                            return this.cells()
                        }
                    toString() {
                        return `${ this.name }:  
                        [${ [...this.rows()].join(']\n[') }]
      `
                    }
                }
                const ti = $e,
                    ei = (0, s.aZ)({
                        name: 'MenuComponent',
                        components: {},
                        setup() {
                            const t = (0, o.iH)('玩家A'),
                                e = (0, o.iH)('玩家B'),
                                i = (0, o.iH)(!1),
                                l = (0, o.iH)();
                            return {
                                blackName: t,
                                whiteName: e,
                                setting: i,
                                mode: l
                            }
                        },
                        methods: {
                            showSetting(t) {
                                this.mode = t,
                                    this.setting = !0
                            },
                            cancelSetting() {
                                this.setting = !1,
                                    this.mode = void 0,
                                    this.blackName = '玩家A',
                                    this.whiteName = '玩家B'
                            },
              利用for循环实现数据更新

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

pvp测试一分钟左右性能

3.6 单元测试(2分)

//判断是否完成游戏后,返回主菜单还是再来一局
                                t.isOver ? ((0, s.wg)(), (0, s.iD)('div', V, [
                                    z,
                                    (0, s._)('div', Y, (0, R.zw)(null === (o = t.black) || void 0 === o ? void 0 : o.name) + ': ' + (0, R.zw)(null === (g = t.black) || void 0 === g ? void 0 : g.score) + '分 ', 1),
                                    (0, s._)('div', T, [
                                        (0, s._)('div', S, [
                                            (0, s.Wm)(c, {
                                                color: 'primary',
                                                onClick: t.startAgain,
                                                class: 'q-ma-md'
                                            }, {
                                                default:
                                                    (0, s.w5)((() => [(0, s.Uk)('再来一局')])),
                                                _: 1
                                            }, 8, [
                                                'onClick'
                                            ]),
                                            (0, s.Wm)(c, {
                                                color: 'primary',
                                                onClick: t.toMainPage,
                                                class: 'q-ma-md'
                                            }, {
                                                default:
                                                    (0, s.w5)((() => [(0, s.Uk)('返回主菜单')])),
                                                _: 1
                                            }, 8, [
                                                'onClick'
                                            ])
                                        ])
                                    ]),
                                    (0, s._)('div', Q, (0, R.zw)(null === (w = t.white) || void 0 === w ? void 0 : w.name) + ': ' + (0, R.zw)(null === (y = t.white) || void 0 === y ? void 0 : y.score) + '分 ', 1)
                                ])) : (0, s.kq)('', !0),
                                (0, s.Wm)(p, {
                                    modelValue: t.chosingChanlleng,
                                    'onUpdate:modelValue': e[2] || (e[2] = e => t.chosingChanlleng = e),
                                    persistent: ''
                                }, {
                                    default:
                                        (0, s.w5)((() => [(0, s.Wm)(m, {
                                            class: 'q-pa-lg'
                                        }, {
                                            default:
                                                (0, s.w5)((() => [(0, s.Wm)(v, {
                                                    class: 'q-pa-xs'
                                                }, {
                                                    default:
                                                        (0, s.w5)((() => {
                                                            var i,
                                                                l,
                                                                n,
                                                                o,
                                                                r;
                                                            return [(0, s._)('div', H, [
                                                               (0, s._)('strong', null, '请 ' + (0, R.zw)(null === (i = t.decideUser) || void 0 === i ? void 0 : i.name) + ' 选择先投掷骰子的玩家', 
        1)
                                                            ]),
                                                            (0, s._)('div', F, [
                                                                (0, s.Wm)(u, {
                                                                    class: 'q-mx-md',
                                                                    modelValue: t.firstUserName,
                                                                    'onUpdate:modelValue': e[0] || (e[0] = e => t.firstUserName = e),
                                                                    val: null === (l = t.black) || void 0 === l ? void 0 : l.name,
                                                                    label: null === (n = t.black) || void 0 === n ? void 0 : n.name
                                                                }, null, 8, [
                                                                    'modelValue',
                                                                    'val',
                                                                    'label'
                                                                ]),
                                                                (0, s.Wm)(u, {
                                                                    class: 'q-mx-md',
                                                                    modelValue: t.firstUserName,
                                                                    'onUpdate:modelValue': e[1] || (e[1] = e => t.firstUserName = e),
                                                                    val: null === (o = t.white) || void 0 === o ? void 0 : o.name,
                                                                    label: null === (r = t.white) || void 0 === r ? void 0 : r.name
                                                                }, null, 8, [
                                                                    'modelValue',
                                                                    'val',
                                                                    'label'
                                                                ])
                                                            ])
                                                            ]
                                                        })),
                                                    _: 1
                                                }),
                                                (0, s.Wm)(h, {
                                                    class: 'row justify-center'
                                                }, {
                                                    default:
                                                        (0, s.w5)((() => {
                                                            var e;
                                                            return [(0, s.Wm)(c, {
                                                                label: '确定',
                                                                onClick: t.startPlay,
                                                                color: 'primary',
                                                                disable: null === (e = t.decideUser) || void 0 === e ? void 0 : e.isBot
                                                            }, null, 8, [
                                                                'onClick',
                                                                'disable'
                                                            ])]
                                                        })),
                                                    _: 1
                                                })
                                                ])),
                                            _: 1
                                        })])),
                                    _: 1
                                }, 8, [
                                    'modelValue'
                                ])
                                ]
                            })),
                        _: 1
                    })
            }
            var J = i(346),
                X = i.n(J),
                K = i(4661),
                $ = i.n(K),
                tt = i(618),
                et = i.n(tt);    

在游戏结束阶段出现两个选项并且都能点
在这里插入图片描述

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

在这里插入图片描述

四、总结反思(11分)

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

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

4.2 学习进度条(每周追加)(2分)

林佳昕

第N周新增代码(行)累计代码(行)本周学习耗时(小时)累计学习耗时(小时)重要成长
15001000120120学习了之前没接触过的HTML、CSS、JS以及原型设计的axure

李慧祯

第N周新增代码(行)累计代码(行)本周学习耗时(小时)累计学习耗时(小时)重要成长
115002000300300学习了之前没接触过的HTML、CSS、JS以及原型设计的axure

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

我觉得三者之间没什么差距,根据最初的想法进行了原型设计,然后根据原型设计进行软件开发,最大的差距应该是软件开发的时候完善了一点功能吧。反正基本要求有了就行。别的组还有花里胡哨的音乐我们也没搞了。

图片(1)

4.4 评价你的队友(2分)

李慧祯
队友很优秀,就是有些时候想讨论具体功能实现的时候联系不上队友,给我急的。可能我要求太高,有些时候生气,不过最后合作还是挺 愉快的吧。

林佳昕

队友很给力,在前端编写,js交互方面花了不少时间,最后的效果也不错。

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

李慧祯
最开始拿到题目无从下手,原型设计也没接触过,都想直接放弃了。后来随便下了个Axure试了试,发现还挺简单的,和visio差不多,接触下来觉得挺好玩的,居然用原型设计救恩那个实现简单的交互和摇骰子。最后写代码也基本上是根据原型设计来的。代码部分一开始想用java或者python实现的,然后两个都试了一天,发现还是得去学前端。JS、Html、csss上手起来也比较快,写起来遇到了很多问题,最后把他当成骰子消消乐就顺利多了。这次结对编程工作分配的不是很好,没有理解到结对编程的意义,以后需要好好交流沟通。

林佳昕
一开始看到“逍遥骰”这个小游戏,以为和前面一次做的爬虫差不多,可以一次性解决。实际经历过后,发现没有那么容易,每一个环节都需要分段实现,从原型设计用axure确定界面到使用前端交互的方法来逐步实现功能,才保证基本的功能。即使这样还是有很多未实现的功能,比如没有做局域对战。在之后的大作业实验中应该努力改进自己。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值