Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <img src="main.png">
- <script>
- //Тут я насоздавал функции для работы, использую я их в конце. Там много коментариев
- function print(str){
- alert(str);
- }
- function input(str){
- return prompt(str);
- }
- let p = {};
- function StartBlock(){
- this.child = null;
- this.run = function(){
- if(this.child != null){
- this.child.run();
- }
- };
- }
- function PrintBlock(str,v=true){
- this.child = null;
- this.str = str;
- this.var = v;
- this.run = function(){
- if(this.var){
- print(p[this.str]);
- }
- else{
- print(this.str);
- }
- //Run next
- if(this.child != null){
- this.child.run();
- }
- };
- }
- function PromptBlock(name,num=false,str=""){
- this.child = null;
- this.name = name;
- this.num = num;
- this.str = str;
- this.run = function(){
- inp = input(this.str);
- if(this.num){
- inp = parseFloat(inp);
- }
- p[this.name]=inp;
- //Run next
- if(this.child != null){
- this.child.run();
- }
- };
- }
- function IfBlock(str="true"){
- this.childTrue = null;
- this.childFalse = null;
- this.str = str;
- this.run = function(){
- if(new Function("return "+this.str)()){
- if(this.childTrue != null){
- this.childTrue.run();
- }
- }
- else{
- if(this.childFalse != null){
- this.childFalse.run();
- }
- }
- };
- }
- function ForBlock(i=0,state="i<10",method="i++"){
- this.childRun = null;
- this.childEnd = null;
- this.i = i;
- this.state = state;
- this.method = method;
- this.run = function(){
- for(j=this.i;;){
- p["i"] = j;
- if(!new Function("return "+this.state.replace("i",j))()){
- break;
- }
- if(this.childRun != null){
- this.childRun.run();
- }
- new Function(this.method.replace("i","j"))();
- }
- if(this.childEnd != null){
- this.childEnd.run();
- }
- };
- }
- function RunBlock(str){
- this.child = null;
- this.str = str;
- this.run = function(){
- eval(this.str);
- //Run next
- if(this.child != null){
- this.child.run();
- }
- };
- }
- //Вот те самые блоки! Да, их очень просто можно создавать.
- //При помощи этого можно создавать интерактивные площадки,
- //где пользователь может создать всё что угодно. Что-то вроде блок-схем
- let start = new StartBlock(); //Блок который дает начало, ничего не делает кроме как запускает первый блок.
- let block1 = new PrintBlock("Hello!",false); //Выводит на экран значение. Если стоит false, выводит строку. Если убрать, выводит переменную.
- let block2 = new PromptBlock("a",true,"Enter: "); //Запрашивает у пользователя значение. Первый атрибут - название переменной. Второй - нужно ли перевести значение в число. Третий - что вывести в окне запроса
- let block3 = new IfBlock("p['a'] > 0") //Стандартный блок проверки. Внутрь вставляется конструкция которая вернет true или false. Временно, для доступа к переменным нужно писать p['a'], вместо a
- let block4 = new ForBlock(1,"i<=p['a']","i++"); //Блок цикла. Всё вводится как при создании обычного цикла. Такая же проблема как и у if, переменные вводить как p['a']
- let block5 = new RunBlock("console.log(p['i'])"); //Универсальный блок. Выполняет команду которую ему передать. Ввод переменных такой же
- let block6 = new PrintBlock("Exit",false); //Ещё один принт
- start.child = block1; //Указываем стартовому блоку чтобы он выполнил блок1
- //Та же процедура для принта и инпута
- block1.child = block2;
- block2.child = block3;
- //А это блок if
- block3.childTrue = block4; //Если вернулась истина выполнить блок4
- block3.childFalse = block6; //Иначе выполнить блок6 (указывать что первый что второй не обязательно, если не будет блока - ничего не произойдёт)
- //А теперь цикл
- block4.childRun = block5; //Этот блок выполнять в начале итерации (а он может ссылаться на любой другой, только желательно не на этот цикл иначе всё зависнет)
- block4.childEnd = block6; //А этот блок выполнится когда цикл завершит работу
- start.run(); //Ну и запускаем наш скрипт
- //Всё что вы сейчас видите создал чел с ником Prevter. Если что, вот список контактов:
- //E-mail: prevter@gmail.com
- //Discord: Prevter#9642
- //Telegram: @PrevterYT
- //Напиши даже просто так если ты это нашёл.
- //Я люблю делать разную фигню, и поэтому будет интересно что об этом думают разные люди.
- </script>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement