JavaScriptsTexteffekte

Fantasiename erzeugen

Würfelt aussprechbare Fantasienamen aus, indem es Konsonanten und Vokale abwechselnd aneinanderreiht.

Wenn irgendwo ein Name gebraucht wird und einem partout keiner einfällt, hilft dieses Script von unserem User david97 aus. Es würfelt Fantasienamen — nützlich für einen Benutzernamen, für Figuren in einer Geschichte oder einem Rollenspiel, für Orte auf einer erfundenen Landkarte oder einfach als Namensvorrat, aus dem ihr euch bedient.

Das Besondere daran ist, dass die Ergebnisse aussprechbar sind. Ein Script, das einfach zufällige Buchstaben aneinanderhängt, liefert Gebilde wie „Xkfrtz“, mit denen niemand etwas anfangen kann. Dieses hier wechselt stattdessen streng zwischen Konsonant und Vokal ab, sodass Silben entstehen — heraus kommen Namen wie „Belaro“ oder „Utofan“, die man laut lesen kann. Ob der Name mit einem Konsonanten oder einem Vokal beginnt, wird ebenfalls ausgewürfelt; der erste Buchstabe wird immer groß geschrieben.

Zur Bedienung: Tragt in das Feld ein, wie viele Buchstaben der Name haben soll, und klickt auf „Namen erzeugen“. Voreingestellt sind fünf Buchstaben. Sinnvoll sind Werte etwa zwischen drei und zehn — kürzer als zwei Buchstaben geht nicht, und nach oben haben wir bei vierzig Buchstaben eine Grenze gesetzt, damit ein versehentlich eingetipptes Ungetüm den Browser nicht ausbremst. Jeder Klick liefert ein neues Ergebnis, ihr könnt also so lange würfeln, bis etwas Passendes dabei ist.

Braucht ihr statt eines Namens ein Kennwort, das schwer zu erraten ist, nehmt lieber unseren Passwortgenerator — der mischt bewusst auch Ziffern und Sonderzeichen dazwischen. Und wer mit fertigen Namen spielen will, dreht sie mit Namen rückwärts gelesen um oder stellt sie mit Text auf dem Kopf auf den Kopf.

Texteffekte Baujahr 2008 läuft in deinem Browser
Platzhalter

Jeder Klick würfelt einen neuen Namen — auch bei gleicher Länge.

Eingesandt von david97

So funktioniert das Script

Das Script hat drei Aufgaben: einen zufälligen Buchstaben aus einem Vorrat ziehen, die gewünschte Länge aus dem Eingabefeld lesen und daraus abwechselnd Konsonanten und Vokale zu einem Namen zusammensetzen. Alles steckt in einer sofort ausgeführten Funktion, damit die Variablennamen nicht mit anderen Scripts auf derselben Seite kollidieren.

const vokale = "aeiou";
const konsonanten = "bcdfghjklmnpqrstvwxyz";

Das sind die beiden Buchstabenvorräte. Sie sind schlicht zwei Zeichenketten, aus denen später einzelne Zeichen gezogen werden. Auffällig: Das y steht bei den Konsonanten, das ist Geschmackssache. Umlaute fehlen ganz — wer welche haben will, hängt sie einfach an: "aeiouäöü".

function zufallszeichen(vorrat) {
  return vorrat.charAt(Math.floor(Math.random() * vorrat.length));
}

Diese Hilfsfunktion zieht ein zufälliges Zeichen. Math.random() liefert eine Kommazahl zwischen 0 und (knapp unter) 1. Multipliziert mit der Länge des Vorrats ergibt das eine Zahl zwischen 0 und knapp unter dieser Länge; Math.floor schneidet die Nachkommastellen ab und macht daraus eine ganze Zahl. charAt holt schließlich das Zeichen an dieser Position. Das Muster Math.floor(Math.random() * länge) ist die Standardschreibweise für „zufälliger Eintrag aus einer Liste“ — mit Math.round statt Math.floor könnte die Rechnung genau die Länge treffen, und an dieser Position steht kein Zeichen mehr.

if (isNaN(laenge) || laenge <= 1) {
  ausgabe.textContent = "Bitte tragt eine Zahl ab 2 ein.";
  return;
}

Bevor gewürfelt wird, prüft das Script die Eingabe. parseInt(…, 10) hat den Feldinhalt vorher in eine ganze Zahl im Zehnersystem verwandelt; steht dort etwas anderes als eine Zahl, liefert es NaN („not a number“), und isNaN erkennt das. Auch eine Länge von 1 oder weniger wird abgelehnt, denn ein Name aus einem Buchstaben ist keiner. Statt eines alert-Fensters wie im Original erscheint der Hinweis freundlich in der Ergebnisfläche, und return beendet die Funktion.

let vokalDran = Math.random() < 0.5;
let name = (vokalDran ? zufallszeichen(vokale) : zufallszeichen(konsonanten)).toUpperCase();

Jetzt fällt die erste Entscheidung: Math.random() < 0.5 ist in der Hälfte aller Fälle wahr — ein Münzwurf. Je nach Ausgang wird der erste Buchstabe aus den Vokalen oder aus den Konsonanten gezogen. Das Fragezeichen mit dem Doppelpunkt ist der Bedingungsoperator: Vor dem Fragezeichen die Bedingung, dahinter der Wert für „trifft zu“, nach dem Doppelpunkt der für „trifft nicht zu“. toUpperCase() macht daraus einen Großbuchstaben, denn Namen beginnen groß.

for (let i = 1; i < laenge; i++) {
  vokalDran = !vokalDran;
  name += vokalDran ? zufallszeichen(vokale) : zufallszeichen(konsonanten);
}

Das ist der Kern. Die Schleife beginnt bei 1, weil der erste Buchstabe schon steht, und läuft bis zur gewünschten Länge. vokalDran = !vokalDran kippt den Merker bei jedem Durchlauf ins Gegenteil — das Ausrufezeichen bedeutet „nicht“. Aus wahr wird falsch und umgekehrt, und genau dieses Hin und Her erzeugt die Abwechslung von Konsonant und Vokal, die den Namen aussprechbar macht. Mit += wächst die Zeichenkette Buchstabe für Buchstabe.

ausgabe.textContent = name;

Am Ende landet der fertige Name in der Ergebnisfläche. textContent setzt reinen Text — sicherer als innerHTML, weil der Inhalt garantiert nicht als HTML gedeutet wird. Verbunden wird die Funktion über addEventListener("click", erzeugen) mit dem Knopf; das Script steht dafür unter dem Formular, damit Knopf und Feld beim Ausführen schon existieren.

Zum Anpassen: Wer lieber weichere Namen möchte, streicht harte Konsonanten wie x, q und z aus dem Vorrat — je kürzer die Zeichenkette, desto häufiger kommen die verbliebenen Buchstaben vor. Man kann auch mit doppelten Einträgen arbeiten: Steht das a zweimal in vokale, taucht es doppelt so oft auf. Und wenn ihr die feste Abwechslung aufbrechen wollt, ersetzt ihr vokalDran = !vokalDran; durch vokalDran = Math.random() < 0.6; — dann entscheidet auch im Wortinneren der Zufall, allerdings auf Kosten der Aussprechbarkeit.

Script für die eigene Homepage

Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.

Mehr aus der Kategorie Texteffekte