Fantasy Name Generator

Previous topic - Next topic

WPShadow

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.

Code (glbasic) Select

// --------------------------------- //
// 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



AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Quentin

cool, WP, die generierten Namen hören sich ganz gut an
Quzlaca lässt grüßen ;)

WPShadow

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!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Quentin

Ave Vesedix!
fein, wünsche dir viel Erfolg dabei. Wären dann auch Namen mit unterschiedlicher Länge drin?

WPShadow

Sind sie jetzt doch auch schon! Mußt dir die Funktion nur genau ansehen:

bla$ = FNG$(start, lang)

Code (glbasic) Select

// '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...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

Die Österreicher wieder :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Schnatterplatsch

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???

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

WPShadow

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
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schnatterplatsch

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