누군가는 교환에 저를 도울 수있다. 논리적 인 오류가 있다고 생각합니다. 원본 조각과 대상이 정확하다는 것을 알고 있으므로 if 문으로 처리 할 수 있습니다. 게임 규칙 : 게임은 하나의 원 'o'을 제외한 모든 '+'로 가득 찬 피라미드 구조로 시작하며 인접한 원으로 페그를 움직일 수 있습니다 (2 개 이상/대각선으로). 동그라미로 대체 될 수도 있습니다. 예를 들어 대각선으로 두 지점을 움직일 수 있고, 중간 점프 된 조각은 원위치뿐만 아니라 원을 따라 원을 그리지 만, 움직이는 조각은 원이 '+'로 대체됩니다. 시각적 이미지가 아래에 있습니다. 또한 변수는 문자에 해당합니다. 예 : pa는 스폿 A에 대한 것이고 pb는 스폿 B에 대한 것입니다.말뚝 뛰기 수수께끼를 교환에있는 논리 오류
첫 번째 이동은 D에서 A입니다. 두 번째 이동은 K에서 D입니다. 잘못된 결과가 나타납니다. B가 첫 번째 이동에서 건너 뛰었고 G가 이번 턴을 건너 뛰었 기 때문에 K, G 및 B 지점은 비어 있어야합니다. 하지만 여기에 '+'가 있었음에도 불구하고 A가 공백으로 표시됩니다. 이제 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;
}
}
출력 이미지 : 여기
코드에 대한 링크입니다
'(소스 || 대상 == 'D')가''((소스에 변경해야 = = 'D') || (운명 n == 'D'))? (이 논리적 테스트를 적용하는 모든 곳에서) – ryyker
오 ~.그것을 시도하게하십시오. 고맙습니다. –
소스 또는 대상이 d이고 소스 또는 대상이 a 인 경우 실제로 실행하고 싶습니다. –