Учитывая строгий срок, я предполагаю, что это домашнее задание для чего-то, поэтому я сделал некоторую базовую помощь, чтобы заставить вас двигаться. Я объединил две части кода в один файл. Я сделал одну синтаксическую коррекцию, чтобы код скомпилировался (добавив `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
спасибо. Я запустил код и создал кнопку «go» и «pipe». Тем не менее, трубы работают нормально. Птица не движется с правильной скоростью. Я решил изменить игру Flappy Bird. Белые квадраты - это то, над чем должна бежать птица, поэтому это решает проблему трубы. Что касается второго абзаца, значит ли это, что я настраиваю создание одного белого квадрата, а затем вызываю трубную процедуру? * Да, это основная домашняя работа. Я думал, что все потеряно, но когда я начал кодировать, это было намного сложнее, чем я думал. – bttcd5
Мой второй пара был о мышлении через ваш дизайн. NetLogo запускает процедуру, когда вы нажимаете кнопку, вызывающую эту процедуру (или введите ее имя в командном центре). Эта процедура выполняется один раз, если вы не используете кнопку и не гаснете навсегда и не имеете в ней команду tick. Вам нужно выяснить, какие процедуры вам нужны, и какие они кнопки или вызываются другими процедурами, независимо от того, являются ли они отключенными или запущенными, и организуйте свои кнопки и отметки соответственно. Как правило, вам нужно задать конкретные вопросы, чтобы получить конкретные ответы. – JenB