Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 5.68 KB | None | 0 0
  1. <html>
  2.     <img src="main.png">
  3.     <script>
  4.         //Тут я насоздавал функции для работы, использую я их в конце. Там много коментариев
  5.         function print(str){
  6.             alert(str);
  7.         }
  8.         function input(str){
  9.             return prompt(str);
  10.         }
  11.        
  12.         let p = {};
  13.        
  14.         function StartBlock(){
  15.             this.child = null;
  16.            
  17.             this.run = function(){
  18.                 if(this.child != null){
  19.                     this.child.run();
  20.                 }
  21.             };
  22.         }
  23.         function PrintBlock(str,v=true){
  24.             this.child = null;
  25.             this.str = str;
  26.             this.var = v;
  27.            
  28.             this.run = function(){
  29.                 if(this.var){
  30.                     print(p[this.str]);
  31.                 }
  32.                 else{
  33.                     print(this.str);
  34.                 }
  35.                 //Run next
  36.                 if(this.child != null){
  37.                     this.child.run();
  38.                 }
  39.             };
  40.         }
  41.         function PromptBlock(name,num=false,str=""){
  42.             this.child = null;
  43.             this.name = name;
  44.             this.num = num;
  45.             this.str = str;
  46.            
  47.             this.run = function(){
  48.                 inp = input(this.str);
  49.                 if(this.num){
  50.                     inp = parseFloat(inp);
  51.                 }
  52.                 p[this.name]=inp;
  53.                 //Run next
  54.                 if(this.child != null){
  55.                     this.child.run();
  56.                 }
  57.             };
  58.         }
  59.         function IfBlock(str="true"){
  60.             this.childTrue = null;
  61.             this.childFalse = null;
  62.             this.str = str;
  63.            
  64.             this.run = function(){
  65.                 if(new Function("return "+this.str)()){
  66.                     if(this.childTrue != null){
  67.                         this.childTrue.run();
  68.                     }
  69.                 }
  70.                 else{
  71.                     if(this.childFalse != null){
  72.                         this.childFalse.run();
  73.                     }
  74.                 }
  75.             };
  76.         }
  77.         function ForBlock(i=0,state="i<10",method="i++"){
  78.             this.childRun = null;
  79.             this.childEnd = null;
  80.             this.i = i;
  81.             this.state = state;
  82.             this.method = method;
  83.            
  84.             this.run = function(){
  85.                 for(j=this.i;;){
  86.                     p["i"] = j;
  87.                     if(!new Function("return "+this.state.replace("i",j))()){
  88.                         break;
  89.                     }
  90.                     if(this.childRun != null){
  91.                         this.childRun.run();
  92.                     }
  93.                     new Function(this.method.replace("i","j"))();
  94.                 }
  95.                 if(this.childEnd != null){
  96.                     this.childEnd.run();
  97.                 }
  98.             };
  99.         }
  100.         function RunBlock(str){
  101.             this.child = null;
  102.             this.str = str;
  103.            
  104.             this.run = function(){
  105.                 eval(this.str);
  106.                 //Run next
  107.                 if(this.child != null){
  108.                     this.child.run();
  109.                 }
  110.             };
  111.         }
  112.        
  113.         //Вот те самые блоки! Да, их очень просто можно создавать.
  114.         //При помощи этого можно создавать интерактивные площадки,
  115.         //где пользователь может создать всё что угодно. Что-то вроде блок-схем
  116.        
  117.         let start = new StartBlock(); //Блок который дает начало, ничего не делает кроме как запускает первый блок.
  118.         let block1 = new PrintBlock("Hello!",false); //Выводит на экран значение. Если стоит false, выводит строку. Если убрать, выводит переменную.
  119.         let block2 = new PromptBlock("a",true,"Enter: "); //Запрашивает у пользователя значение. Первый атрибут - название переменной. Второй - нужно ли перевести значение в число. Третий - что вывести в окне запроса
  120.         let block3 = new IfBlock("p['a'] > 0") //Стандартный блок проверки. Внутрь вставляется конструкция которая вернет true или false. Временно, для доступа к переменным нужно писать p['a'], вместо a
  121.         let block4 = new ForBlock(1,"i<=p['a']","i++"); //Блок цикла. Всё вводится как при создании обычного цикла. Такая же проблема как и у if, переменные вводить как p['a']
  122.         let block5 = new RunBlock("console.log(p['i'])"); //Универсальный блок. Выполняет команду которую ему передать. Ввод переменных такой же
  123.        
  124.         let block6 = new PrintBlock("Exit",false); //Ещё один принт
  125.        
  126.         start.child = block1; //Указываем стартовому блоку чтобы он выполнил блок1
  127.         //Та же процедура для принта и инпута
  128.         block1.child = block2;
  129.         block2.child = block3;
  130.        
  131.         //А это блок if
  132.         block3.childTrue = block4; //Если вернулась истина выполнить блок4
  133.         block3.childFalse = block6; //Иначе выполнить блок6 (указывать что первый что второй не обязательно, если не будет блока - ничего не произойдёт)
  134.        
  135.         //А теперь цикл
  136.         block4.childRun = block5; //Этот блок выполнять в начале итерации (а он может ссылаться на любой другой, только желательно не на этот цикл иначе всё зависнет)
  137.         block4.childEnd = block6; //А этот блок выполнится когда цикл завершит работу
  138.         start.run(); //Ну и запускаем наш скрипт
  139.        
  140.         //Всё что вы сейчас видите создал чел с ником Prevter. Если что, вот список контактов:
  141.         //E-mail: prevter@gmail.com
  142.         //Discord: Prevter#9642
  143.         //Telegram: @PrevterYT
  144.        
  145.         //Напиши даже просто так если ты это нашёл.
  146.         //Я люблю делать разную фигню, и поэтому будет интересно что об этом думают разные люди.
  147.     </script>
  148. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement