Generator für Fantasienamen
Generator für Fantasienamen
Hallo,
für ein Spiel benötige ich einen Generator, der Fantasienamen erstellt. Im
INet gibt es sehr viele Beispiele, die mir auf Knopfdruck mehr oder minder
gelungene Ergebnisse liefert (bei einstellbarer Option, ob die Spielfigur nett,
niedlich, böse oder sonstwas ist). Leider ohne Source, den ich portieren
könnte.
Leider habe ich momentan überhaupt keinen Ansatz, wie so was in PureBasic
zu realisieren ist.
Hat jemand von Euch einen Tipp für mich?
Danke & Grüße ... Kiffi
für ein Spiel benötige ich einen Generator, der Fantasienamen erstellt. Im
INet gibt es sehr viele Beispiele, die mir auf Knopfdruck mehr oder minder
gelungene Ergebnisse liefert (bei einstellbarer Option, ob die Spielfigur nett,
niedlich, böse oder sonstwas ist). Leider ohne Source, den ich portieren
könnte.
Leider habe ich momentan überhaupt keinen Ansatz, wie so was in PureBasic
zu realisieren ist.
Hat jemand von Euch einen Tipp für mich?
Danke & Grüße ... Kiffi
Ich würde ggf. einfach Listen von männlichen und weiblichen Vornamen
machen und dazu noch eine Liste mit Nachnamen. Diese Listen müsste
man sicherlich irgendwo klauen können, je nach deinem Vorhaben solltest
du dir aber natürlich ein Paar Gedanken zum Copyright machen
Aus diesen Listen kannst du dann einfach mit einem Zufallsgenerator
Namen zusammenstellen.
machen und dazu noch eine Liste mit Nachnamen. Diese Listen müsste
man sicherlich irgendwo klauen können, je nach deinem Vorhaben solltest
du dir aber natürlich ein Paar Gedanken zum Copyright machen

Aus diesen Listen kannst du dann einfach mit einem Zufallsgenerator
Namen zusammenstellen.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
wenn es wirklich 'Fantasienamen' sein können und keine wirklichen, gäbe es noch folgende möglichkeit:
- erstelle ein Liste von Silben.
- setze in einer Proc jeweils 1-3 Silben für den vornamen und 2-4 Silben für den Nachnamen zusammen.
[Edit] ...du könntest dann jeden erzeugten namen mit einer kennzahl versehen (die sich aus den laufenden nummern der verwendeten silben zusammensetzt), um zu vermeiden, dass in einem programmlauf ein name doppelt erzeugt wird...
[Edit2] ...den silben könnte noch ein flag zugeordnet werden, um zu deklarieren, ob sie für gut u/o böse u/o niedlich etc. verwendet werden können...
- erstelle ein Liste von Silben.
- setze in einer Proc jeweils 1-3 Silben für den vornamen und 2-4 Silben für den Nachnamen zusammen.
[Edit] ...du könntest dann jeden erzeugten namen mit einer kennzahl versehen (die sich aus den laufenden nummern der verwendeten silben zusammensetzt), um zu vermeiden, dass in einem programmlauf ein name doppelt erzeugt wird...
[Edit2] ...den silben könnte noch ein flag zugeordnet werden, um zu deklarieren, ob sie für gut u/o böse u/o niedlich etc. verwendet werden können...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
das hier wäre doch schon mal ne anregung:
Code: Alles auswählen
vokal.s="aeiou"
Doppelvokal.s="aeo"
Konsonant.s="bcdfghjklmnpqrstvwxyz"
Doppelkonsonant.s="bcfklmnprstz"
For x=1 To 1000
Laenge=3+Random(3)
;erster buchstabe - vokal oder konsonant
If Random(1)
Name.s+Mid(Konsonant,Random(Len(Konsonant)-1)+1,1)
Else
Name.s+Mid(vokal,Random(Len(vokal)-1)+1,1)
EndIf
;einer geht noch..
While Laenge>1
;letzter buchstabe ist ein vokal
If CountString(vokal,Right(Name,1))
;einen konsonanten dazu
Name+Mid(Konsonant,Random(Len(Konsonant)-1)+1,1)
Laenge-1
;wenn dieser ein möglicher doppelkonsonant und der zufall es will
If CountString(Doppelkonsonant,Right(Name,1)) And doppel=#True And Laenge>1 And Random(4)=0
;verdoppeln
Name+Right(Name,1)
Laenge-1
EndIf
;letzter buchstabe ist ein konsonant
Else
;einen vokal dazu
Name+Mid(vokal,Random(Len(vokal)-1)+1,1)
Laenge-1
;wenn dieser ein möglicher doppelvokal und der zufall es will
If CountString(Doppelvokal,Right(Name,1)) And doppel=#True And Laenge>1 And Random(4)=0
;verdoppeln
Name+Right(Name,1)
Laenge-1
EndIf
EndIf
;wenn die letzten beiden buchstaben gleich sind
If Right(Right(Name,2),1)=Left(Right(Name,2),1)
;verhindern dass noch zwei doppelte dazu kommen
doppel=#False
Else
;ansonsten ist es erlaubt
doppel=#True
EndIf
Wend
Name+"|"
Debug StringField(Name,x,"|")
Next
Zuletzt geändert von MLK am 13.11.2004 18:26, insgesamt 1-mal geändert.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Hallo,
erstmal vielen Dank für Eure rege Teilnahme!
hier habe ich auch mal einen kleinen Code zusammengebastelt:
to be continued...
Grüße ... Kiffi
erstmal vielen Dank für Eure rege Teilnahme!

