1
我用VC++做了一個簡單的彈跳程序。
這個程序的目標是球必須在菱形中反彈。它不能走出菱形。
它似乎運行成功,但在左右角落,它卡住了。
如何解決此問題?我認爲當球向左右角落時,相等的條件是重複的...
你能否提出其他算法來解決這個問題?
我試圖讓這個問題像
while(!isInside(getNextPos(circle))) { updateDirectionVector(circle); }
但我不能這樣做,因爲隨機值每次都改變。 (使用定時器重複)
這是這個程序的算法,除了在角落之外,它是有效的。
C++ Ball在菱形中彈跳
up:
while(1) goDownSideCircle;
if(StuckOnDownSide) goto down;
down:
while(1) goUpSideCircle;
if(StuckOnUpSide) goto up;
您的代碼是否真的像這樣縮進?如果是的話,那麼我恐怕你運氣不好......或者是因爲粘貼在這裏? – Aamir
你確定你沒有試圖在這裏實現一個新的linux內核:-)順便說一句,goto關鍵字被折舊。儘可能避免它。 – sarepta
爲了讓那些試圖閱讀和理解你的代碼的人更容易,你應該格式化它,以便它不需要水平滾動。此外,用適當的描述性名稱常量替換所有數字常量,並將計算結果合併到適當命名的變量中。 – irobot