Namen gesucht?
Verfasst: 20.12.2006 16:28
Irgendeinen Namen gesucht?
Nichts leichter als das!

Nichts leichter als das!

Code: Alles auswählen
Enumeration
#G_Undo
#G_String
#G_Redo
#G_Generate
#G_Auto
#G_DoubleVowel
#G_DoubleConsonant
#G_Length
#G_BeginWith
#G_DeleteList
EndEnumeration
LoadFont(0,"Times New Roman",20)
LoadFont(1,"Arial",16,#PB_Font_Bold)
Global NewList NameList.s()
Flags = #PB_Window_SystemMenu
Flags | #PB_Window_MinimizeGadget
Flags | #PB_Window_ScreenCentered
OpenWindow(0,0,0,300,180,"MakeNamez",Flags)
CreateGadgetList(WindowID(0))
ButtonGadget(#G_Undo,20,20,24,32,"<")
SetGadgetFont(#G_Undo,FontID(1))
GadgetToolTip(#G_Undo,"Zurück")
StringGadget(#G_String,50,20,200,32,"",#PB_String_ReadOnly|#PB_String_BorderLess)
SetGadgetFont(#G_String,FontID(0))
ButtonGadget(#G_Redo,256,20,24,32,">")
SetGadgetFont(#G_Redo,FontID(1))
GadgetToolTip(#G_Redo,"Weiter")
ButtonGadget(#G_Generate,20,72,100,26,"Name generieren",#PB_Button_Default)
CheckBoxGadget(#G_Auto,140,72,150,20,"Kontinuierlich")
CheckBoxGadget(#G_DoubleVowel,140,92,150,20,"Doppelvokal erlauben")
CheckBoxGadget(#G_DoubleConsonant,140,112,150,20,"Doppelkonsonant erlauben")
ComboBoxGadget(#G_Length,20,110,100,200)
For a = 3 To 10
AddGadgetItem(#G_Length,-1,Str(a) + " Buchstaben")
Next
SetGadgetState(#G_Length,3)
ComboBoxGadget(#G_BeginWith,20,140,150,200)
AddGadgetItem(#G_BeginWith,-1,"Zufällig beginnen")
AddGadgetItem(#G_BeginWith,-1,"Mit Konsonant beginnen")
AddGadgetItem(#G_BeginWith,-1,"Mit Vokal beginnen")
SetGadgetState(#G_BeginWith,0)
ButtonGadget(#G_DeleteList,185,139,100,24,"Liste löschen")
Declare RefreshUndoRedo()
Declare Generate()
Generate()
Repeat
EventID = WaitWindowEvent(50)
If GetGadgetState(#G_Auto)
If ElapsedMilliseconds() - LastDone > 2000
Generate()
LastDone = ElapsedMilliseconds()
EndIf
EndIf
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #G_Undo
If PreviousElement(NameList())
SetGadgetText(#G_String,NameList())
EndIf
RefreshUndoRedo()
Case #G_Redo
If NextElement(NameList())
SetGadgetText(#G_String,NameList())
EndIf
RefreshUndoRedo()
Case #G_Generate
Generate()
Case #G_DeleteList
ClearList(NameList())
AddElement(NameList())
NameList() = GetGadgetText(#G_String)
RefreshUndoRedo()
EndSelect
EndIf
Until EventID = 16
End
Procedure RefreshUndoRedo()
If ListIndex(NameList())
DisableGadget(#G_Undo,0)
Else
DisableGadget(#G_Undo,1)
EndIf
If ListIndex(NameList()) <> CountList(NameList())-1
DisableGadget(#G_Redo,0)
Else
DisableGadget(#G_Redo,1)
EndIf
EndProcedure
Procedure Generate()
Name.s = ""
Add.s = ""
Length = GetGadgetState(#G_Length) + 3
Select GetGadgetState(#G_BeginWith)
Case 0
Vowel = Random(1)
Case 1
Vowel = 0
Case 2
Vowel = 1
EndSelect
For Index = 1 To Length
If Vowel
Number = Random(7)
Select Number
Case 0 : Add = "a"
Case 1 : Add = "a"
Case 2 : Add = "e"
Case 3 : Add = "e"
Case 4 : Add = "i"
Case 5 : Add = "i"
Case 6 : Add = "o"
Case 7 : Add = "u"
EndSelect
Else
Number = Random(39)
Select Number
Case 0 : Add = "b"
Case 1 : Add = "b"
Case 2 : Add = "c"
Case 3 : Add = "c"
Case 4 : Add = "d"
Case 5 : Add = "d"
Case 6 : Add = "d"
Case 7 : Add = "f"
Case 8 : Add = "f"
Case 9 : Add = "g"
Case 10 : Add = "g"
Case 11 : Add = "h"
Case 12 : Add = "h"
Case 13 : Add = "h"
Case 14 : Add = "j"
Case 15 : Add = "k"
Case 16 : Add = "l"
Case 17 : Add = "l"
Case 18 : Add = "m"
Case 19 : Add = "m"
Case 20 : Add = "n"
Case 21 : Add = "n"
Case 22 : Add = "n"
Case 23 : Add = "p"
Case 24 : Add = "q"
Case 25 : Add = "r"
Case 26 : Add = "r"
Case 27 : Add = "r"
Case 28 : Add = "s"
Case 29 : Add = "s"
Case 30 : Add = "s"
Case 31 : Add = "t"
Case 32 : Add = "t"
Case 33 : Add = "t"
Case 34 : Add = "v"
Case 35 : Add = "w"
Case 36 : Add = "x"
Case 37 : Add = "y"
Case 38 : Add = "z"
Case 39 : Add = "z"
EndSelect
If Add = "q"
AfterQ = Random(1)
If AfterQ = 0
Add + "u"
EndIf
EndIf
If Add = "c"
AfterC = Random(4)
If AfterC = 0
Add + "h"
EndIf
EndIf
EndIf
Name + Add
Vowel = 1-Vowel
If GetGadgetState(#G_DoubleVowel)
If Random(10) = 0
Vowel = 1
EndIf
EndIf
If GetGadgetState(#G_DoubleConsonant)
If Random(10) = 0
Vowel = 0
EndIf
EndIf
Next
Name = UCase(Left(Name,1)) + LCase(Right(Name,Len(Name)-1))
LastElement(NameList())
AddElement(NameList())
NameList() = Name
RefreshUndoRedo()
SetGadgetText(#G_String,Name)
EndProcedure
