첫 번째 게시물 및 noob 프로그래머, 그러니 나와 함께 맨발로. 현재 C++에서 "Wa-Tor Simulation"과제를 수행하고 있습니다. 아직도 코스의 초기 단계는 과제의 그래픽 부분이 아니라 오히려 물고기와 상어의 움직임과 기능이었습니다. Wa-Tor 시뮬레이션을 모른다면 제 질문에 중요하지 않다고 생각합니다. 내가 달성하기 위해 노력하고있어중첩 된 if 문, 옵션을 제거하는 동안
은 다음과 같습니다
내가 빈, 생선, 상어 구성된 두 개의 차원 배열을 가지고있다.상어가 위, 아래, 왼쪽 또는 오른쪽으로 무작위로 이동합니다. 상어가 가장 먼 왼쪽 지점에있을 때 배열의 왼쪽으로 이동하면, 그것은 오른쪽 (위, 아래, 오른쪽뿐만 아니라)에 나타날 것입니다. 상어가 물고기가없는 위치로 이동하면 그 위치를 따라 잡을 것이지만 만약 다른 상어를 만나면 다른 곳으로 이동하려고 시도 할 것입니다.
상어가 다른 상어에 둘러싸여 있으면 움직이지 않습니다.
내가 지금까지 해왔 던 것은, for 루프를 실행하는 동안 상어가 두 번 움직이지 않도록 상어를 움직일 임시 배열을 만드는 것입니다.
for (int i = 0; i < MAX_X; i++) {
for (int j = 0; j < MAX_Y; j++) {
if (myOcean[i][j] == SHARK) {
int randNum = (rand() % 4 + 1);
switch (randNum) {
case 1:
//This is where I don't know how to properly code to make my function work, so bare with me while I make fake code..
//if(myOcean[i+1][j] == SHARK){ GO BACK AND FIND A NEW RANDOM NUMBER, BUT THIS TIME REMOVE CASE 1. THUS NOT ALLOWING AN ATTEMPT TO MOVE [i+1]
if ((i + 1) == MAX_X) { tempArray[0][j] = SHARK; }
else { tempArray[i + 1][j] = SHARK; }
tempArray[i][j] = EMPTY;
break;
case 2:
// Same as above. Remove Case 2 if it doesnt work.
if ((i - 1) < 0) { tempArray[MAX_X - 1][j] = SHARK; }
else { tempArray[i - 1][j] = SHARK; }
tempArray[i][j] = EMPTY;
break;
case 3:
// Same as above. Remove Case 3 if it doesnt work.
if ((j + 1) == MAX_Y) { tempArray[i][0] = SHARK; }
else { tempArray[i][j + 1] = SHARK; }
tempArray[i][j] = EMPTY;
break;
case 4:
// Same as above. Remove Case 4 if it doesnt work.
if ((j - 1) < 0) { tempArray[i][MAX_Y - 1] = SHARK; }
else { tempArray[i][j - 1] = SHARK; }
tempArray[i][j] = EMPTY;
break;
default:
// No cases worked, thus the shark remains still.
tempArray[i][j] = myOcean[i][j];
}
}
}
}
이 때문에 내 문제를 종료 : 같은
따라서 내 코드 보인다. 나는 돌아가서 특정한 사건을 제거하는 법을 모릅니다. 필자는 아직 코딩 문제가 너무 많아서 문제를 충분히 설명했으면합니다. 어떤 도움을 주시면 감사하겠습니다.