Уже больше 20 лет я играю в "Heroes III". И вот я решил создать собственную карту. Игра "Heroes III" двумерная, но поскольку я человек ограниченный, я решил сделать её одномерной, чтобы герой мог ходить только по линии, а не по плоскости.
Идеальной линией мне показалась спираль. Чтобы нарисовать спираль, надо составить друг с другом много-много 1/8 окружности.
Окружность рассчитывается по формуле y = sqrt (r * r - x * x). Но имеем дело на карте с дискретными значениями. Чтобы рассчитать эти значения для разных радиусов, я написал программу.
Эта программа является переводом с языка "Turbo C", так что над содержательной частью я не задумывался, а занимался исключительно переводом с одного языка на другой.
Поскольку программа получилась удачной и не очень долго работает, выкладываю ссылку на скачивание архива. В архиве программа, скриншоты, исполнительный файл и сам проект, который скомпилирован.
Private Sub B1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B1.Click Dim radius As Integer, max As Integer, counter As Integer, h As Integer
REM radius - радиус, для которого ведётся расчёт
REM max - максимальное значение, для которого считается квадратный корень
REM counter - счётчик
REM h - рассчитанное значение границы окружности
T1.Text = ""
For radius = 1 To 60 REM Внешний радиус 1/8 окружности
max = Int(radius / Math.Sqrt(2) + 1) REM Верхняя граница расчётов
T1.Text = T1.Text & "r = " & radius & Chr(13) & Chr(10)
For counter = 0 To max
If counter = radius Then Exit For
h = Int(Math.Sqrt(radius * radius - counter * counter - 0.0001) + 1) REM Расчёт по формуле y = sqrt (r * r - x * x)
If h < counter Then Exit For
If h < radius Then T1.Text = T1.Text & counter & " - " & h & Chr(13) & Chr(10)
Next
T1.Text = T1.Text & Chr(13) & Chr(10)
Next
End Sub
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Комментарии 4