close
標題:

VS2010 C# 寫pictureBox移動 [非常急]

 

此文章來自奇摩知識+如有不便請留言告知

發問:

我要用VS2010 C#寫pictureBox移動pictureBox 總共要移動12個固定位置 分別放在arrx[ ] 跟 arry[ ] 裡面例如: arrx[ ] = { 533,570,612,643,683,720,765,788,759,731,717,703 };arry[ ] = { 574,546,516,482,453,434,413,379,344,298,260,221 };移動的順序是從第一個位置到第12個位置我創建一個button 然後當點下button會隨機產生1~6的亂數假如 第一次點button 產生亂數是3則 pictureBox 會從原本所在位置 移動到 位置3... 顯示更多 我要用VS2010 C#寫pictureBox移動 pictureBox 總共要移動12個固定位置 分別放在arrx[ ] 跟 arry[ ] 裡面 例如: arrx[ ] = { 533,570,612,643,683,720,765,788,759,731,717,703 }; arry[ ] = { 574,546,516,482,453,434,413,379,344,298,260,221 }; 移動的順序是從第一個位置到第12個位置 我創建一個button 然後當點下button 會隨機產生1~6的亂數 假如 第一次點button 產生亂數是3 則 pictureBox 會從原本所在位置 移動到 位置3 arrx[2],arry[2] 例如 pictureBox1.Location = new Point(arrx[2], arry[2]) 可是 我在移動的時候 從原點位置到位置3 中間的 位置1跟位置2也要走到 也就是說 pictureBox移動會從原本位置開始 然後經過位置1、位置2再到位置3 並且在每個位置要停1/4秒才能到下個位置 而當我按下第2次button的時候 隨機產生的亂數是5 則pictureBox 會從現在的位置3 移動到位置8 arrx[7],arry[7] 也就是說 從位置3開始 然後經過位置4、位置5、位置6、位置7再到位置8 pictureBox 每個位置都要走到 然後要在每個位置停留至少1/4秒 才能繼續走到下一個位置 其實我是總共有40個位置 第40個位置是原點 在我每次按button 都會產生數字 而pictureBox 會依照每次所產生的數字 來移動位置 第一次數字是5 則會從原點位置移動到位置5(當然中間的位置1~4也要走到) 第二次數字是6 則會從位置5移動到位置11(中間位置也都要走到) 依此類推 當移動到第39個位置時 這時按下button產生的數字是6 則pictureBox 會移動到位置40 然後 跳到位置1 之後再繼續移動到位置5 (我的位置其實是一張連貫的格子地圖) 例如 .....位置39 -> 位置40 -> 位置1->位置2 ..... 我非常急!!! 有沒有高手能快點幫我 需要程式碼!!! 更新: 吼兒 你這樣打還是沒有辦法每個位置都有走到 他會直接跳到最後一個位置 我在執行的時候每次移動到下一個位置都要停留1/4秒 能不能請你在幫我想想... 更新 2: 吼兒 不好意思 可以請你幫我解事一下 timer那邊是在寫什麼嗎 Point loc = new Point(arrx[i], arry[i]); Debug.Print(loc.ToString()); if (i == n) timer1.Enabled = false; i++; i %= arrx.Length; 因為我是用pictureBox去移動 所以有點不清楚要怎麼去改 還有 debug那行 我貼近去執行他說有錯 是要用到另外的命名空間嗎? using System.?? 還是?? 很感謝你對我的幫助 新手上路有很多問題 更新 3: 吼兒 太感謝你了!!! 幫了我很大的忙 更新 4: 你要不要回答一下 我把點數給你 意見那邊不能選為解答@@ 不然我就要刪掉了 明天下午看你回答~ 再次感謝你的幫助 非常有用!!!!

最佳解答:

全域 int32 i = 0, int32 n = 0; button random rnd = new random; n += rnd.next(1, 10); n %= 40; timer picturebox1.localtion = new point(arrx[i], arry[i]); if (i == n) timer1.enabled = false; i++ i %= 40; 2012-05-18 14:48:14 補充: 可以啊 我試沒問題 Int32[] arrx = { 533, 570, 612, 643, 683, 720, 765, 788, 759, 731, 717, 703 }; Int32[] arry = { 574, 546, 516, 482, 453, 434, 413, 379, 344, 298, 260, 221 }; Int32 i = 0, n = 0; 2012-05-18 14:48:25 補充: private void button1_Click(object sender, EventArgs e) { Random rnd = new Random(); n += rnd.Next(1, 10); n %= arrx.Length; timer1.Enabled = true; } 2012-05-18 14:48:31 補充: private void timer1_Tick(object sender, EventArgs e) { Point loc = new Point(arrx[i], arry[i]); Debug.Print(loc.ToString()); if (i == n) timer1.Enabled = false; i++; i %= arrx.Length; } 2012-05-19 18:43:21 補充: debug.print是我在即時運算視窗要看資料的內容而已 實際上你要用的Point loc 這個 picturebox1.loacltion = loc; 2012-05-19 18:44:15 補充: Debug 在 System.Diagnostics 2012-05-20 02:28:19 補充: 就程式碼貼過來好了 Int32[] arrx = { 533, 570, 612, 643, 683, 720, 765,788, 759, 731, 717, 703 }; Int32[] arry = { 574, 546, 516, 482, 453, 434, 413,379, 344, 298, 260, 221 }; Int32 i = 0, n = 0; private void button1_Click(objectsender, EventArgs e) { Random rnd = new Random(); n+= rnd.Next(1, 10); n%= arrx.Length; timer1.Enabled= true; } private void timer1_Tick(objectsender, EventArgs e) { Point loc = new Point(arrx[i], arry[i]); Debug.Print(loc.ToString()); if (i == n) timer1.Enabled = false; i++; i%= arrx.Length; }

其他解答:8758B59A7FA1EEA7
arrow
arrow

    bxzbthf 發表在 痞客邦 留言(0) 人氣()