Подготовка_к_рисованию_в_стиле_ЛОГО
Квадрат
рисовать присвоить 200 0
Три_квадрата
рисовать присвоить 00 200
Салфетка
рисовать присвоить 200 200
Цветок
функция Квадрат
вперед 20
вправо 90
вперед 20
вправо 90
вперед 20
вправо 90
вперед 20
вправо 90
возврат
функция Три_квадрата
для 1;2;3
для 1;2;3;4
вперед 20
влево 90
следующий
вправо 90
не_рисовать
вперед 30
влево 90
снова_рисовать
следующий
возврат
функция Салфетка
для 1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36
для 1;2;3;4
вперед 50
вправо 90
следующий
вправо 10
следующий
возврат
функция Цветок
для 1;2;3;4;5;6;7;8
влево 45
вперед 20
вправо 45
вперед 50
вправо 45
вперед 20
вправо 90
вперед 20
вправо 45
вперед 50
вправо 45
вперед 20
следующий
возврат
функция Подготовка_к_рисованию_в_стиле_ЛОГО
присвоить _УГОЛ_ 0 // Угол направления черепашки в градусах
присвоить _УГОЛ_РАДИАНЫ_ 0 // Угол направления черепашки в радианах
присвоить _ЦВЕТ_ 10 // Цвет следа черепашки
присвоить _Х_ 100 _У_ 100 // Текущие координаты черепашки
присвоить _СМЕЩЕНИЕ_Х_ 20 _СМЕЩЕНИЕ_У_ 200 // Смещение осей координат
присвоить _РИСОВАНИЕ_ 1 // Режим рисования включен
присвоить _ПИ_ 3.141592653589 // Число "Пи"
возврат
функция рисовать_линию х1 у1 х2 у2
увеличить х1 [_СМЕЩЕНИЕ_Х_]
увеличить х2 [_СМЕЩЕНИЕ_Х_]
вычислить - у1 [_СМЕЩЕНИЕ_У_] [у1]
вычислить - у2 [_СМЕЩЕНИЕ_У_] [у2]
рисовать линия [х1] [у1] [х2] [у2]
возврат
функция вперед число
вычислить косинус врем [_УГОЛ_РАДИАНЫ_]
вычислить * врем [число] [врем]
вычислить + _Х2_ [_Х_] [врем]
вычислить синус врем [_УГОЛ_РАДИАНЫ_]
вычислить * врем [число] [врем]
вычислить + _У2_ [_У_] [врем]
если [_РИСОВАНИЕ_]
рисовать_линию [_Х_] [_У_] [_Х2_] [_У2_]
конец
присвоить _Х_ [_Х2_] _У_ [_У2_]
возврат
функция назад число
вычислить косинус врем [_УГОЛ_РАДИАНЫ_]
вычислить * врем [число] [врем]
вычислить - _Х2_ [_Х_] [врем]
вычислить синус врем [_УГОЛ_РАДИАНЫ_]
вычислить * врем [число] [врем]
вычислить - _У2_ [_У_] [врем]
если [_РИСОВАНИЕ_]
рисовать_линию [_Х_] [_У_] [_Х2_] [_У2_]
конец
присвоить _Х_ [_Х2_] _У_ [_У2_]
возврат
функция влево число
увеличить _УГОЛ_ [число]
вычислить остаток _УГОЛ_ [_УГОЛ_] 360
вычислить / врем [_УГОЛ_] 180
вычислить * _УГОЛ_РАДИАНЫ_ [врем] [_ПИ_]
возврат
функция вправо число
вычислить - _УГОЛ_ [_УГОЛ_] [число]
вычислить остаток _УГОЛ_ [_УГОЛ_] 360
вычислить / врем [_УГОЛ_] 180
вычислить * _УГОЛ_РАДИАНЫ_ [врем] [_ПИ_]
возврат
функция снова_рисовать
присвоить _РИСОВАНИЕ_ 1
возврат
функция не_рисовать
присвоить _РИСОВАНИЕ_ 0
возврат
|
/* Реализация некоторых команд ЛОГО. Версия для исполнения в JavaScript.*/
/* Программа КОНЦЕПТ, 28.01.2016, www.gendoc.ru */
/* За основу взято: http://fio.wl.dvgu.ru/images/Vipusk22/Lopatnuk/Logo/Lessons/raznoe.htm*/
/*********** Начало программы ***********/
Podgotovka_k_risovaniju_v_stile_LOGO();
Kvadrat();
ConceptDrawSet( 200 ,0);
Tri_kvadrata();
ConceptDrawSet( 00 ,200);
Salfetka();
ConceptDrawSet( 200 ,200);
Cvetok( );
/*********** Примеры фигур с использованием "черепашьих" команд ЛОГО ***********/
function Kvadrat() {
vpered( 20);
vpravo( 90 );
vpered( 20);
vpravo( 90);
vpered( 20);
vpravo( 90);
vpered( 20);
vpravo( 90);
};
function Tri_kvadrata() {
for (var ConceptLoopObj1=1;ConceptLoopObj1<=3;ConceptLoopObj1++) {
for (var ConceptLoopObj2=1;ConceptLoopObj2<=4;ConceptLoopObj2++) {
vpered( 20);
vlevo( 90);
};
vpravo( 90);
ne_risovat();
vpered( 30);
vlevo( 90);
snova_risovat();
};
};
function Salfetka() {
for (var ConceptLoopObj1=1;ConceptLoopObj1<=36;ConceptLoopObj1++) {
for (var ConceptLoopObj2=1;ConceptLoopObj2<=4;ConceptLoopObj2++) {
vpered( 50);
vpravo( 90);
};
vpravo( 10);
};
};
function Cvetok() {
for (var ConceptLoopObj1=1;ConceptLoopObj1<=8;ConceptLoopObj1++) {
vlevo( 45);
vpered( 20);
vpravo( 45);
vpered( 50);
vpravo( 45);
vpered( 20);
vpravo( 90);
vpered( 20);
vpravo( 45);
vpered( 50);
vpravo( 45);
vpered( 20);
};
};
/****************************************************/
/*** РЕАЛИЗАЦИЯ МЕХАНИЗМА РИСОВАНИЯ В СТИЛЕ ЛОГО ****/
/****************************************************/
/*********** Инициализация внутренних переменных ЛОГО ************/
function Podgotovka_k_risovaniju_v_stile_LOGO() {
_UGOL_= 0; /* Угол направления черепашки в градусах*/
_UGOL_RADIANY_= 0; /* Угол направления черепашки в радианах*/
_CVET_= 10; /* Цвет следа черепашки*/
_H_= 100; _U_= 100; /* Текущие координаты черепашки*/
_SMESHCHENIE_H_= 20; _SMESHCHENIE_U_= 200; /* Смещение осей координат*/
_RISOVANIE_= 1; /* Режим рисования включен*/
_PI_= 3.141592653589; /* Число "Пи"*/
};
/*********** Вспомогательная функция ************/
function risovat_liniju( h1 ,u1 ,h2 ,u2) {
h1 +=_SMESHCHENIE_H_;
h2 +=_SMESHCHENIE_H_;
u1= _SMESHCHENIE_U_ -u1;
u2= _SMESHCHENIE_U_ -u2;
ConceptDrawLine( h1 ,u1 ,h2 ,u2);
};
/*********** Реализаця "черепашьих" команд ЛОГО ************/
function vpered( chislo) {
vrem=Math.cos( _UGOL_RADIANY_);
vrem= chislo *vrem;
_H2_= _H_ +vrem;
vrem=Math.sin( _UGOL_RADIANY_);
vrem= chislo *vrem;
_U2_= _U_ +vrem;
/* >*******/
/* >_УГОЛ_=[_УГОЛ_] _УГОЛ_РАДИАНЫ_=[_УГОЛ_РАДИАНЫ_]*/
/* >_Х_=[_Х2_] _У_=[_У2_]*/
if ( _RISOVANIE_) {
risovat_liniju( _H_ ,_U_ ,_H2_ ,_U2_);
};
_H_= _H2_; _U_= _U2_;
};
function nazad( chislo) {
vrem=Math.cos( _UGOL_RADIANY_);
vrem= chislo *vrem;
_H2_= _H_ -vrem;
vrem=Math.sin( _UGOL_RADIANY_);
vrem= chislo *vrem;
_U2_= _U_ -vrem;
if ( _RISOVANIE_) {
risovat_liniju( _H_ ,_U_ ,_H2_ ,_U2_);
};
_H_= _H2_; _U_= _U2_;
};
function vlevo( chislo) {
_UGOL_ +=chislo;
_UGOL_= _UGOL_ %360;
vrem= _UGOL_ /180 ;
_UGOL_RADIANY_= vrem *_PI_ ;
};
function vpravo( chislo) {
_UGOL_= _UGOL_ -chislo;
_UGOL_= _UGOL_ %360;
vrem= _UGOL_ /180 ;
_UGOL_RADIANY_= vrem *_PI_ ;
};
function snova_risovat() {
_RISOVANIE_= 1;
};
function ne_risovat() {
_RISOVANIE_= 0;
};
|