Welcome to the CSC Q&A, on our server named in honor of Ada Lovelace. Write great code! Get help and give help!
It is our choices... that show what we truly are, far more than our abilities.

Categories

+13 votes

The actual art for my final is coming together but I cannot get my random generation to work. I want it so that each of the hills, thesky, the background, and the extra objects have a one in three chance of being selected when generating. Here's the code.

to gen-hills
  if random 3 = 0 [
    grassy-hills
  ]
  if random 3 = 1 [
    sandy-hills
  ]
  if random 3 = 2 [
    snowy-hills
  ]
end

to gen-sky
  if random 3 = 0 [
    morning
  ]
  if random 3 = 1 [
    sunset
  ]
  if random 3 = 2 [
    nighttime
  ]
end

to gen-back
  if random 3 = 0 [
    town
  ]
  if random 3 = 1 [
    forest
  ]
  if random 3 = 2 [
    ocean
  ]
end

to gen-extras
  if random 3 = 0 [
    birds
  ]
  if random 3 = 1 [
    clouds
  ]
  if random 3 = 2 [
    planes
  ]
end

My logic is that each option will have a one in three chance in being created which is why I have them reach doing "random 3." But sometimes when I run the code I get multiple things overlapping or not being drawn correctly or nothing being drawn at all. What steps should I take to remedy this problem?

asked in CSC 150 January201920 by (8 points)

3 Answers

+3 votes
 
Best answer

You should declare a variable before your if statements like this:

let check random 3

and then your if statements should look like this:

if check = 0 [ option1 ]
if check = 1 [ option2 ]
if check = 2 [ option3 ]

answered by (8 points)
selected by
0

Thank you. This works

+3 votes

using ifelse instead of if will work!

answered by (2.2k points)
0 votes

I try to change your code. They are the same. I use ifelse statements and take caution on using random.

  to gen-hills
  ifelse (random 3 )= 0 [
    grassy-hills
  ] [
    ifelse (random 3) = 1 [
      sandy-hills
    ] [
      if (random 3) = 2 [
        snowy-hills
      ]
    ]
  end

to gen-sky
  ifelse (random 3) = 0 [
    morning
  ] [ 
    ifelse (random 3) = 1 [
      sunset
    ] [
      if (random 3) = 2 [
        nighttime
      ]
    ]
end
answered by (8 points)
...