From 80d98afc397119162da91a6f54c39e2074503e13 Mon Sep 17 00:00:00 2001 From: tonystr Date: Wed, 7 Mar 2018 20:44:40 +0100 Subject: [PATCH] ooop ie doo b --- css/style.css | 127 +++++------------- games_and_tools/simple_math_parser.html | 126 +++++++++++++++++ scripts/stringMath.js | 89 ++++++++++++ test/index.html | 171 ------------------------ 4 files changed, 252 insertions(+), 261 deletions(-) create mode 100644 games_and_tools/simple_math_parser.html create mode 100644 scripts/stringMath.js delete mode 100644 test/index.html diff --git a/css/style.css b/css/style.css index 7cdadeb..091e08c 100644 --- a/css/style.css +++ b/css/style.css @@ -24,7 +24,7 @@ body{ min-height: calc(100% - 54px); } #wrapper-blog{ - min-height: calc(100% - 150px); + min-height: calc(100% - 184px); } /* Global */ @@ -524,100 +524,46 @@ header .nonlight{ content:'Hide'; } -/* Loading */ - -@-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(0deg); /* IE 9 */ - transform: rotate(0deg); /* Firefox 16+, IE 10+, Opera */ - } - 100% { - -webkit-transform: rotate(360deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(360deg); /* IE 9 */ - transform: rotate(360deg); /* Firefox 16+, IE 10+, Opera */ - } -} -@keyframes spin { - 0% { - -webkit-transform: rotate(0deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(0deg); /* IE 9 */ - transform: rotate(0deg); /* Firefox 16+, IE 10+, Opera */ - } - 100% { - -webkit-transform: rotate(360deg); /* Chrome, Opera 15+, Safari 3.1+ */ - -ms-transform: rotate(360deg); /* IE 9 */ - transform: rotate(360deg); /* Firefox 16+, IE 10+, Opera */ - } -} - -#loader-wrapper{ - height:100%; - width:100%; -} - -.loaded #loader-wrapper{ - /*-webkit-transform: translatey(-100%); /* Chrome, Opera 15+, Safari 3.1+ */ - /* -ms-transform: translatey(-100%); /* IE 9 */ - /* transform: translatey(-100%); /* Firefox 16+, IE 10+, Opera */ - - -webkit-transition: all 1s 0.2s ease; - transition: all 1s 0.2s ease; - pointer-events: none; - height:0%; -} - -.loader{ - height:150%; - width:2%; - position:absolute; - top:-5%; - display: block; - z-index:-1; - box-shadow: 0 0 18px #000000af; -} - -.lod-right{ -background-color:#7588FF -} - -.lod-left{ -background-color:#F14165 -} - -#lod-1{ - -webkit-transform: rotate(5deg); - -moz-transform: rotate(5deg); - -ms-transform: rotate(5deg); - -o-transform: rotate(5deg); -} -#lod-2{ - -webkit-transform: rotate(-3deg); - -moz-transform: rotate(-3deg); - -ms-transform: rotate(-3deg); - -o-transform: rotate(-3deg); +#math-parser{ + display:flex; + justify-content: space-between; + font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier; } -#lod-3{ - -webkit-transform: rotate(2deg); - -moz-transform: rotate(2deg); - -ms-transform: rotate(2deg); - -o-transform: rotate(2deg); +#math-parser #equals-pynt{ + width:80px; + text-align:center; + font-size:3.3em; + transform: translateY(-16%); +} +#math-parser textarea{ + width:46%; + height:3em; + background-color:#2D313D; + border:none; + border-radius:6px; + box-shadow: 0 3px 13px #00000057; + color:#ffffff; + resize:none; + padding-bottom:0px; + padding-top:1.8em; + padding-left:1.55em; + border: 2px dashed #F1416500; } -#lod-4{ - -webkit-transform: rotate(-10deg); - -moz-transform: rotate(-10deg); - -ms-transform: rotate(-10deg); - -o-transform: rotate(-10deg); +#math-parser textarea::placeholder { + color: #7588FF; } - -.no-js #loader-wrapper { - display: none; +#math-parser textarea:focus { + outline: none; + border: 2px solid #F14165; + border-radius:8px; } -.loaded .loader{ - -webkit-transition: all 1s 0.2s ease; - transition: all 1s 0.2s ease; - top:-100%; +.il-code{ + background-color:#2D313D; + padding-left:0.3em; + padding-right:0.3em; + border-radius:3px; + font-family: Inconsolata, Monaco, Consolas, 'Courier New', Courier; } /* Social Media */ @@ -754,6 +700,7 @@ pink = #FFC7FF margin-left:10%; margin-top:18px; width:80%; + margin-bottom:16px; } .link-nexprev{ color:#F14165; diff --git a/games_and_tools/simple_math_parser.html b/games_and_tools/simple_math_parser.html new file mode 100644 index 0000000..4b56cdc --- /dev/null +++ b/games_and_tools/simple_math_parser.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TonyStr - + + + + + + + + + + +
+
+
+ - - - - - - - - - - - +
+ +
+ +
+
+
+
+

