6 글 보임 - 1 에서 6 까지 (총 6 중에서)
-
글쓴이글
-
2024년 3월 5일 13:28 #115152
황승현참가자onClick={() => { if (누구차례냐 == 1 && 바둑판[props.i][props.j] == "black-border") { // 검정색 돌 놓을 차례이면 dispatch(바둑판변경([props.i, props.j, "black"])); //놓을 수 있는 자리 중 하나 누르면 검정색으로 변경 dispatch(후보지우기()); /**만들어놓은 가이드 지우기 */ dispatch(검정색으로뒤집기([props.i, props.j])); dispatch(오른쪽후보만들기(["white", "black"])); // dispatch(왼쪽후보만들기(["white", "black"])); // 흰색 돌 dispatch(위쪽후보만들기(["white", "black"])); // 놓을 수 dispatch(아래쪽후보만들기(["white", "black"])); // 있는 dispatch(왼쪽위후보만들기(["white", "black"])); // 가이드 dispatch(오른쪽위후보만들기(["white", "black"])); // (white-border) dispatch(왼쪽아래후보만들기(["white", "black"])); // 만들기 dispatch(오른쪽아래후보만들기(["white", "black"])); // for (var i = 0; i < 8; i++) { for (var j = 0; j < 8; j++) { if (바둑판[i][j] == "white-border") { // 흰색 돌 놓을 수 있는 가이드가 하나 이상 생성되었다면 dispatch(차례변경()); // 상대방에게 차례 넘기기 ('누구차례냐' 1에서 2로 변경) console.log("차례변경했음"); return 0; } } } dispatch(후보지우기()); dispatch(오른쪽후보만들기(["black", "white"])); // dispatch(왼쪽후보만들기(["black", "white"])); // 검은색 돌 dispatch(위쪽후보만들기(["black", "white"])); // 놓을 수 dispatch(아래쪽후보만들기(["black", "white"])); // 있는 dispatch(왼쪽위후보만들기(["black", "white"])); // 가이드 dispatch(오른쪽위후보만들기(["black", "white"])); // (black-border) dispatch(왼쪽아래후보만들기(["black", "white"])); // 만들기 dispatch(오른쪽아래후보만들기(["black", "white"])); // console.log(누구차례냐); return 0; } else if ( 누구차례냐 == 2 && 바둑판[props.i][props.j] == "white-border" ) { // 흰색 돌 놓을 차례이면 dispatch(바둑판변경([props.i, props.j, "white"])); //놓을 수 있는 자리 중 하나 누르면 흰색으로 변경 dispatch(후보지우기()); /**만들어놓은 가이드 지우기 */ dispatch(흰색으로뒤집기([props.i, props.j])); dispatch(오른쪽후보만들기(["black", "white"])); // dispatch(왼쪽후보만들기(["black", "white"])); // 검은색 돌 dispatch(위쪽후보만들기(["black", "white"])); // 놓을 수 dispatch(아래쪽후보만들기(["black", "white"])); // 있는 dispatch(왼쪽위후보만들기(["black", "white"])); // 가이드 dispatch(오른쪽위후보만들기(["black", "white"])); // 만들기 dispatch(왼쪽아래후보만들기(["black", "white"])); // dispatch(오른쪽아래후보만들기(["black", "white"])); // for (var i = 0; i < 8; i++) { for (var j = 0; j < 8; j++) { if (바둑판[i][j] == "black-border") { // 검은색 돌 놓을 수 있는 가이드가 하나 이상 생성되었다면 dispatch(차례변경()); // 상대방에게 차례 넘기기 ('누구차례냐' 2에서 1로 변경) console.log("차례변경했음"); return 0; } } } dispatch(후보지우기()); dispatch(오른쪽후보만들기(["white", "black"])); // dispatch(왼쪽후보만들기(["white", "black"])); // 흰색 돌 dispatch(위쪽후보만들기(["white", "black"])); // 놓을 수 dispatch(아래쪽후보만들기(["white", "black"])); // 있는 dispatch(왼쪽위후보만들기(["white", "black"])); // 가이드 dispatch(오른쪽위후보만들기(["white", "black"])); // 만들기 dispatch(왼쪽아래후보만들기(["white", "black"])); // dispatch(오른쪽아래후보만들기(["white", "black"])); // console.log(누구차례냐); return 0; } }}
오델로라는 보드게임 만들고 있습니다. 서로 돌 하나씩 번갈아가며 보드에 놓으면서 끝날 때 내가 놓은 돌 색이 많으면 이기는 게임인데요, 게임이 어느정도 경과되고 돌을 놓다 상대방이 놓을 돌이 없으면 내가 한번 더 놓을 수 있는데 그 기능 구현이 안되네요. 첫번째 if문에서 '~~후보만들기'함수로 바둑판 배열 중 몇 개를 white-border로 바꾸었는데 for문에서 함수가 종료되지 않네요. dispatch로 바꾸어도 즉각 반응이 안되는거 같은데 어떻게 해결해야하나요?
2024년 3월 5일 22:37 #115243
황승현참가자죄송해요 주절주절 적다보니 너무 길어졌네요. 궁금한건 dispatch(변경함수)로 변수를 바꾸면 다음줄부터 바로 반영되어 바뀌나요, 딜레이가 있나요?
2024년 3월 6일 09:56 #115273
황승현참가자console.log로 여러 부분에서 출력해봤는데 예를 들어 어떤 부분을 클릭하면 dispatch(변경함수())가 실행되게 코드를 짰다면 dispatch(변경함수())는 onclick이 끝나고 redux에 전송되어 변경이 적용되는거 같은데 맞나요?
console.log로 state를 출력하고 dispatch(변경함수())로 state 변경하고 console.log로 다시 출력해봐도 같은 값이 나오네요. onclick함수를 다시 실행하면 변경함수로 의도한대로 적용되어 출력되네요.
2024년 3월 6일 17:54 #115343
codingapple키 마스터dispatch보다 console.log가 먼저 실행되어서 그런듯요 state변동사항 출력하려면 useEffect같은거 안에서 출력해봅시다
-
글쓴이글
6 글 보임 - 1 에서 6 까지 (총 6 중에서)
- 답변은 로그인 후 가능합니다.