第二次結對編程做業

結對同窗
本做業博客的連接
GitHub地址

UI百度網盤提取連接 提取碼: ehjrhtml

具體分工前端

林鎔煒python

  • 調用api接口git

  • 將原型轉化成UI界面github

  • 頁面邏輯設計以及登入註冊、打牌、排行榜、歷史記錄等功能實現算法

    使用工具:pyqt5編程

陳錦傑json

  • 打牌算法設計
  • 博客編輯
  • 代碼上傳到GitHub
    使用工具:Pycharm、Git

PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning · 計劃 50 60
Estimate · 估計這個任務須要多少時間 30 40
Development · 開發 1000 1200
Analysis · 需求分析(包括學習新技術) 900 1000
Design Spec · 生成設計文檔 40 30
Design Review · 設計複審 30 60
Coding Standard · 代碼規範(爲開發制定合適的規範) 30 40
Design · 具體設計(用僞代碼,流程圖等方法來設計具體模塊) 200 500
Coding · 具體編碼 1500 1600
Code Review · 代碼複審 30 40
Test · 測試(自我測試,修改,提交修改) 80 100
Reporting · 報告 100 100
Test Report · 測試報告 30 30
Size Measurement · 計算工做量 10 15
Postmortem & Process Improvement Plan · 過後總結並提出過程改進計劃 60 60
合計 4020 4875

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

  • 網絡接口的使用
    主要用到Post和Get兩種方法,做業上有相關接口,只需引用便可。後端

  • 代碼組織與內部實現設計(類圖)
  • 說明算法的關鍵與關鍵實現部分流程圖
  • ui活動圖
    api

關鍵代碼解釋

def getcard(list1,list2):#出牌
    x1=tuple(list1)
    d=0
    v1=value0(list2)
    v2=value1(list2)
    v3=value2(list2)
    #print(v1,v2,v3)
    ca1=[]
    ca2=[]
    ca3=[]
    for i in itertools.combinations(x1, 5):#選後墩
        c1=list(i)
        vc1=grade(c1)
        x2=tuple(set(list1)-set(c1))
        if(vc1[0]>1):
            for j in itertools.combinations(x2,5):#選中墩前墩
                c2=list(j)
                vc2=grade(c2)
                c3=list(set(x2)-set(j))
                vc3=grade(c3)
                if((vc1[0]>vc2[0])and (vc2[0]>vc3[0]))or((vc1[0]==vc2[0])and( vc2[0]>vc3[0])and (vc1[1]>vc2[1]))or((vc1[0]>vc2[0])and (vc2[0]==vc3[0])and( vc2[1]>vc3[1]))or((vc1[0]==vc2[0])and (vc2[0]==vc3[0])and( vc1[1]>vc2[1])and (vc2[1]>vc3[1])):
                    m=value(v3,vc3,0)+value(v2,vc2,2)+value(v1,vc1,3)
                    a1=value(v3, vc3, 0)
                    a2=value(v2, vc2, 2)
                    a3=value(v1, vc1, 3)
                    if((a1>910)and (a2>880 )and(a3>980)):#打槍
                        m*=2
                    if ((a1>910)or (a2>880 )or(a3>980))and((value(v3,vc3,0)-910)*(value(v2,vc2,2)-880)*(value(v1,vc1,3)-980)<0):#放一水贏兩水
                        m=m+650
                    elif((a1>910)or (a2>880 )or(a3>980))and((a1-820)*(a2-720)*(a3-940)<0):#不能贏時儘可能不被打槍
                        m+=200
                        #print(m)
                    if m>d:
                        d=m
                        ca1=c1
                        ca2=c2
                        ca3=c3
    ca3=f(ca3)
    ca2=f(ca2)
    ca1=f(ca1)
    return [ca3,ca2,ca1]

這段代碼爲關鍵代碼,這段代碼主要的是經過權值進行權衡。主要有三種狀況,當三墩牌組出比較通常的狀況下,經過權衡能夠放棄其中的一墩牌使其餘兩墩牌能更大;當三墩牌能達到必定的權值下能夠考慮平均三墩使三墩牌較大更有機率打槍;當三墩牌不太理想的狀況下能夠將其中一墩造大使本身不被打槍。經過這些權衡處理後得出權值最高的牌。

性能分析與改進


消耗最大的函數是request函數,主要時間花費在服務器響應上。
改進:本來使用組合數時沒有篩除後墩無需繼續判斷的牌型,致使在組合數上浪費較多的時間,改進後出牌速度大幅提高。

單元測試

展現出項目部分單元測試代碼,並說明測試的函數,構造測試數據的思路

def gameopen(token):
    url = "http://api.revth.com/game/open"
    headers = {'x-auth-token': token}
    response = requests.request("POST", url, headers=headers)
    #print(response.text)
    dict_data = str(json.loads(response.text))
    #print(dict_data)
    p=re.compile("'id': (.+?),")
    id=p.findall(dict_data)
    #print(id)
    p=re.compile("card': '(.+?)'")
    card=p.findall(dict_data)[0]
    #print(card)
    id.append(card)
    return id

這個代碼的單元測試主要來判斷正則是否正確
def getjson(id,list):#轉化json格式 z=['','',''] for i in range(0,len(list)): for j in range(0,len(list[i])): z[i]=z[i]+list[i][j] if(j!=len(list[i])-1): z[i]=z[i]+' ' data = {'id': id, 'card':z} #string = json.dumps(data, ensure_ascii=False) return data
這個的單元測試來判斷json格式是否正確
還有就是核心代碼的m來查看權值

貼出Github的代碼簽入記錄

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

問題描述

在此次結對編程中最大的問題就是與API對接從API中獲取數據以及上傳數據到API。

作過哪些嘗試

剛開始不知道怎麼調用API測試代碼就成了一個問題,最後咱們經過python的random模塊隨機生成卡牌。但這治標不治本咱們就去百度和詢問柯老師班的同窗來解決這個問題。

是否解決

已解決

有何收穫

有時候不懂去請教別人比本身盲目探求的效率來得高,無論是問來仍是查來的只要咱們能很好的掌握這都是咱們的知識。

評價你的隊友

值得學習的地方與須要改進的地方

陳錦傑:
隊友一個字形容「強」,開始編程的時候先後端任我挑本身雖然不太懂的前端也在他的自學下作得很是好,他最值得我學習的地方就是「不會找度娘」,若是針對此次結對編程來講隊友作的很好帶改進的就是要作的更好。
林鎔煒:
隊友很強,做業出來以後,他作ai,我作ui,原本還打算跟他一塊兒探討一下ai,沒想到他第三天就完事了,效率高得可怕。最值得我學習的地方就是工做態度,我太拖了。對隊友的改進的建議是下次別再一我的默默肝完了,哈哈。

代碼進程

第N周 新增代碼(行) 累計代碼(行) 本週學習耗時(小時) 累計學習耗時(小時) 重要成長
1到4 565 565 48 48 算法設計及優化
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息