1

我试图给我的 Small Basic 程序一个随机的背景:

If File.ReadContents(Program.Directory + "\Turtle.settings") = "" Then
  Reset()
EndIf

Background = File.ReadLine(Program.Directory + "\Turtle.settings", 1)
Color = File.ReadLine(Program.Directory + "\Turtle.settings", 2)
Distance = File.ReadLine(Program.Directory + "\Turtle.settings", 3)
Mode = File.ReadLine(Program.Directory + "\Turtle.settings", 4)
Speed = File.ReadLine(Program.Directory + "\Turtle.settings", 5)
Width = File.ReadLine(Program.Directory + "\Turtle.settings", 6)

Controls.ButtonClicked = ButtonClicked
GraphicsWindow.KeyDown = KeyDown
GraphicsWindow.PenColor = Color
GraphicsWindow.PenWidth = Width
GraphicsWindow.Title = "Turtle"
Turtle.Speed = Speed

TextBoxOne = Controls.AddTextBox(10, 10)
Controls.SetTextBoxText(TextBoxOne, "Maximize the window")
Start = Controls.AddButton ("OK", 180, 8)

Sub KeyDown
EndSub

Sub ButtonClicked

  If Controls.LastClickedButton = Start Then
    Controls.Remove(TextBoxOne)
    Controls.Remove(Start)
    Turtle.X = GraphicsWindow.Width / 2
    Turtle.Y = GraphicsWindow.Height / 2
    Turtle.Show()

    If Background = 1 Then
      For I = 1 To 400
        X = Math.GetRandomNumber(GraphicsWindow.Width)
        Y = Math.GetRandomNumber(GraphicsWindow.Height)
        Z = Math.GetRandomNumber(1)
        GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
        GraphicsWindow.FillEllipse(X, Y, 20, 20)
      EndFor
    EndIf

    Menu()
  EndIf

EndSub

Sub Reset
  File.WriteLine(Program.Directory + "\Turtle.settings", 1, "1")
  File.WriteLine(Program.Directory + "\Turtle.settings", 2, "#000000")
  File.WriteLine(Program.Directory + "\Turtle.settings", 3, "100")
  File.WriteLine(Program.Directory + "\Turtle.settings", 4, "0")
  File.WriteLine(Program.Directory + "\Turtle.settings", 5, "10")
  File.WriteLine(Program.Directory + "\Turtle.settings", 6, "3")
EndSub

Sub Menu
EndSub

这些是结果:

如您所见,有时这些点位于随机位置,但除此之外,这些点按颜色排序。我没有对两者之间的代码进行任何更改。

更改Z = Math.GetRandomNumber(1)Z = 1可防止点显示为有序,即使 的值Z保持不变。

删除所有File.ReadLine()命令也可以。如果我删除命令,这些点总是随机放置的。不过,我仍然想使用这些,所以我需要另一个解决方案。

在背景制作代码后面删除Turtle.Y = GraphicsWindow.Height / 2或移动它,也可以确保随机放置点。我会将其保留为临时解决方案,但我仍在寻找真正的解决方案。

如果我Turtle.Y = GraphicsWindow.Height / 2在后台制作代码之前和之后,程序会崩溃。我假设这是由于 Small Basic 本身的错误,这也是导致我的问题的原因。

4

1 回答 1

0

该错误是由 Small Basic 本身的问题引起的。因此,如果不编辑程序就不可能更正它。唯一可能的解决方案是将其删除Turtle.Y = GraphicsWindow.Height / 2或移动到后台制作代码后面。

于 2016-11-12T20:06:33.303 回答