Namensgenerator

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Xenon

Betreff: Namensgenerator

BeitragMo, Aug 30, 2004 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ein kleiner Algorythmus, der Zufällige Namen erstellt.

Eine Beispiel-names.txt mit Vornamen:

BlitzBasic: [AUSKLAPPEN]
Peter
Hannes
Hermann
Franz
Maria
Anna
Gabriela
Thomas
Udo
David
Hubert
Horst
Herbert
Irene
Jasmin
Mario
Philipp
Florina
Felix
Alexander
Alexandra
Laura
Marie
Sophie
Lea
Katherina
Sarah
Julia
Lena
Luca
Lukas
David
Tim


Der Code:
BlitzBasic: [AUSKLAPPEN]
Dim chars$(25)
Main()
End

Function StringToChars$(txt$)
Local i, result$, char

txt$ = Lower(txt$)

result$ = ""

For i=1 To Len(txt$)
char = Asc(Mid$(txt$, i, 1))-97
If (char >= 0) And (char <= 25) Then
result$ = result$ + Chr$(char+97)
End If
Next

Return result$
End Function

Function ProcessName(name$)
Local char, nextchar, i

name$ = StringToChars$(name$)
nextchar = Asc(Mid$(name$, 1, 1))-97
For i = 2 To Len(name$)
char = nextchar
nextchar = Asc(Mid$(name$, i, 1))-97
chars$(char) = chars$(char) + Chr$(nextchar + 97)
Next
End Function

Function ReadNames(filename$)
Local ilfe, linie$

ClearChars()

file = ReadFile(filename$)
If file = 0 Then Return 0

Repeat
linie$ = ReadLine$(file)
ProcessName(linie$)
Until Eof(file)

CloseFile file

Return 1
End Function

Function ClearChars()
Local i

For i=0 To 25
chars$(i) = ""
Next
End Function

Function GetRandomName$(minlength, maxlength)
Local length, i, j, result$, Nxt

Repeat
j = Rand(0, 25)
Until Len(chars$(j)) > 0
length = Rand(minlength, maxlength)
result$ = Chr$(j+65)

For i=2 To length
nxt = Asc(Mid$(chars$(j), Rand(1, Len(chars$(j))), 1))-97
result$ = result$ + Chr$(nxt+97)
j = nxt
If Len(chars$(j)) = 0 Then
If Len(result$) >= minlength Then
Return result$
Else
Return GetRandomName$(minlength, maxlength)
End If
End If
Next

Return result$
End Function

Function Main()
Local length, i

If Not ReadNames("names.txt") Then RuntimeError "Konnte Namensdatei nicht finden!"

SeedRnd MilliSecs()

For i = 1 To 20
length = Rand(4, 8)
Print GetRandomName$(length, length)
Next

WaitKey
End Function


Das Beispielergebins:
BlitzBasic: [AUSKLAPPEN]
Lixa
Vioresth
Iresthe
Domarie
Hidr
Vienn
Hian
Tinnan
Feti
Gath
Dasma
Gavilima
Tethelia
Caher
Eleteri
Jucarida
Masmahe
Eanahuc
Lerile
Flias


Wer Ideen für Erweiterungen des Algorythmus hat, her damit!
 

getlose

BeitragMo, Aug 30, 2004 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
die Namen sind irgendwie seltsam Neutral

Firstdeathmaker

BeitragMo, Aug 30, 2004 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
jepp, das stimmt. Ich habe so etwas ähnliches mal für einen Freund programmiert (Er leitet Rollenspiele). Das programm welches ich geschrieben habe hat allerdings nicht die Namen zerhackt, sondern entweder Vornamen und Nachnamen zusammengewürfelt.
Der Versuch Namen aus Silben zu erstellen ist mir missglückt.


BlitzBasic: [AUSKLAPPEN]
; Namenszusammensteller By CGC Decrayer 2004
AppTitle "D&D Namen"
Graphics 800,600,16,1
SetBuffer BackBuffer()
;Start Hauptmenü
bg=LoadImage ("Matsch.bmp");Hintergrundtextur
schalter=LoadImage ("schalter.bmp")
MaskImage schalter,255,0,255
MidHandle schalter
Cursor=LoadImage ("Cursor.bmp")
MaskImage cursor,255,0,255
f1=LoadFont(CurrentDir()+"fonts\king arthur special.ttf",30,False,False,False)
f2=LoadFont(CurrentDir()+"fonts\king arthur special.ttf",50,False,False,False)
Repeat
Cls
TileImage bg

