如果不測試,作為程式設計師的你絕對不知道自己有多麼粗心

2021-06-29 06:55:09 字數 2597 閱讀 9916

歷時將近兩個月, 我們的kinect體感遊戲專案進展順利,相應的測試也在進行當中。

周五早上,我和隊友們在實驗室測試了kinect的功能。整個測試過**是讓人慚愧,我簡直是太粗心了,**中的錯誤層出不窮。

由於進行的是雙人模式,因此寫完程式難以立即測試,只能等隊友們都有時間的時候一起測試。 

我們的專案包括八個不同的動作對應不同的操作。最開始的測試很不順利,腿部的動作非常奇怪,為了更快的發現出錯的位置,我們注釋掉了腿部的動作,只看手部動作。

skeletonpoint playera_head = two[0].joints[jointtype.head].position;

skeletonpoint playerb_head = two[1].joints[jointtype.head].position;

skeletonpoint playera_leftshoulder = two[0].joints[jointtype.shoulderleft].position;

skeletonpoint playerb_leftshoulder = two[1].joints[jointtype.shoulderleft].position;

skeletonpoint playera_rightshoulder = two[0].joints[jointtype.shoulderright].position;

skeletonpoint playerb_rightshoulder = two[1].joints[jointtype.shoulderright].position;

skeletonpoint playera_lefthand = two[0].joints[jointtype.handleft].position;

skeletonpoint playerb_lefthand = two[1].joints[jointtype.handleft].position;

skeletonpoint playera_righthand = two[0].joints[jointtype.handright].position;

skeletonpoint playerb_righthand = two[1].joints[jointtype.handright].position;

程式的邏輯是根據手部與肩部的距離判斷手部的動作,因為存在大量的**複製,導致在應該寫left 的地方貼上過來沒有修改,還是right。這是測試過程中發現的第乙個問題。

手部功能正常進行後,我們開啟了腿部**的注釋,開始對腿部的功能進行測試。程式的邏輯是左腿抬起觸發事件一,右腿抬起觸發事件二。可是兩位隊友無論將腿抬起多高都無法觸發事件。檢查**之後我們發現設定的腿部抬起閾值是一公尺,

private const double legxstretchedthreshold = 0.2; //腿部x軸方向伸展的閥值,單位公尺

private const double legystretchedthreshold = 1.0; //腿部y軸方向伸展的閥值,單位公尺

終於找到了出現問題的原因,閾值設定了這麼大,隊友們得跳起來才能達到要求的閾值。我們以為改正了這個問題以後,程式就可以正常執行了,可是再次執行我們發現還是無法觸發事件。仔細閱讀源**後,我們發現,程式的邏輯是判斷頭部與腳部的距離,這也就是一公尺的閾值出現的原因。

bool playera_isleftfootstretched = ((playera_head.y - playera_rightfoot.y) < legystretchedthreshold);

if (playera_isleftfootstretched)

在實際的應用中,這種判斷方法其實是不合理的,因為我們的使用者有身高一公尺五的萌妹子,也有身高一公尺八的女漢子,這種情況下再判斷頭部與腳部的距離就是造成問題。於是,我們將邏輯改為判斷左腳與右腳的距離。**如下:

bool playera_isleftfootstretched = ((playera_leftfoot.y - playera_rightfoot.y) > legystretchedthreshold);

if (playera_isleftfootstretched)

終於能夠順利觸發腿部事件後,我們發現,抬腿時同一事件會被觸發好多次,這感覺有點像按下鍵盤按鍵不放開了,我們想要的是按一下就好。這個問題的解決方法比較大眾化,就是加乙個bool變數記錄是否已經按下,**如下: 

bool playera_isleftfootstretched = ((playera_leftfoot.y - playera_rightfoot.y) > legystretchedthreshold);

if (playera_isleftfootstretched)

}

經過了測試,我們的程式終於能夠正常的執行了。沒有進行過測試的程式難以讓人放心。

作為程式設計師,你的夢想是什麼?

撰文 alice 專欄 九章演算法 1.用我的程式設計技能或者通過程式設計賺一大筆錢來使這個社會變得更美好。贈與窮人冰箱,電視機,金子等並不能減輕他們的貧困,但教會他們如何賺錢,必定是把他們們放在了從生存到生活的快車道上。我的模型是,買很多10到100英畝的土地,只雇用乞丐工作。這些農場上種植出來的...

作為程式設計師,你真的懂你的 IDE 嗎?

作為程式設計師,我是乙個 xc ode xco de的忠實使用者 忠實粉絲,它介面的優美 編碼的舒適 智慧型的提示無不讓我對他膜拜,但是我並不懂我的 xc de有建立檔案工程生成預設 模板的功能,這一點十分優雅,然而很早以前,我就想要自己去定義這個模板,但是一直不知道怎麼弄 機緣巧合看見了幾篇博文,...

作為程式設計師,結婚不該是你考慮的事情!

在我看來,作為程式設計師結婚不該是你考慮的事,為什麼這麼說呢,首先程式設計師之所以能成為程式設計師最大的原因就是能忍,為什麼說能忍呢?如果不能忍 世界上就沒產品經理了,能忍說明性格好,說明是個老實的老好人。其次,程式設計師多有錢啊,但是前提得大方,可以帶物件盡情吃好吃的 玩好玩的,就算在一線城市也可...