誰かが交換を手伝ってくれますか?私は論理的な誤りがあると思う。ソースのピースとデスティネーションが正しいことを知っているので、私のif文で何かが起きています。ゲームのルール:ゲームは、1つの円 'o'を除くすべての '+'でいっぱいのピラミッド構造から始まり、ペグを隣接する円に(2つの点を斜めに)動かすことができます。円で置き換えることもできます。あなたは2つのスポットを斜めに動かすことができ、中央に飛び出したピースは元の位置だけでなく円で囲まれますが、あなたが移動しているピースはその円を '+'で置き換えます。視覚的なイメージは下にあります。さらに、変数は文字に対応しています。例:paはスポットA、pbはスポットBなどです。ペグジャンプパズルを交換する際にロジックエラーが発生する
最初の移動はDからAです。2番目の移動はKからDです。正しく出力されません。 Bが最初の移動からスキップされ、Gがこのターンをスキップされているため、スポットK、G、およびBは空でなければなりません。しかし、ここではちょうど '+'があったとしてもAを空にしています。今、Aはゲームの最初の動きから更新されましたが、今度はサークルに戻ります。 、または「PA」は、次のステートメントから更新されてきたはずです。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の場合は、実際に実行したいと思います。 –