Control
How do I make an control?
Forked from Gregory Potdevin's Pen bpxKQM.. What is a control? How do you make a control? This script and codes were developed by Gregory Potdevin on 01 October 2022, Saturday.
Control - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Control</title>
</head>
<body> <button onclick="refresh()">refresh</button>
<pre id="level"></pre> <script src="js/index.js"></script>
</body>
</html>
Control - Script Codes JS Codes
var SIZE = 6
var SCREEN_SCALE = 0.6
var BALL_SPEED = 0.4
var HAS_GRAVITY = false
var DIFFERENT_OBS = 3 // Max 3 different obstacles
var PATTERNS = [ "circle2", "circle2_medium", "circle4", "circle4_medium", "circle4_bicolor", "circle4_bicolor_medium", "circle_giga", "circle", "circle_medium", "circle_mini", "gears", "square", "triangle1", "triangle2", "sun", "circle8", "funky_circle8", "step_circle8", "doublecircle", "doublecircle_bigleft", "doublecircle_bigright", "circle_doublecross", "cross_left", "cross_right", "midcross", "spikes", "spikes4", "balls_spiral", "balls_x", "balls_infinity", "line_doubletrio", "sun_spikes1", "sun_spikes2", "bw_mini_triangle", "line_trio", "specialcircle1", "specialcircle2", "specialcircle3", "elevator", "horizontal_line", "horizontal_line2", "square_path", "bw_horizontal", "vertical_infinity",
]
function extraAngle(pattern){ switch(pattern){ case "spiral": return 0; default: return 0; }
}
function tapSize(pattern, taps){ switch(pattern){ case "triangle1": case "triangle2": return -taps*60 case "circle2": case "circle2_medium": case "bw_horizontal": return 180 case "sun_spikes1": case "sun_spikes2": return 45 case "elevator": return 22.5 case "vertical_infinity": return 45 default: return -taps*90 }
}
function tapsInside(pattern){ switch(pattern){ case "circle_giga": case "circle": case "circle_medium": case "circle_mini": case "square": case "specialcircle1": case "specialcircle2": case "specialcircle3": case "circle4": case "circle4_medium": case "gears": return 2; case "triangle1": case "triangle2": return 3; case "balls_spiral": return 2; case "bw_mini_triangle": case "line_trio": case "line_doubletrio": return 2; case "circle2": case "circle2_medium": return 1; case "elevator": return 6; case "horizontal_line": return 3; case "square_path": return 2; case "vertical_infinity": return 4 default: return 0; }
}
function randomLevel(){ var level = ""; level += ' // CONTROL XXX\n' level += ' {ballSpeed: ' + BALL_SPEED //+ ', screenScale: ' + SCREEN_SCALE + ', obstacles:[\n' var gravityAngle = 0 var baseAngle = 0 var obstacles = (new Array(DIFFERENT_OBS)) for(var i=0; i<obstacles.length; i++) obstacles[i] = randomEntry(PATTERNS); var prev = null var prevCnt = 0 var taps = 0 // Pick 3 for(var i=0; i<SIZE || (HAS_GRAVITY && gravityAngle != 0); i++){ var pattern; var tries = 5; do { pattern = randomEntry(obstacles); } while((prev == pattern) && (prevCnt >= 2) && tries-->0); if (prev == pattern) prevCnt++; else prevCnt = 1; prev = pattern; taps += Math.random() < 0.5 ? 1 : 2; if (i == 0 && taps == 0) taps = 1; // Always turn the first one if (i > 0) { if (i < SIZE-1){ gravityAngle += Math.random() < 0.5 ? -45 : 45; if (gravityAngle >= 180) gravityAngle -= 45; else if (gravityAngle <= -180) gravityAngle += 45; } else { if (gravityAngle < 0) gravityAngle += 45; else if (gravityAngle > 0) gravityAngle -= 45; } } var entry = { type: pattern, speed: 1, gravityAngle: HAS_GRAVITY ? gravityAngle : undefined, baseAngle: extraAngle(pattern) + tapSize(pattern, taps), } taps += tapsInside(pattern) level += ' ' + JSON.stringify(entry) + ',\n' } level += ' ]},'; return level;
}
var el = document.getElementById("level");
el.innerHTML = randomLevel()
function refresh(){ var el = document.getElementById("level"); el.innerHTML = randomLevel()
}
function lerp(ratio, start, end){ return start + ratio * (end - start)
}
function roundDecimals(value){ return Math.round(value * 100) / 100
}
function randomEntry(arr){ return arr[Math.floor(Math.random()*arr.length)]
}
function shuffle(a) { var j, x, i; for (i = a.length; i; i -= 1) { j = Math.floor(Math.random() * i); x = a[i - 1]; a[i - 1] = a[j]; a[j] = x; } return a
}
function randomizeColors(colors){ var newColors = shuffle([1, 2, 3, 4]) return colors.map(function(color){return newColors[color]})
}
Developer | Gregory Potdevin |
Username | GregoryPotdevin |
Uploaded | October 01, 2022 |
Rating | 3 |
Size | 2,855 Kb |
Views | 10,120 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
CheckboxFilter | 5,749 Kb |
Turn | 2,437 Kb |
Searchkit 0.8 | 4,227 Kb |
Line | 1,781 Kb |
HTML Select | 1,362 Kb |
Shape Maker | 2,056 Kb |
RangeInputFilter | 5,221 Kb |
A Pen by Gregory Potdevin | 2,432 Kb |
Page Numbers generator | 3,330 Kb |
Guass | 1,605 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
Menubar compass mixin | Michaelparenteau | 4,925 Kb |
Fluid Responsive Typography | Jonmilner | 4,205 Kb |
A Pen by John Malc | F789gh | 1,420 Kb |
Login-ng-modal | Heedoo | 3,566 Kb |
How to add Css Fold Notes In Blogger By Askwithloud.com | Askwithloud | 2,280 Kb |
Practice using Wixel | Emnk | 3,057 Kb |
Scroll Arrow | Robooneus | 4,437 Kb |
Working around OS X Dynamic Scrollbars | Jrjenk | 2,279 Kb |
Blog | Rottingroom | 1,430 Kb |
Mobile Nav Menu | AliKlein | 4,745 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!