Хотя обще принято первой программой писать Hello World. Мы отойдем от этого правила и начнем с рисования простейших фигур. Так как наш шаблон имеет подключение библиотеки SmallBasicLibrary.dll, это позволит нам рисовать не углубляясь, пока, в дебри языка.
В библиотеке содержится свой хитрый курсор - черепашка (Turtle). Она впервые появилась, как обучающий персонаж в языке программирования Prolog. Она будет рисовать простейшие фигуры.
Запускаем наш шаблон и начинаем урок.
Рисуем линию
Для того чтобы нарисовать линию нужно воспользоваться функцией Move, вот ее описание:
public static void Move(Primitive distance);
|
Как видно в функцию нужно подать число, которое должна пройти черепашка рисуя за собой линию.
Куда же нужно добавить эту функцию чтобы все работала? Давайте вспомним наш код шаблона:
using Microsoft.SmallBasic.Library;
namespace ConsoleTemplate
{
class Program
{
static void Main(string[] args)
{
}
}
}
|
Функция Main является местом запуска приложения, вот в нее мы и будем добавлять создаваемый нами код.
Нарисуем линию в 100 единиц. Для этого, в функции Move нужно указать нужное число - 100. Вот как это будет выглядеть:
static void Main(string[] args)
{
Turtle.Move(100);
}
|
Давайте запустим нашу программу. Для этого нажмем кнопку Start в интерфейсе или клавишу F5.
После сборки программы, мы свами увидим, как черепашка рисует линию. Результат работы программы:
Давайте попробуем нарисовать что-то посложнее.
Рисуем квадрат
Квадрат состоит из четырех линий равной длины, расположенные под углом в 90º, относительно предыдущей. Как нам повернуть черепашку на 90º? Для этого есть другая функция - Turn:
public static void Turn(Primitive angle);
|
В градусах указывается переменная angle. Отчет идет по часовой стрелки. Чтобы повернуться направо нужно указать угол 90º, а налево - -90º.
Давайте допишем предыдущую программы, чтобы она рисовала нам квадрат.
static void Main(string[] args)
{
Turtle.Move(100);
Turtle.Turn(90);
Turtle.Move(100);
Turtle.Turn(90);
Turtle.Move(100);
Turtle.Turn(90);
Turtle.Move(100);
}
|
Результат работы программы показан на рисунке.
Помимо функции Turn существуют еще функции поворота налево (TurnLeft) и направо (TurnRight). Они поворачивают черепашку ровна на 90º.
public static void TurnLeft();
public static void TurnRight();
|
Теперь мы можем рисовать любые многоугольники: треугольник, прямоугольник, шестигранник и т.п.
Рисуем дом
Давайте нарисуем дом, как показан на рисунке.
Как видно, дом состоит из трех частей: 2 квадрата и треугольник. Но как перемещать черепашку не рисуя? Для этого есть функции PenUp и PenDown. Это похоже на то, как если оторвать карандаш от бумаги и переместить его на другое место и опустить для продолжения рисования.
public static void PenUp();
public static void PenDown();
|
Я нарисовал так:
static void Main(string[] args)
{
Turtle.Turn(180);
Turtle.Move(100);
Turtle.TurnLeft();
Turtle.Move(100);
Turtle.TurnLeft();
Turtle.Move(100);
Turtle.TurnLeft();
Turtle.Move(100);
Turtle.PenUp();
Turtle.Move(50);
Turtle.PenDown();
Turtle.TurnRight();
Turtle.Move(50);
Turtle.TurnRight();
Turtle.Move(200);
Turtle.TurnRight();
Turtle.Move(200);
Turtle.TurnRight();
Turtle.Move(200);
Turtle.TurnRight();
Turtle.Move(150);
Turtle.PenUp();
Turtle.Move(50);
Turtle.PenDown();
Turtle.Turn(45);
Turtle.Move(140);
Turtle.TurnRight();
Turtle.Move(140);
}
|
Мой результат выглядит так:
Если рисунки будут довольно большими, то время рисования может занимать много времени. Для изменения скорости движения черепашки существует переменная Speed. Диапазон изменения от 1 до 10, по умолчанию 5.
Вот так выглядит финальный код программы рисования дома:
using Microsoft.SmallBasic.Library;
namespace ConsoleTemplate
{
class Program
{
static void Main(string[] args)
{
Turtle.Speed = 7;
Turtle.Turn(180);
Turtle.Move(100);
Turtle.TurnLeft();
Turtle.Move(100);
Turtle.TurnLeft();
Turtle.Move(100);
Turtle.TurnLeft();
Turtle.Move(100);
Turtle.PenUp();
Turtle.Move(50);
Turtle.PenDown();
Turtle.TurnRight();
Turtle.Move(50);
Turtle.TurnRight();
Turtle.Move(200);
Turtle.TurnRight();
Turtle.Move(200);
Turtle.TurnRight();
Turtle.Move(200);
Turtle.TurnRight();
Turtle.Move(150);
Turtle.PenUp();
Turtle.Move(50);
Turtle.PenDown();
Turtle.Turn(45);
Turtle.Move(140);
Turtle.TurnRight();
Turtle.Move(140);
}
}
}
|
|