Simple Math Parser

+

7. Mar 2018

+
+
+

+ Hello! I can divide /, multiply *, add +, subtract -, power ^ and enclose + segments within paranthesises (). +

+
+ + = + +
+
+
+
+
+ + + + diff --git a/scripts/stringMath.js b/scripts/stringMath.js new file mode 100644 index 0000000..a5e9d8f --- /dev/null +++ b/scripts/stringMath.js @@ -0,0 +1,89 @@ + +/** + * Parses a string for mathematical equations, and returns the answer + * @param {String} str Input string containing mathematical expression +*/ +stringMath = function() { + let string = document.getElementById('input').value; + + let variables = []; + let callStack = []; + let number = ""; + let action = ""; + let stage = 0; + let stagemax = 1; + let sign = 1; + + for (let i = 0; i < string.length; i++) { + switch (string.charAt(i)) { + + // Operator + case (string.charAt(i).match(`[+\\-*/^]`) || false).input: + let numset = false; + if (number.length > 0) { + variables.push(Number(number) * sign); + sign = 1; + number = ""; + numset = true; + } + + let tertiary = string.charAt(i).match(`\\^`) && true; + let secondary = string.charAt(i).match(`[*/]`) && true; + let stg = stage*3 + Number(secondary) + Number(tertiary) * 2; + let operator = string.charAt(i); + + if (operator == "-") { + sign = -1; + operator = "+"; + if (!numset) operator = ""; + } + + if (operator) { + callStack.push(stg + operator); + stagemax = stg > stagemax ? stg : stagemax; + console.log("operator"); + } + break; + + // Digit + case (string.charAt(i).match(`[0-9.]`) || false).input: + number += string.charAt(i); + console.log("digit"); + break; + + // Paranthesises + case "(": stage++; break; + case ")": stage--; + if (stage < 0) { + return "Error: Non-matched closing bracket(s)"; + } + break; + } + } + + if (number) variables.push(Number(number) * sign); + + if(variables.length > 1) { + for (let stage = stagemax; stage >= 0; stage--) { + if (callStack.length < 1) break; + for (let i = 0; i < callStack.length; i++) { + switch (callStack[i]) { + + case stage + "*": variables[i] = (variables[i] * Number(variables[i+1])); callStack.splice(i, 1); variables.splice(i--+1, 1); break; + case stage + "/": variables[i] = (variables[i] / Number(variables[i+1])); callStack.splice(i, 1); variables.splice(i--+1, 1); break; + case stage + "+": variables[i] = (variables[i] + Number(variables[i+1])); callStack.splice(i, 1); variables.splice(i--+1, 1); break; + case stage + "-": variables[i] = (variables[i] - Number(variables[i+1])); callStack.splice(i, 1); variables.splice(i--+1, 1); break; + case stage + "^": variables[i] = Math.pow(variables[i], Number(variables[i+1])); callStack.splice(i, 1); variables.splice(i--+1, 1); break; + + } + } + } + } + + if (isNaN(variables[0]) || variables[0] === undefined || variables[0] === null ) { + if (variables.length < 1) document.getElementById('output').value = ""; + + } else { + document.getElementById('output').value = variables[0]; + } +} diff --git a/test/index.html b/test/index.html deleted file mode 100644 index 98ac135..0000000 --- a/test/index.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - Tony Strømsnæs - - - - - - - - -
-
-
- - - - - - - - - - - - -
- -
- -
-
-

Programming from
NUL to DEL

-
-
- - - -
- -
-

- Games & Tools -

-
-
- -
-
- - -

IK extension for Gamemaker

-
-

This Gamemaker extension contains 27 adpative functions for easily operating and visualizing - Inverse Kinematics

-
-
- - -

UpDownDuckAround

-
-

This brutal game, made for the 4th GMC gamejam, forces you to controll two characters heading in opposite directions

-
-
- - -

IK Tutorial for gamemaker

-
-

This tutorial project, made for and in GameMaker, teaches the user how to use - Inverse Kinematics

-
-
-
- - -
- -