:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
15/10/27 05:03
1. 무언가 라이브러리를 쓰고 계신 것 같은데... 잘은 모르겠지만 draw()가 주기적으로 호출되는 구조인 것 같군요. 지금은 어떻게 호출하고 계신가요? setTimeout이나 setInterval이 아니라 자동으로 되고 있나요? 그렇다면 얼마나 자주 draw()를 호출할지가 웹 사이트에 적혀 있을 것입니다. 그것을 단위 시간으로 잡아야 할 것입니다.
2. 사다리 그리는 부분은 다음과 같이 리팩터할 수 있습니다: for (var i=0;i<12;i++) line(0, 300-stepSize*i, 400, 300-stepSize*i); 3. 공마다 보존되어야 하는 상태가 jumperHeight이므로 이걸 공의 수만큼 만들어야 할 것입니다. jumperHeight1, jumperHeight2, jumperHeight3, ..., jumperHeightN 이렇게 만드는 건 비효율적이므로 배열을 사용하는 게 좋습니다. 예를 들어 다음과 같이 만듭니다: var numberOfBalls = 10; var jumperHeight = []; for (var i=0;i< numberOfBalls;i++) jumperHeight[i] = 0; 만일 jumperEnergy 같은 것도 공마다 따로 상태가 있어야 한다면 이것도 복제해야 하겠죠. 4. 유전 알고리즘이라면 무작위 요소가 필요할 것 같은데... 지금 저대로 짜면 모든 공이 똑같이 움직일 것입니다. 자바스크립트에서 무작위 요소는 Math.random() 으로 구현할 수 있습니다. 0 이상 1 미만의 임의의 '실수'를 반환합니다. 여기에 적당한 수를 곱하고 더해서 씁니다. 예를 들어, parseInt(Math.random() * 10) + 1 하면 1에서 10까지의 '정수'가 나올 것입니다.
15/10/27 05:13
오오오오 2,3,4 번 관련해서는 완전 제가 바라던 꿈의 답변입니다!!! 감사합니다 ㅠ.ㅠ;;;
1번 관련해서는 제가 라이브러리를 쓰고 있는 줄도 몰랐습니다. 자바 스크립트 독학용 사이트가 하나 있는데, (khan academy 라고...) 거기서는 그냥 저렇게 코드를 써놓으면 자동으로 돌아가거든요. 저게 기본형인 줄 알았는데 그게 아니라 히든 코드가 깔려있는 거였군요. 말씀하신대로 커맨드를 조금 알아보겠습니다. 하여튼, 진짜 감사합니다 랜덤여신님 완전 사랑해요.
15/10/27 05:17
칸 아카데미에 그런 기능이 있었군요.
설명서를 보니, 1초에 30번씩 draw 함수가 자동으로 호출된다고 합니다. 이 수치는 frameRate() 함수로 바꿀 수 있다고 합니다. 예를 들어, frameRate(20) 이라고 쓰면 1초 / 20회 = 50밀리초마다 draw가 호출되겠죠. 그러므로 따로 setTimeout이나 setInterval을 쓸 필요는 없어 보입니다. https://www.khanacademy.org/computer-programming/draw/5192527846309888 https://www.khanacademy.org/computer-programming/frameratefps/6427359154536448
15/10/27 05:30
그러려면 일단 결혼부터 해야겠군요... 아니, 애인부터 만들어야... 다이아 찍기보다 어려워 보이는군요. ㅠㅠ
칸 아카데미를 보니 위에서 말씀드린 Math.random(), parseInt() 같은 표준 함수들이 없는 것 같습니다. random(), round() 라는 자체 함수가 따로 있어서 그걸 쓰셔야 할 것 같군요. 어차피 유전 알고리즘을 설명하는 것이 주 목적이므로 칸 아카데미에서만 쓴다면 별 지장은 없어 보이지만요. 다만 수업의 목표에 따라서는 표준 자바스크립트에서는 돌아가지 않는 코드라는 것을 학생들에게 미리 알려주셔야 할 것 같습니다. 표준 함수보다 약간 더 쓰기 편하게 디자인되어 있는 면도 있습니다. 예를 들어 표준 Math.random()은 언제나 0에서 1까지의 실수만 반환하는데, 칸 아카데미의 random()은 random(10, 20) 식으로 인자를 줄 수가 있고, 그러면 10에서 20 사이의 실수를 반환하는군요. 그밖에 println() 이라는 함수가 디버깅하는 데 유용해 보입니다. https://www.khanacademy.org/computer-programming/randomlow-high/827911487 https://www.khanacademy.org/computer-programming/roundnum/5907281296228352
15/10/27 05:15
jumperHeight이랑 jumperEnergy를 array로 놓고 draw function에서 if-else를 for loop으로 묶어버리면 어떨까요.
그리고 말씀하신대로 setTimeOut을 각 for loop 끝날 때마다 놓아서 delay 주는 방법이 가장 간편해 보입니다. 그럼 각 object 별로 dynamic하게 움직이는 것처럼 보일 수 있을 것 같습니다.
|