圖片隨機移動二問? |
尚未結案
|
enu
中階會員 發表:36 回覆:93 積分:55 註冊:2003-10-22 發送簡訊給我 |
各位先進好,不好意思,請教一個問題。根據之前的提問來做一個圖片隨機移動,http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54421,RichTop大大指導如下。
但如果想要在當其中發生在東北、東南、西北、西南時,使用其它的距離替代,如distance2[] = {2,6,12,18};不知道原來的程式應該如何修改呢?想了好久,不知如何下手,懇請賜教了!感謝!
//--------------------------------------------------------------------------- struct Direction { int dir; int toGo; }; Direction dirs[32]; int distance[] = {1,5,10,15}; void init() { int index=0; for (int d=0; d<8; d ) { for (int k=0; k<4; k ) { dirs[index].dir = d; dirs[index].toGo = distance[k]; index ; } } } // 方向定義(順時針方向): 0:東,1:東北,2:北,...,依此類推。 int shiftX[]={ 1, 1, 0,-1,-1,-1, 0, 1}; int shiftY[]={ 0,-1,-1,-1, 0, 1, 1, 1}; void getDxDy(int& dx, int& dy, Direction d, float scale=1) // 取x,y方向的相對位移分量 { dx = d.toGo * shiftX[ d.dir ] * scale; dy = d.toGo * shiftY[ d.dir ] * scale; } void exchange(int times) // 隨機交換times次 { int index; Direction temp; for (int k=0; k |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
程式碼中寫得很清楚了 // 方向定義(順時針方向): 0:東,1:東北,2:北,...,依此類推。
int shiftX[]={ 1, 1, 0,-1,-1,-1, 0, 1};
int shiftY[]={ 0,-1,-1,-1, 0, 1, 1, 1}; 東北、東南、西北、西南要改成距離2,6,12,18就改成
int shiftX[]={ 1, sqrt(2), 0,-sqrt(12),-1,-sqrt(18), 0, sqrt(6)};
int shiftY[]={ 0,-sqrt(2),-1,-sqrt(12), 0, sqrt(18), 1, sqrt(6)}; 請先自己取開根號後的值
|
enu
中階會員 發表:36 回覆:93 積分:55 註冊:2003-10-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |