Early Hacker
How do I make an early hacker?
Created this as an answer for This code golf question was definitely going for the late 80's early 90's hacker screens. Even made a super serious domain for it http://guihacker.com and yeah this totally could be done in 100% css but I love my canvas.. What is a early hacker? How do you make a early hacker? This script and codes were developed by Loktar on 20 August 2022, Saturday.
Early Hacker - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>Early Hacker</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <canvas class='hacker-3d-shiz'></canvas>
<canvas class='bars-and-stuff'></canvas>
<div class="output-console"></div> <script src="js/index.js"></script>
</body>
</html>
Early Hacker - Script Codes CSS Codes
@font-face { font-family: 'Source Code Pro'; font-style: normal; font-weight: 400; src: local('Source Code Pro'), local('SourceCodePro-Regular'), url(http://themes.googleusercontent.com/static/fonts/sourcecodepro/v4/mrl8jkM18OlOQN8JLgasDxM0YzuT7MdOe03otPbuUS0.woff) format('woff');
}
body { font-family: Source Code Pro; background:#000; color: #00FF00; margin:0; font-size: 13px;
}
canvas { position:absolute; top:0; left:0;
}
.bars-and-stuff{ left:66.6%;
}
.output-console { position:fixed; overflow:hidden;
}
p{margin:0}
Early Hacker - Script Codes JS Codes
var canvas = document.querySelector(".hacker-3d-shiz"), ctx = canvas.getContext("2d"), canvasBars = document.querySelector(".bars-and-stuff"), ctxBars = canvasBars.getContext("2d"), outputConsole = document.querySelector(".output-console");
canvas.width = (window.innerWidth/3)*2;
canvas.height = window.innerHeight / 3;
canvasBars.width = window.innerWidth/3;
canvasBars.height = canvas.height;
outputConsole.style.height = (window.innerHeight / 3) * 2 + 'px';
outputConsole.style.top = window.innerHeight / 3 + 'px'
/* Graphics stuff */
function Square(z) { this.width = canvas.width/2; if(canvas.height < 200){ this.width = 200; }; this.height = canvas.height; z = z || 0; this.points = [ new Point({ x: (canvas.width / 2) - this.width, y: (canvas.height / 2) - this.height, z: z }), new Point({ x: (canvas.width / 2) + this.width, y: (canvas.height / 2) - this.height, z: z }), new Point({ x: (canvas.width / 2) + this.width, y: (canvas.height / 2) + this.height, z: z }), new Point({ x: (canvas.width / 2) - this.width, y: (canvas.height / 2) + this.height, z: z })]; this.dist = 0;
}
Square.prototype.update = function () { for (var p = 0; p < this.points.length; p++) { this.points[p].rotateZ(0.001); this.points[p].z -= 3; if (this.points[p].z < -300) { this.points[p].z = 2700; } this.points[p].map2D(); }
}
Square.prototype.render = function () { ctx.beginPath(); ctx.moveTo(this.points[0].xPos, this.points[0].yPos); for (var p = 1; p < this.points.length; p++) { if (this.points[p].z > -(focal - 50)) { ctx.lineTo(this.points[p].xPos, this.points[p].yPos); } } ctx.closePath(); ctx.stroke(); this.dist = this.points[this.points.length - 1].z;
};
function Point(pos) { this.x = pos.x - canvas.width / 2 || 0; this.y = pos.y - canvas.height / 2 || 0; this.z = pos.z || 0; this.cX = 0; this.cY = 0; this.cZ = 0; this.xPos = 0; this.yPos = 0; this.map2D();
}
Point.prototype.rotateZ = function (angleZ) { var cosZ = Math.cos(angleZ), sinZ = Math.sin(angleZ), x1 = this.x * cosZ - this.y * sinZ, y1 = this.y * cosZ + this.x * sinZ; this.x = x1; this.y = y1;
}
Point.prototype.map2D = function () { var scaleX = focal / (focal + this.z + this.cZ), scaleY = focal / (focal + this.z + this.cZ); this.xPos = vpx + (this.cX + this.x) * scaleX; this.yPos = vpy + (this.cY + this.y) * scaleY;
};
// Init graphics stuff
var squares = [], focal = canvas.width / 2, vpx = canvas.width / 2, vpy = canvas.height / 2, barVals = [], sineVal = 0;
/* fake console stuff */
var commandStart = ['Performing DNS Lookups for', 'Searching ', 'Analyzing ', 'Estimating Approximate Location of ', 'Compressing ', 'Requesting Authorization From : ', 'wget -a -t ', 'tar -xzf ', 'Entering Location ', 'Compilation Started of ', 'Downloading '], commandParts = ['Data Structure', 'http://wwjd.com?au&2', 'Texture', 'TPS Reports', ' .... Searching ... ', 'http://zanb.se/?23&88&far=2', 'http://ab.ret45-33/?timing=1ww'], commandResponses = ['Authorizing ', 'Authorized...', 'Access Granted..', 'Going Deeper....', 'Compression Complete.', 'Compilation of Data Structures Complete..', 'Entering Security Console...', 'Encryption Unsuccesful Attempting Retry...', 'Waiting for response...', '....Searching...', 'Calculating Space Requirements ' ], isProcessing = false, processTime = 0, lastProcess = 0;
function render() { ctx.clearRect(0, 0, canvas.width, canvas.height); squares.sort(function (a, b) { return b.dist - a.dist; }); for (var i = 0, len = squares.length; i < len; i++) { squares[i].update(); squares[i].render(); } ctxBars.clearRect(0, 0, canvasBars.width, canvasBars.height); ctxBars.beginPath(); var y = canvasBars.height/6; ctxBars.moveTo(0,y); for(i = 0; i < canvasBars.width; i++){ var ran = (Math.random()*20)-10; if(Math.random() > 0.98){ ran = (Math.random()*50)-25 } ctxBars.lineTo(i, y + ran); } ctxBars.stroke(); for(i = 0; i < canvasBars.width; i+=20){ if(!barVals[i]){ barVals[i] = { val : Math.random()*(canvasBars.height/2), freq : 0.1, sineVal : Math.random()*100 }; } barVals[i].sineVal+=barVals[i].freq; barVals[i].val+=Math.sin(barVals[i].sineVal*Math.PI/2)*5; ctxBars.fillRect(i+5,canvasBars.height,15,-barVals[i].val); } requestAnimationFrame(render);
}
function consoleOutput(){ var textEl = document.createElement('p'); if(isProcessing){ textEl = document.createElement('span'); textEl.textContent += Math.random() + " "; if(Date.now() > lastProcess + processTime){ isProcessing = false; } }else{ var commandType = ~~(Math.random()*4); switch(commandType){ case 0: textEl.textContent = commandStart[~~(Math.random()*commandStart.length)] + commandParts[~~(Math.random()*commandParts.length)]; break; case 3: isProcessing = true; processTime = ~~(Math.random()*5000); lastProcess = Date.now(); default: textEl.textContent = commandResponses[~~(Math.random()*commandResponses.length)]; break; } } outputConsole.scrollTop = outputConsole.scrollHeight; outputConsole.appendChild(textEl); if (outputConsole.scrollHeight > window.innerHeight) { var removeNodes = outputConsole.querySelectorAll('*'); for(var n = 0; n < ~~(removeNodes.length/3); n++){ outputConsole.removeChild(removeNodes[n]); } } setTimeout(consoleOutput, ~~(Math.random()*200));
}
setTimeout(function(){ canvas.width = (window.innerWidth/3)*2; canvas.height = window.innerHeight / 3; canvasBars.width = window.innerWidth/3; canvasBars.height = canvas.height; outputConsole.style.height = (window.innerHeight / 3) * 2 + 'px'; outputConsole.style.top = window.innerHeight / 3 + 'px'; focal = canvas.width / 2; vpx = canvas.width / 2; vpy = canvas.height / 2; for (var i = 0; i < 15; i++) { squares.push(new Square(-300 + (i * 200))); } ctx.strokeStyle = ctxBars.strokeStyle = ctxBars.fillStyle = '#00FF00'; render(); consoleOutput();
}, 200);
window.addEventListener('resize', function(){ canvas.width = (window.innerWidth/3)*2; canvas.height = window.innerHeight / 3; canvasBars.width = window.innerWidth/3; canvasBars.height = canvas.height; outputConsole.style.height = (window.innerHeight / 3) * 2 + 'px'; outputConsole.style.top = window.innerHeight / 3 + 'px'; focal = canvas.width / 2; vpx = canvas.width / 2; vpy = canvas.height / 2; ctx.strokeStyle = ctxBars.strokeStyle = ctxBars.fillStyle = '#00FF00';
});
Developer | Loktar |
Username | loktar00 |
Uploaded | August 20, 2022 |
Rating | 4.5 |
Size | 4,213 Kb |
Views | 26,312 |
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 |
CSS eyes | 2,274 Kb |
Doom screen wipe effect | 134,265 Kb |
Rough Seas re-creation for compo | 3,643 Kb |
4th of July Fireworks | 3,156 Kb |
Circuit board pattern | 3,859 Kb |
Tribute to the C64 | 31,811 Kb |
Part 2 platformer tutorial | 2,911 Kb |
Slime Text | 3,861 Kb |
Scrolling Terrain and Shooting Stars | 3,165 Kb |
Bezier curve art | 2,185 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 |
Wikipedia Viewer | Thalpha | 4,426 Kb |
Svg sky | Omodev | 7,070 Kb |
Gradients | Karpovsystems | 2,394 Kb |
Fixed Scrolling Nav Bar | Philsinatra | 0 Kb |
Slider for stackoverflow | KKOKU | 3,222 Kb |
Drill-down Map | Good886 | 8,484 Kb |
Typefaces with descriptions | Megandoty | 2,944 Kb |
Loading Bar | Jaradlight | 2,333 Kb |
Flat buttons for Eliassen.com | Kdooley89 | 1,737 Kb |
Donut Chart example - MorrisJS | Capelo | 2,385 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!