2015-01-11 2 views
-3

편집 : 코드 : http://pastebin.com/cGAxmNVCNetLogo 플래 피 버드 점수

당신이 파이프 부분을 보면, "pxcor = 14 세트는 num NUM + 1]이"이 점수입니다. 그러나 결함이 있습니다. 파이프가 새쪽으로 이동하면 patch num 속성은 0으로 설정됩니다. pxcor는 더 이상 14가 아니기 때문에 점수가 항상 0이됩니다. 따라서 점수를 얻는 데 도움이 필요합니다. "파이프"를보십시오.

최대 수 (num은 패치 속성)를 찾고 1을 더하는 것이 좋습니다. 어떻게 최대 수를 찾을 수 있습니까?

답변

1

엄격한 마감 시한을 감안할 때, 나는 이것이 당신을 얻기 위해 몇 가지 기본적인 도움을 주었기 때문에 이것이 무엇인가 숙제라고 생각합니다. 두 코드를 하나의 파일로 결합했습니다. 나는 코드가 컴파일 될 수 있도록 하나의 구문 수정을했다 (`ask turtles '를 추가).

논리를 수정하려고 시도하지 않았습니다. 게임을 시작하기 전에 (예 : 경기 필드를 그리는) 어떤 일이 일어나는지 생각하고 설정 절차에 들어가야합니다. 또한 각 진드기 (아마도 새를 움직이고, 점수를 업데이트하는 등) 중에 무슨 일이 일어나는지 생각해보고, 'tick'명령과 함께 이동 절차 (in go procedure)에 넣었다.

globals [jump? score] 

patches-own [num oldcolor] 

to setup 
    clear-all 
    create-ordered-turtles 1 ; not sure why ordered since only 1 of them 
    ask turtles [   ; don't need separate ask, create runs anything in [ ] 
    setxy -10 0 
    set size 5 
    set shape "bird-norm" 
    ] 
    ask patches [ 
    set num 0 
    if pycor = -16 [set pcolor green] 
    ] 
end 

to go      ; this should have the tick or it will only run once 
    ask turtles [ 
    set shape "bird-fall" 
    set heading 180 
    fd 1 
    wait 0.1 
    if mouse-down? and not jump? [flap] 
    set jump? mouse-down? 
    if (pycor = -14) or (pcolor = white) [ 
     ask patch 0 0 [ 
     set plabel "Game Over" 
     ] 
     stop 
    ] 
    ] 
end 

to move      ; this has the tick command 
    reset-ticks 
    wait 0.1 
    ask patches [ 
    set oldcolor pcolor 
    ] 
    ask patches with [pxcor < max-pxcor] [ 
    set pcolor [oldcolor] of patch (pxcor + 1) pycor 
    ] 
    tick 
end 

to line 
    reset-ticks 
    let x (random 20 - 6) 
    ask patches [ 
    if ((pxcor > 10) and (pxcor < 15)) and ((pycor > -16) and ((pycor < x) and (pycor > (x - 5)))) [ 
     set pcolor white 
    ] 
    if pxcor = 14 [ 
     set num num + 1 
    ] 
    ] 
end 

to pipe 
    repeat 10 [move] 
    line 
end 

to flap 
    set heading 0 
    set shape "bird-norm" 
    repeat 5 [ 
    fd 1 
    wait 0.01] 
end 
+0

감사합니다. 코드를 실행하고 "go"와 "pipe"가있는 버튼을 만듭니다. 그러나 파이프가 잘 작동합니다. 새는 정확한 속도로 움직이지 않습니다. 나는 Flappy Bird 게임을 바꾸기로 결정했습니다. - 흰색 사각형은 새가 통과해야하는 것이므로 파이프 문제를 해결합니다. 두 번째 단락에 대해, 이것은 하나의 흰색 사각형을 만들고 난 다음 파이프 절차를 호출하는 것을 의미합니까? * 예, 이것이 중요한 숙제입니다. 나는 모든것이 다운 된 줄 알았지 만 코딩을 시작했을 때 생각보다 훨씬 어려웠다. – bttcd5

+0

두 번째 파라는 디자인을 통해 생각하고있었습니다. NetLogo는 해당 절차를 호출하는 버튼을 누르거나 명령 센터에서 이름을 입력하면 절차를 실행합니다. 이 절차는 버튼을 사용하고 영원히 체크 표시를하지 않고 절차에서 틱 명령을 사용하지 않는 한 한 번 실행됩니다. 필요한 절차가 무엇인지, 단추인지, 다른 절차에 의해 호출되는지 여부, 일회성인지 여부 또는 실행 중인지 여부, 단추 및 진드기를 적절하게 구성해야합니다. 일반적으로 구체적인 답변을 얻으려면 구체적인 질문을해야합니다. – JenB