hier habe ich auch mal einen kleinen Code zusammengebastelt:
Code: Alles auswählen
NewList sVokal.s()
NewList sKonsonant.s()
NewList sSilbe.s()
; Vokale
AddElement(sVokal()):sVokal()="a"
AddElement(sVokal()):sVokal()="e"
AddElement(sVokal()):sVokal()="i"
AddElement(sVokal()):sVokal()="o"
AddElement(sVokal()):sVokal()="u"
; Konsonanten
AddElement(sKonsonant()):sKonsonant()="b"
AddElement(sKonsonant()):sKonsonant()="c"
AddElement(sKonsonant()):sKonsonant()="d"
AddElement(sKonsonant()):sKonsonant()="f"
AddElement(sKonsonant()):sKonsonant()="g"
AddElement(sKonsonant()):sKonsonant()="h"
AddElement(sKonsonant()):sKonsonant()="j"
AddElement(sKonsonant()):sKonsonant()="k"
AddElement(sKonsonant()):sKonsonant()="l"
AddElement(sKonsonant()):sKonsonant()="m"
AddElement(sKonsonant()):sKonsonant()="n"
AddElement(sKonsonant()):sKonsonant()="p"
AddElement(sKonsonant()):sKonsonant()="q"
AddElement(sKonsonant()):sKonsonant()="r"
AddElement(sKonsonant()):sKonsonant()="s"
AddElement(sKonsonant()):sKonsonant()="t"
AddElement(sKonsonant()):sKonsonant()="v"
AddElement(sKonsonant()):sKonsonant()="w"
AddElement(sKonsonant()):sKonsonant()="x"
AddElement(sKonsonant()):sKonsonant()="y"
AddElement(sKonsonant()):sKonsonant()="z"
; Jetzt jeden Konsonanten mit einem Vokal zu einer Silbe verknüpfen
ResetList(sKonsonant())
While NextElement(sKonsonant())
ResetList(sVokal())
While NextElement(sVokal())
AddElement(sSilbe()):sSilbe()= sKonsonant() + sVokal()
Wend
Wend
; Maximale Anzahl Silben ermitteln
MaxCount.l=CountList(sSilbe())
For intU = 1 To 10 ; 10 Namen im Debugger ausgeben
sName.s = ""
For intI = 1 To 4 ; Jeder Name besteht aus 4 Silben
SelectElement(sSilbe(),Random(MaxCount))
sName = sName + sSilbe()
Next
; Namen ausgeben (1. Buchstabe groß)
Debug UCase(Left(sName,1)) + Mid(sName, 2, Len(sName)-1)
Next
Grüße ... Kiffi
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
schon echt schick 
a) wie wäre es , per zufall (oder ähnlich) einen teil der silben auf konsonant enden zu lassen ? oder ohne konsonant anfangen ?
... schau dir nochmal MLK's Beispiel bezüglich Doppelvokal + Doppelkonsonant durch...
b) eine alternative methode zur listen erstellung wäre eine schleife mit READ und unten dann DATA (wenn man sowas mag, deine lösung ist durchaus ok)

a) wie wäre es , per zufall (oder ähnlich) einen teil der silben auf konsonant enden zu lassen ? oder ohne konsonant anfangen ?
... schau dir nochmal MLK's Beispiel bezüglich Doppelvokal + Doppelkonsonant durch...
b) eine alternative methode zur listen erstellung wäre eine schleife mit READ und unten dann DATA (wenn man sowas mag, deine lösung ist durchaus ok)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
> eine alternative methode zur listen erstellung wäre eine schleife
> mit READ und unten dann DATA
danke für den Tipp! Habe mir schon gedacht, daß es sowas in Purebasic
geben muss, habe ich aber auf die Schnelle nicht gefunden.
So sieht das schon etwas übersichtlicher aus.
Mit dem Doppelkonsonanten muss ich noch ein wenig knobeln.
Grüße ... Kiffi
> mit READ und unten dann DATA
danke für den Tipp! Habe mir schon gedacht, daß es sowas in Purebasic
geben muss, habe ich aber auf die Schnelle nicht gefunden.
So sieht das schon etwas übersichtlicher aus.
Mit dem Doppelkonsonanten muss ich noch ein wenig knobeln.
Grüße ... Kiffi
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Namen-Maschine
Entfernt. Out of date.
Zuletzt geändert von Hroudtwolf am 05.03.2008 02:28, insgesamt 1-mal geändert.