189 lines
3.8 KiB
JavaScript
189 lines
3.8 KiB
JavaScript
const langs = [
|
||
"Hello World",
|
||
"مرحبا بالعالم",
|
||
"Salam Dünya",
|
||
"Прывітанне Сусвет",
|
||
"Здравей свят",
|
||
"ওহে বিশ্ব",
|
||
"Zdravo svijete",
|
||
"Hola món",
|
||
"Kumusta Kalibutan",
|
||
"Ahoj světe",
|
||
"Helo Byd",
|
||
"Hej Verden",
|
||
"Hallo Welt",
|
||
"Γειά σου Κόσμε",
|
||
"Hello World",
|
||
"Hello World",
|
||
"Hola Mundo",
|
||
"Tere, Maailm",
|
||
"Kaixo Mundua",
|
||
"سلام دنیا",
|
||
"Hei maailma",
|
||
"Bonjour le monde",
|
||
"Dia duit an Domhan",
|
||
"Ola mundo",
|
||
"હેલો વર્લ્ડ",
|
||
"Sannu Duniya",
|
||
"नमस्ते दुनिया",
|
||
"Hello World",
|
||
"Pozdrav svijete",
|
||
"Bonjou Mondyal la",
|
||
"Helló Világ",
|
||
"Բարեւ աշխարհ",
|
||
"Halo Dunia",
|
||
"Ndewo Ụwa",
|
||
"Halló heimur",
|
||
"Ciao mondo",
|
||
"שלום עולם",
|
||
"こんにちは世界",
|
||
"Hello World",
|
||
"Გამარჯობა მსოფლიო",
|
||
"Сәлем Әлем",
|
||
"សួស្តីពិភពលោក",
|
||
"ಹಲೋ ವರ್ಲ್ಡ್",
|
||
"안녕하세요 월드",
|
||
"Ciao mondo",
|
||
"ສະບາຍດີຊາວໂລກ",
|
||
"Labas pasauli",
|
||
"Sveika pasaule",
|
||
"Hello World",
|
||
"Kia Ora",
|
||
"Здраво свету",
|
||
"ഹലോ വേൾഡ്",
|
||
"Сайн уу",
|
||
"हॅलो वर्ल्ड",
|
||
"Hai dunia",
|
||
"Hello dinja",
|
||
"မင်္ဂလာပါကမ္ဘာလောက",
|
||
"नमस्कार संसार",
|
||
"Hallo Wereld",
|
||
"Hei Verden",
|
||
"Moni Dziko Lapansi",
|
||
"ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ ਦੁਨਿਆ",
|
||
"Witaj świecie",
|
||
"Olá Mundo",
|
||
"Salut Lume",
|
||
"Привет, мир",
|
||
"හෙලෝ වර්ල්ඩ්",
|
||
"Ahoj svet",
|
||
"Pozdravljen, svet",
|
||
"Waad salaaman tihiin",
|
||
"Përshendetje Botë",
|
||
"Здраво Свете",
|
||
"Lefatše Lumela",
|
||
"Halo Dunya",
|
||
"Hej världen",
|
||
"Salamu, Dunia",
|
||
"ஹலோ வேர்ல்ட்",
|
||
"హలో వరల్డ్",
|
||
"Салом Ҷаҳон",
|
||
"สวัสดีชาวโลก",
|
||
"Kamusta Mundo",
|
||
"Selam Dünya",
|
||
"Привіт Світ",
|
||
"ہیلو ورلڈ",
|
||
"Salom Dunyo",
|
||
"Chào thế giới",
|
||
"העלא וועלט",
|
||
"Mo ki O Ile Aiye",
|
||
"你好,世界",
|
||
"你好,世界",
|
||
"你好,世界",
|
||
"Sawubona Mhlaba"
|
||
];
|
||
// hello world in 92 Languages
|
||
|
||
let charSize = 18;
|
||
let fallRate = charSize / 2;
|
||
let streams;
|
||
|
||
// -------------------------------
|
||
class Char {
|
||
constructor(value, x, y, speed) {
|
||
this.value = value;
|
||
this.x = x;
|
||
this.y = y;
|
||
this.speed = speed;
|
||
}
|
||
|
||
draw() {
|
||
const flick = random(100);
|
||
// 10 percent chance of flickering a number instead
|
||
if (flick < 10) {
|
||
fill(120, 30, 100);
|
||
text(round(random(9)), this.x, this.y);
|
||
} else {
|
||
text(this.value, this.x, this.y);
|
||
}
|
||
|
||
// fall down
|
||
this.y = this.y > height ? 0 : this.y + this.speed;
|
||
}
|
||
}
|
||
|
||
// -------------------------------------
|
||
class Stream {
|
||
constructor(text, x) {
|
||
const y = random(text.length);
|
||
const speed = random(2, 10);
|
||
this.chars = [];
|
||
|
||
for (let i = text.length; i >= 0; i--) {
|
||
this.chars.push(
|
||
new Char(text[i], x, (y + text.length - i) * charSize, speed)
|
||
);
|
||
}
|
||
}
|
||
|
||
draw() {
|
||
fill(120, 100, 100);
|
||
this.chars.forEach((c, i) => {
|
||
// 30 percent chance of lit tail
|
||
const lit = random(100);
|
||
if (lit < 30) {
|
||
if (i === this.chars.length - 1) {
|
||
fill(120, 30, 100);
|
||
} else {
|
||
fill(120, 100, 90);
|
||
}
|
||
}
|
||
|
||
c.draw();
|
||
});
|
||
}
|
||
}
|
||
|
||
function createStreams() {
|
||
// create random streams from langs that span the width
|
||
for (let i = 0; i < width; i += charSize) {
|
||
streams.push(new Stream(random(langs), i));
|
||
}
|
||
}
|
||
|
||
function reset() {
|
||
streams = [];
|
||
createStreams();
|
||
}
|
||
|
||
function setup() {
|
||
createCanvas(innerWidth, innerHeight);
|
||
reset();
|
||
frameRate(20);
|
||
colorMode(HSB);
|
||
noStroke();
|
||
textSize(charSize);
|
||
textFont("monospace");
|
||
background(0);
|
||
}
|
||
|
||
function draw() {
|
||
background(0, 0.4);
|
||
streams.forEach((s) => s.draw());
|
||
}
|
||
|
||
function windowResized() {
|
||
resizeCanvas(innerWidth, innerHeight);
|
||
background(0);
|
||
reset();
|
||
} |