Указатели, чтобы заставить этот небольшой базовый код работать

Я начинаю с малого, и мне несколько тяжело иметь дело с операторами if, else, then и elseif. У меня есть этот код, который должен рисовать разные фигуры с черепахой, когда пользователь вводит первую букву формы. Я уже использовал этот тип кода с уличным фонарем, но мне нужно двигаться в правильном направлении с этим новым кодом. У меня есть весь код для фигур, но каждый раз, когда я ввожу букву для формы, он просто рисует первую фигуру, которая является треугольником. В какой-то момент я настроил код по-другому, чтобы все фигуры рисовались рядом друг с другом. Я думаю, что я на правильном пути.

Что делает код? 'заставляет пользователя решить, какую форму он хочет, и черепаха нарисует ее

T= "Triangle"
P= "Parallelogram"
S= "Square"


TextWindow.ForegroundColor= "magenta"
TextWindow.WriteLine("What shape do you want to draw?")
TextWindow.Write (" Choose [T] for triangle, [P] for Parallelogram or [S] for Square : ")
shape=textwindow.Read()
If T = "Triangle" Then
  Turtle.Speed=9
  GraphicsWindow.Width = 500  
  GraphicsWindow.Height=500
  Turtle.PenUp()
  Turtle.Move(200)
  Turtle.TurnRight()
  Turtle.Move(145)
  Turtle.TurnRight()
  Turtle.PenDown()
  Turtle.Move(320)
  Turtle.TurnRight()
  Turtle.Move(320)
  Turtle.Turn(135)
  Turtle.Move(451)
  Turtle.Hide()
elseif P = "Parallelogram" Then
  Turtle.Speed=9
  GraphicsWindow.Width = 500  
  GraphicsWindow.Height=500
  Turtle.TurnLeft()
  Turtle.PenDown()
  Turtle.Move(200)
  Turtle.Turn(120)
  Turtle.Move(120)
  Turtle.Turn(60)
  Turtle.Move(200)
  Turtle.Turn(120)
  Turtle.Move(120)
Elseif S = "Square" then
  Turtle.Speed=9
  Turtle.TurnLeft()
  Turtle.PenDown()
  Turtle.Move(200)
  Turtle.TurnRight()
  Turtle.Move(200)
  Turtle.TurnRight()
  Turtle.Move(200)
  Turtle.TurnRight()
  Turtle.Move(200)
EndIf

person user3819134    schedule 09.07.2014    source источник
comment
Конечно, это должно быть что-то вроде shape = T и т. д.? Вы просто сравниваете переменную T со значением Triangle, которое всегда будет истинным.   -  person copper.hat    schedule 09.07.2014


Ответы (2)


Посмотрите на тест в ваших операторах if. Первый, например, проверяет переменную с именем T (которая имеет значение «Треугольник») на строку «Треугольник». Это всегда будет верно, поэтому он всегда будет рисовать треугольник и не двигаться дальше. Что вы действительно хотите сравнить со строкой «Треугольник»? Переменная, которую вы только что получили от пользователя... не переменные T, P и S.

P.S. Если возможно, заведите привычку использовать последовательные отступы, это поможет вам легче увидеть структуру вашего кода. Всего наилучшего!

person wwkudu    schedule 09.07.2014
comment
Хорошо, теперь я понял, сначала я был немного сбит с толку, потому что думал, что должен задать вопрос для каждой формы. - person user3819134; 09.07.2014
comment
Попробуйте представить, что вы — программа, выполняющая ваши инструкции по одной за раз, и что каждая переменная — это коробка из-под обуви, в которую вы заглядываете только тогда, когда доберетесь до этой строки в коде (потому что они могли измениться с тех пор, как вы в последний раз смотрели). Я знаю, что это слишком упрощенно, но такая базовая проверка за столом или ручная отладка очень помогут вам в долгосрочной перспективе. - person wwkudu; 09.07.2014

Тест «форма»:

If shape = "T" Then
    Turtle.Speed = 9
    GraphicsWindow.Width = 500  
    ...
Elseif shape = "P" Then
    Turtle.Speed = 9
    GraphicsWindow.Width = 500
    ...
Elseif shape = "S" Then
    Turtle.Speed = 9
    Turtle.TurnLeft()
    ...
End If
person Cœur    schedule 09.07.2014