2015-01-11 3 views
-3

Edit: коды: http://pastebin.com/cGAxmNVCNetLogo Flappy Bird Scoring

Если вы посмотрите на трубном части, "если pxcor = 14 [Set Num Num + 1]" это озвучивание. Однако это неверно. Когда трубы перемещаются к птице, свойство num num устанавливается равным 0. Поскольку pxcor больше не 14. Но это означает, что оценка всегда будет равна 0. Поэтому мне нужна помощь в подсчете очков. Посмотрите на «Трубу».

Я собираюсь найти максимальное число (num - свойство патча) и добавить 1. Как найти максимальное число?

ответ

1

Учитывая строгий срок, я предполагаю, что это домашнее задание для чего-то, поэтому я сделал некоторую базовую помощь, чтобы заставить вас двигаться. Я объединил две части кода в один файл. Я сделал одну синтаксическую коррекцию, чтобы код скомпилировался (добавив `ask turtles 'to go).

Я не делал попыток исправить вашу логику. Вам нужно подумать о том, что происходит до начала игры (например, рисование поля игры), и иметь это в процедуре установки (или вызывается). Вам также нужно подумать о том, что происходит во время каждого тика (возможно, переместите птицу, обновите счет и т. Д.) И получите это (или вызванное) процедуру перехода вместе с командой «tick».

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 запускает процедуру, когда вы нажимаете кнопку, вызывающую эту процедуру (или введите ее имя в командном центре). Эта процедура выполняется один раз, если вы не используете кнопку и не гаснете навсегда и не имеете в ней команду tick. Вам нужно выяснить, какие процедуры вам нужны, и какие они кнопки или вызываются другими процедурами, независимо от того, являются ли они отключенными или запущенными, и организуйте свои кнопки и отметки соответственно. Как правило, вам нужно задать конкретные вопросы, чтобы получить конкретные ответы. – JenB

Смежные вопросы