Control

Size
2,855 Kb
Views
10,120

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 Previews

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]})
}
Control - Script Codes
Control - Script Codes
Home Page Home
Developer Gregory Potdevin
Username GregoryPotdevin
Uploaded October 01, 2022
Rating 3
Size 2,855 Kb
Views 10,120
Do you need developer help for Control?

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!

Gregory Potdevin (GregoryPotdevin) Script Codes
Create amazing marketing copy with AI!

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!