有人可以幫我交換。我認爲這是一個邏輯錯誤。我知道源文件和目的地是正確的,所以我的if語句有些問題。遊戲規則:遊戲始於一個金字塔結構,除了一個圓圈'o'外,所有'+'都是完整的,你只能將一個釘子相鄰地移動到一個圓圈上(對角線上有兩個點),任何一個棋子都會跳過也可以用圓圈代替。因此,舉例來說,您可以沿對角線移動兩個點,並且中間跳過的棋子會像原始位置一樣被圈出來,但您要移動的棋子會將其圓圈替換爲「+」。視覺圖像在下面。此外,這些變量對應於字母。例如:pa是A點,pb是B點等等。交換掛鉤跳轉拼圖的邏輯錯誤
第一步是從D到A.第二步是從K到D.我得到的是不正確的輸出。點K,G和B應該是空的,因爲B從第一步跳過並且G在本回閤中被跳過。但是在這裏,儘管它只有一個'+',但我仍然把A看作空置的。現在A已經從遊戲的第一步更新,但現在它又回到了一個圓圈。 A,或者「啪」應該已經從下面的語句更新:
這裏是鏈接到代碼:https://www.dropbox.com/s/puab7va8vosftdd/Source.c?dl=0
void moveHandler(char source, char destination, char *pa, char *pb, char *pc, char *pd, char *pe, char *pf,
char *pg, char *ph, char *pi, char *pj, char *pk, char *pl, char *pm, char *pn, char *po) {
char temp;
char middle;
if ((source || destination == 'D') && (destination || source == 'A')) {
temp = *pa;
*pa = *pd;
*pd = temp;
}
else if ((source || destination == 'K') && (destination || source == 'D')) {
temp = *pk;
*pk = *pd;
*pd = temp;
}
middle = (char) ((source + destination)/2);
switch(middle) {
case 66:
*pb = 'o';
break;
case 71:
*pg = 'o';
break;
default:
break;
}
}
輸出圖像:https://snag.gy/yh2c1M.jpg
應該'(源||目的地==「d」)'變更爲'((源= ='D')||(destinatio n =='D'))? (在你應用這個邏輯測試的所有地方) – ryyker
哦,廢話。讓我嘗試一下。謝謝 –
實際上,如果源或目標是d,並且源或目標是a,那麼實際上我想運行它。 –