SetFont f1
Color 240,0,0
Text 20,20,"D&D Namen"
DrawImage schalter,400,200
DrawImage schalter,400,280
DrawImage schalter,400,360
SetFont f2
Color 50,50,255
Text 380,180,"M"
Text 380,260,"W"
Text 380,340,"E"
SetFont f1
Color 0,0,0
mx=MouseX()
my=MouseY()
DrawImage cursor,mx,my
If ImagesCollide (schalter,400,200,0,cursor,mx,my,0)
Text 400,400,"M-Namen"
If MouseHit(1)
Anseige$=name$(CurrentDir()+"names\vornamenm.txt",CurrentDir()+"names\nachnamen.txt")
EndIf
EndIf
If ImagesCollide (schalter,400,280,0,cursor,mx,my,0)
Text 400,400,"W-Namen"
If MouseHit(1)
Anseige$=name$(CurrentDir()+"names\vornamenw.txt",CurrentDir()+"names\nachnamen.txt")
EndIf
EndIf
If ImagesCollide (schalter,400,360,0,cursor,mx,my,0)
Text 400,400,"Wech hiä"
If MouseHit(1) End
EndIf
Color 255,0,0
Text 500,550,anseige
Flip
Until KeyHit(1)
End

Function imagecollide()
End Function

Function name$(vornameverzeichnis$,nachnameverzeichnis$)
SeedRnd MilliSecs()
i2=Rnd(1,zaeler(vornameverzeichnis$))
Datas=OpenFile (vornameverzeichnis$)
For i=1 To i2
VName$=ReadLine (Datas)
Next

i2=Rand(1,zaeler(nachnameverzeichnis$))
Datas=OpenFile (nachnameverzeichnis$)
For i=1 To i2
NName$=ReadLine (Datas)
Next
Return VName$+" "+NName$
End Function

Function zaeler(dn$)
Datas=OpenFile (dn$)
Repeat
Name$=ReadLine (Datas)
z=z+1
Until name="ende"
CloseFile Datas
Return z-1
End Function


Namensliste Vornamen Männlich
Zitat:

Hans
Peter
Grem
Writch
Breez
Kreel
Victor
Gadger
Örmir
Zuscas
Indumir
Pawlur
Germir
Henlor
Hamlor
Jorzan
ende

Namensliste Vornamen Weiblich
Zitat:

Ilona
Gerlinde
Sigrun
Fiola
Merila
Weslana
Girona
Elsa
Riora
Ursenia
Videlia
Saldia
Laleja
ende

Namensliste Nachnamen
Zitat:

Goldschmiedt
Hermn
Glasmeier
Jorsal
Perewun
Burnmar
Hergold
Awil
Großmeier
Wildrot
Orwell
Zubar
Pivlek
Weißbart
Großhut
Feengeist
Greatherz
Wurmschrat
Silberdrache
Hergorn
ende

Silbensammlung
Zitat:
ar
ge
sel
se
bi
bir
tra
es
ser
dir
bis
dur
cha
chel
chi
cho
chu
gro
a
e
i
o
u
sel
ka
ker
kor
kri
em
qua
quo
qui
ers
dil
del
dol
dur
or
el
ol
il
mil
meil
dorf
sem
sum
sil
mol
mil
mul
eal
li
ende
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Kabelbinder

Sieger des WM-Contest 2006

BeitragMo, Aug 30, 2004 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum nur hören die meisten der erfundenen Namen bei mir mit -oral und -anal auf? Laughing Laughing Laughing
<Wing Avenger Download> ◊◊◊ <Macrophage Download>
 

.:_]TRaSh

BeitragMo, Aug 30, 2004 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Geiler Code Meister, ich find die Namen für z.B. nen Futuregame oder Phantasy-RPG garnicht schlecht!
[20:17] IMurDOOM: hm irgendwie is die mitte des viehs kaputt
[20:17] TRaSh: ein bisschen
[20:18] DarkAngel: es tut mir irgend wie leid

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group