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 に答える