2011-02-02 8 views
1

html5 로의 첫 입문을 위해 Farkle 게임의 스코어 보드를 만들려고합니다.왜 막대 그래프가 이상하게 작동합니까? html5 캔버스 및 자바 스크립트

나는 최대 5 명의 플레이어를 위해 절름발이지만 기능적인 그래프 시스템을 만드는 방법을 알아 냈지만 두 번 이상 업데이트하는 방법을 알 수는 없습니다.

내 코드가 훨씬 뛰어날 수 있다는 것을 알고 있지만 어떻게 작동하는지 확신 할 때까지 도우미 함수를 작성하고 싶지 않았습니다.

지금과 같이 상자에서 이상한 행동을하고 있습니다. 전체 점수에 "집계"를 추가하고 새 점수를 반영하는 상자를 그리는 대신 이해가되지 않는 부분을 수행합니다. 동일한 플레이어에 대해 10을 입력하고 90을 입력하여 내 뜻을 확인하십시오.

여기는 "작동"버전이므로 내 문제를 볼 수 있습니다. http://jsfiddle.net/kBJB4/

편집 : 정상적으로 숫자를 추가하는 것 같아요. 1 + 1 = 2, 그것은 어떤 종류의 추가 일을하고있다. 1 + 1 = 11이다. 나는 이유를 모른다.

+0

어쩌면 당신은'string' 대신의'integer'를 사용하고 생각 : 간단한 수정 prompt()의 반환 값이 같은 정수로 변환하는 것입니다? 'parseInt (yourVariable)'을 사용 해보자. – drudge

+0

나는 몇개의 장소에 퍼팅을 시도했지만 도움이되지 않았다. 다른 아이디어가 있습니까? – Kaninepete

답변

2

player1 치료이기 때문에 prompt() 함수 호출이 반환

사용 parseInt 숫자를 사용하도록 강제로 문자열. 그래서 다음과 같은 성명

var tally = prompt("score?");

에서 변수 tally 실제로 문자열입니다. 따라서 문자열 피연산자와 정수 피연산자에 + 연산자를 적용하면 정수 피연산자를 문자열로 처리하고 정수 추가 대신 문자열 연결을 수행합니다.

var tally = parseInt(prompt ("Score?")); 
1

업데이트 : @Suresh Kumar의 대답은 조금 더 깨끗합니다. 그래도 내 것을 떠난다.

코드 : player1 += tally;은 두 변수를 strings으로 처리합니다.

player1 = parseInt(player1) + parseInt(tally); 

참고 :, player1 += parseInt(tally);이 작동하지 않는 바로 가기 시도가 여전히 string

+1

단항'+'연산자는'parseInt'보다 문자에서 더 효율적이고 짧습니다. 또한 16 진수는 인식하지만 8 진수는 인식되지 않습니다 (더 이상 사용되지 않습니다). 즉,'(+ player1) + (+ 탈리)'대신'parseInt'를 사용하는 것이 좋습니다. – Reid

+0

감사합니다! 이제 완벽하게 작동합니다. – Kaninepete

관련 문제