全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1754
推到 Plurk!
推到 Facebook!

關於陣列內容更改的問題

答題得分者是:daldal
idofly
一般會員


發表:2
回覆:2
積分:0
註冊:2007-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-30 00:51:08 IP:61.231.xxx.xxx 訂閱

我的程式需求是當棋子移動時,同時更改陣列的值
但做出來的結果,只有往上、左時陣列的值會正確的將上一個陣列裡的值變0
往下、右時上一個陣列裡的值不會更新為0,但新的陣列位置的值會更新,
繼續的向下或右移動時,最初的值會變為0(如第二個圖),
如果此時向左移,又會正常的動作了


移動的是"5"這個值






<textarea cols="60" rows="10" class="cpp" name="code"> for (int k=0;k<=9;k )
{
for (int j=0;j<=8;j )
{
if((chessimg[b]->Top>=position_y[k]-35)&&(chessimg[b]->Top<=position_y[k] 35)&&
(chessimg[b]->Left>=position_x[j]-35)&&(chessimg[b]->Left<=position_x[j] 35))
{
chessimg[b]->Top=position_y[k];
chessimg[b]->Left=position_x[j];


if((k!=lastarrayy)||(j!=lastarrayx))
{
chessboard[k][j]=chess ;
chessboard[lastarrayy][lastarrayx]=0;
}
}

Canvas->TextOutA( x, y,IntToStr(chessboard[k][j]) ",");
x =20;

}

x=660;
y =15;
} </textarea>
daldal
高階會員


發表:6
回覆:102
積分:226
註冊:2007-06-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-01 16:17:45 IP:61.219.xxx.xxx 訂閱
因為您掃描的方向為 (由左到右) (由上到下)
所以 (往右) (往下) 的時候,陣列並不會回頭更新

1.請把判斷條件變更一下
2.新增判斷句去囊括掃描過的地方
idofly
一般會員


發表:2
回覆:2
積分:0
註冊:2007-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-05 02:03:15 IP:61.231.xxx.xxx 訂閱
有點不懂耶
不是在15行時就更新了嗎/
daldal
高階會員


發表:6
回覆:102
積分:226
註冊:2007-06-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-08 14:03:20 IP:61.219.xxx.xxx 訂閱

===================引 用 idofly 文 章===================
有點不懂耶
不是在15行時就更新了嗎/



  1. 因為掃描整個陣列的時候,當往下往右移動時
  2. 舊有的陣列值已經被畫出來了
  3. Canvas->TextOutA( x, y,IntToStr(chessboard[k][j]) ",");
  4. x =20;
  5. 但是掃到後面"移動過的棋子"的時候,你雖然變動了陣列值,但是並沒有做重繪
  6. 所以才會造成你右側的陣列值不符的現象 (PS : 但是記憶體內的陣列值是正確的)
  7. 而且只發生在"往右"以及"往下"的時候發生
  8. 若是要讓陣列顯示正常,請把
  9. Canvas->TextOutA( x (lastarrayx-j)*20, y (lastarrayy-k)*15,IntToStr(chessboard[lastarrayy][lastarrayx]) ",");
  10. 加到16跟17行中間即可
idofly
一般會員


發表:2
回覆:2
積分:0
註冊:2007-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-11 23:06:09 IP:140.131.xxx.xxx 訂閱
原來是印出來的結果沒有更新
我一直認為是記憶體裡的直沒更新

謝謝daldal的說明
系統時間:2024-04-16 16:24:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!