2013-10-15 3 views
0

J'ai créé une grille contenant plusieurs rectangles. Ces rectangles sont représentés par plusieurs rectangles oranges et chaque rectangle est délimité par des couloirs blancs.Comment colorer des patches dans un rectangle donné

Comment puis-je colorer des patches dans un rectangle orange donné?

Merci d'avance.

C'est un début de code:

to create-yellow-patches 

ask one-of patches with [pcolor = orange] [ 
set pcolor yellow 
foreach list pxcor to max-pxcor [ ;; I don't know how to define a list from pxcor to max-pxcor 
    let x ? 
    foreach list min-pycor to max-pycor [ ;; I don't know how to define a list from min-pycor to max-pycor 
    let y ? 
    ifelse [pcolor] of patches with [pxcor = x and pycor = y ] = orange 
    [ set pcolor yellow ] 
    [ break ] ] ] ;; I don't know what is the equivalent of break in netlogo 

    foreach pxcor - 1 to min-pxcor [ ;; I don't know how to define a list from pxcor - 1 to min-pxcor 
    let x ? 
    foreach min-pycor to max-pycor [ ;; I don't know how to define a list from min-pycor to max-pycor 
    let y ? 
    ifelse [pcolor] of patches with [pxcor = x and pycor = y ] = orange 
    [ set pcolor yellow ]  
    [ break ] ] ] ;; I don't know what is the equivalent of break in netlogo 
end 

Répondre

1

Voici quelques exemples de code pour faire un rectangle orange de patchs:

ask patches with [pxcor >= -3 and pxcor <= 6 and pycor >= -5 and pycor <= 7] [ 
    set pcolor orange 
] 

Je devine que cela ne répond pas complètement à votre question si . Vous avez déjà des patches orange et quelques patches blancs et ceux-ci devraient contrôler l'emplacement du rectangle que vous voulez dessiner ... quelque chose comme ça?

MISE À JOUR

OK, la question est beaucoup plus clair maintenant.

Vous pouvez résoudre ce problème de plusieurs façons. Voici le plus élégant que je peux penser:

to setup 
    clear-all 
    ask patches [ 
    ifelse pxcor mod 5 = 0 or pycor mod 5 = 0 
     [ set pcolor white ] 
     [ set pcolor orange ] 
    ] 
end 

to create-yellow-patches 
    let seed one-of patches with [pcolor = orange] 
    ask seed [ turn-yellow ] 
end 

to turn-yellow ;; patch procedure 
    set pcolor yellow 
    ask neighbors4 with [pcolor = orange] [ 
    turn-yellow 
    ] 
end 

Ceci est une approche complètement différente de celle que vous essayiez. Si vous voulez rester fidèle à votre approche originale, je vous suggérerais d'écrire vos boucles en utilisant while au lieu de foreach plus break.

+0

J'ai une grille comme l'exemple "Traffic Grid" avec des rectangles oranges et des couloirs blancs. Je place au hasard une pièce jaune dans un rectangle orange. En fait, j'essaie de colorier en jaune toutes les taches orange dans le rectangle dans lequel j'ai placé au hasard les taches jaunes. – Nell

+0

réponse mise à jour avec plus de code. –

Questions connexes