Hi!
Ich dachte mir, ich programmiere mal schnell dieses Teil herunter. Es generiert zufällig in einer Funktion Zufallsnamen und gibt sie wieder zurück.
Ist die erste Version, aber ich überarbeite sie, sobald ich wieder ein bißchen Zeit habe. Hoffe irgendwer kann damit was anfangen.
Hoffe es gefällt so halbwegs, im Übrigen habe ich schon pläne, wie ich das Ding verbessern kann...
Gruß
W.
// --------------------------------- //
// Project: FNG
// Start: Tuesday, October 07, 2008
// IDE Version: 5.360
LOCAL n$
WHILE TRUE
n$ = FNG$(0, 7)
PRINT n$, 0, 0
SHOWSCREEN
MOUSEWAIT
WEND
FUNCTION FNG$: start, lang
// ==========================
// Fantasy Name Generator 1.0
// ==========================
//
// 'start' --> gibt an, ob der Anfangsbuchstabe ein Mitlaut oder ein Selbstlaut ist
// 0 = Zufall
// 1 = Mitlaut
// 2 = Selbstlaut
//
// 'lang' --> gibt die Länge des gesamten Wortes an
LOCAL tmp, name$, status, buchst$, z_mit, z_sel, intern, status_tmp
FOR tmp = 1 TO lang
// Hier liegen die Standard - RND's
IF start = 0
status_tmp = RND(100)
IF status_tmp <= 49 THEN status = 1
IF status_tmp > 49 THEN status = 2
start = 3
ENDIF
IF start = 1 THEN status = 1
IF start = 2 THEN status = 2
SELECT status
// Hier werden die Mitlaute zufällig zugeteilt
CASE 1
WHILE TRUE
buchst$ = CHR$(RND(25) + 97)
IF ASC(buchst$) <> 97 AND ASC(buchst$) <> 101 AND ASC(buchst$) <> 105 AND ASC(buchst$) <> 111 AND ASC(buchst$) <> 117
IF tmp = 1 THEN status = 2
IF tmp > 1
intern = RND(100)
IF intern <= 49
status = 1
z_mit = z_mit + 1
ENDIF
IF intern > 49
status = 2
z_mit = 0
ENDIF
// d/n/q/g/y/x/k
IF z_mit >= 2 OR ASC(buchst$) = 100 OR ASC(buchst$) = 110 OR ASC(buchst$) = 115 OR ASC(buchst$) = 113 OR ASC(buchst$) = 103 OR ASC(buchst$) = 121 OR ASC(buchst$) = 120 OR ASC(buchst$) = 107
status = 2
z_mit = 0
ENDIF
ENDIF
BREAK
ENDIF
WEND
// Hier werden die Selbstlaute zufällig zugeteilt
CASE 2
WHILE TRUE
buchst$ = CHR$(RND(25) + 97)
IF ASC(buchst$) = 97 OR ASC(buchst$) = 101 OR ASC(buchst$) = 105 OR ASC(buchst$) = 111 OR ASC(buchst$) = 117
IF tmp = 1 THEN status = 1
IF tmp > 1
intern = RND(100)
IF intern <= 49
status = 2
z_sel = z_sel + 1
ENDIF
IF intern > 49
status = 1
z_sel = 0
ENDIF
IF z_sel >= 2 OR ASC(buchst$) = 117 OR ASC(buchst$) = 101
status = 1
z_sel = 0
ENDIF
ENDIF
BREAK
ENDIF
WEND
ENDSELECT
IF tmp = 1
name$ = name$ + UCASE$(buchst$)
ELSE
name$ = name$ + LCASE$(buchst$)
ENDIF
NEXT
RETURN name$
ENDFUNCTION
cool, WP, die generierten Namen hören sich ganz gut an
Quzlaca lässt grüßen ;)
hehehe
Ich weiß, die ersten Namen sind Furchtbar! *ggg*
Inzwischen baue ich an der 2. Version. Darin sind einige Regeln eingebaut, die auch mit Wahrscheinlichkeiten usw. arbeiten. Insgesamt wird es viel weniger q's usw. geben, sodass es wirklich zu "normaleren" Namen kommen sollte. Dauert aber ein bißchen, da die Version auch um einiges aufwändiger wird!
Ave Vesedix!
fein, wünsche dir viel Erfolg dabei. Wären dann auch Namen mit unterschiedlicher Länge drin?
Sind sie jetzt doch auch schon! Mußt dir die Funktion nur genau ansehen:
bla$ = FNG$(start, lang)
// 'start' --> gibt an, ob der Anfangsbuchstabe ein Mitlaut oder ein Selbstlaut ist
// 0 = Zufall
// 1 = Mitlaut
// 2 = Selbstlaut
//
// 'lang' --> gibt die Länge des gesamten Wortes an
Die 2. Version wird gleich funktionieren, aber dafür werden intern viel mehr Abwandlungen bzw. Modifikationen durchgeführt...
Die Österreicher wieder :D
ich hatte vor ewigketen mal ein programm in java geschrieben, dass die buchstaben in einem text z?hlt und die wahrscheinlichkeit zur?ck gibt, dass ein buchstabe auftaucht. Interesse???
Stochastik ? =D
Ja, da k?nnen wir gerne auch zusammen was basteln!
Bin bis jetzt noch nicht dazu gekomen eine ordentliche 2. Version von dem Ding zu machen! =D
QuoteJa, da k?nnen wir gerne auch zusammen was basteln!
Bin bis jetzt noch nicht dazu gekomen eine ordentliche 2. Version von dem Ding zu machen! grin
Bin grade am ?berlegen was man da nimmt: Die Wahrscheinlichkeit eines Buchstabens innerhalb eines Namens oder die allg. Wahrscheinlichkeit in allen w?rtern