第二次結對編程做業

1、連接

結對同窗博客連接(林易豐)html

本次做業博客連接前端

GitHub項目地址python

2、具體分工

前端: 劉偉楠git

後端: 林易豐github

博客: 兩人共同完成算法

3、PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 20 15
· Estimate · 估計這個任務須要多少時間 20 15
Development 開發 780 720
· Analysis · 需求分析 (包括學習新技術) 160 160
· Design Spec · 生成設計文檔 120 130
· Design Review · 設計複審 40 40
· Coding Standard · 代碼規範 (爲目前的開發制定合適的規範) 60 60
· Design · 具體設計 60 120
· Coding · 具體編碼 80 80
· Code Review · 代碼複審 20 20
· Test · 測試(自我測試,修改代碼,提交修改) 30 45
Reporting 報告 40 40
· Test Report · 測試報告 10 10
· Size Measurement · 計算工做量 10 10
· Postmortem & Process Improvement Plan · 過後總結, 並提出過程改進計劃 40 45
· 合計 1590 1510

4、解題思路描述與設計實現說明

1. 網絡接口的使用

以註冊綁定爲例:json

def registerbang(self):
    def register_(user, psw, student_number, student_password):
        url = 'http://www.revth.com:12300/auth/register2'
        headers = {
            'Content-Type': 'application/json'
        }
        data = {
            'username': user,
            'password': psw,
            "student_number": student_number,
            "student_password": student_password
        }
        r = requests.post(url, headers=headers, data=json.dumps(data))
        return r

    r = register_(self.user, self.psw, self.student_number, self.student_password)
    status = r.json()['status']
    if status == 0 and 'user_id' in r.json()['data']:
        self.user_id = r.json()['data']['user_id']
        self.is_register = True
        print('register may be successful')
        print(r.text)
    else:
        print('register failed!')
        error_report(status)
        print(r.text)

2. 代碼組織與內部實現設計

AI部分代碼組織設計

api部分代碼組織設計
後端

3. 說明算法的關鍵與關鍵實現部分流程圖

算法的關鍵就是AI。由於太菜,以前想過列出七萬多種狀況分別計算權值,可是難度比較大,因此AI部分採起了依次找同花順,葫蘆,炸彈,同花,順子,三條,若找到則給後墩,若多於一個則再給中墩,餘下三張牌做爲前墩。若找不到則按從大到小排序,將牌按大小依次給後墩,中墩,前墩。

上圖爲部分流程圖,主要思路就是分別尋找同花順,葫蘆,炸彈,同花,順子,三條,優先給後墩,其次給中墩,剩下三張做爲前墩。api

5、關鍵代碼解釋

林易豐 21:46:58網絡

有價值/重要的代碼

都有價值都重要……
舉個炸彈的例子:
bmax和mid分別存放大小炸彈的數字(若是有)

if len(s) == 26:
            if len(bomb_num) == 3:  # 3個炸彈
                bmax = bomb_num[0]
                if bomb_num[1] > bmax:
                    bmax = bomb_num[1]
                if bomb_num[2] > bmax:
                    bmax = bomb_num[2]  #最大給後墩
                # 中間給中墩
                if bomb_num[0] == bmax:
                    if bomb_num[1] < bomb_num[2]:
                        mid = bomb_num[2]
                    else:
                        mid = bomb_num[1]
                if bomb_num[1] == bmax:
                    if bomb_num[0] < bomb_num[2]:
                        mid = bomb_num[2]
                    else:
                        mid = bomb_num[0]
                if bomb_num[2] == bmax:
                    if bomb_num[1] < bomb_num[0]:
                        mid = bomb_num[0]
                    else:
                        mid = bomb_num[1]
                return 2
            elif len(bomb_num) == 2:  # 2個炸彈
                bmax = bomb_num[0]
                if bmax < bomb_num[1]:
                    bmax = bomb_num[1]
                    mid = bomb_num[0]
                else:
                    mid = bomb_num[1]
                return 2
            elif len(bomb_num) == 1:  # 1個炸彈
                bmax =  bomb_num[0]
                return 1
            else:
                return 0  # 沒炸彈
        else:  # 找給中墩
            if len(bomb_num) == 2:  # 2個炸彈
                mid = bomb_num[0]
                if mid < bomb_num[1]:
                    mid = bomb_num[1]
                return 2
            elif len(bomb_num) == 1:  # 1個炸彈
                mid =  bomb_num[0]
            else:
                return 0  # 沒炸彈

6、性能改進與分析

1. 改進思路

優化規範一下各個找牌函數,以前由於缺乏事先的構思,致使主函數裏還須要許多邏輯判斷和分支。

2. 展現性能分析圖和程序中消耗最大的函數


7、單元測試

找同花順函數:

構造思路就是把找特殊牌的函數拿出來單獨對牌測試一下

8、貼出GitHub的代碼簽入記錄

9.1 遇到的代碼模塊異常或者結對困難及解決辦法

一、問題描述:後端接入的代碼沒法展示在UI上
二、嘗試:理解後端傳入的API參數,從新寫過展現界面的函數。
三、是否解決: 是
四、有何收穫:更加熟悉python這門演唱會

10 評價個人隊員

10.1 值得學習的地方

隊友寫代碼的能力比較強,邏輯比較清晰

10.2 須要改進的地方

溝通能力能夠稍稍增強

11 學習進度條

第N周 新增代碼(行) 累計代碼(行) 本週學習耗時(小時) 重要成長
1 223 223 10 熟悉python
2 219 442 11 瞭解pygame
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息