RPG Namensgenerator

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

ahoi!

Hatte heute sehr lange Freistunden und dachte mir ich mal wieder etwas sinnvolles für mein RPG Projekt. Und hier ist es der ultimative Namensgenerator für Rollenspiele.

Kostprobe?
Edelfrau Esolirie die lieblose Schlägerin von Hohenbach
Edelfrau Ortak die nicht auf den Kopf gefallene Angeberin aus Sajinhain
Baronin Ortuseturg die nicht auf den Kopf gefallene Geköpfte von Fürtberg
Lady Uemi die geköpfte Bläserin aus Hoheneggen
Baronin Aluel die besungende Verdreckte von Wolfssiedel
Baronin Orti die geköpfte Nixe zu Nirgendwoschlucht
Freiherrin Inerel die geköpfte Ogopogo zu Hexbach
Meisterin Ecumitar die schwesterliche Stecherin aus Ludwigbach
Meisterin Ortuwirkak die lieberfüllte Keine von Sajinheide
Meisterin Emieal die käufliche Krähin von Teufelssee
Lady Ineralomor die gottesfürchtige Bläserin zu Wolfsheide
Meisterin Erinak die gottesfürchtige Säuferin aus Himmelhain
Baronin Iogunati die sexistische Lesbische zu Mältan
Baronin Alemakal die besungende Werwölfin von Druidensiedel
Das ist Volladel, Menschen, weiblich

Desweiteren unterstütz es noch nur_name, normal, adel und bei den Völkern Böse und Mystik. Außerdem natürlich auch das männliche Geschlecht. Was haltet ihr davon?

Code.
Version 1: http://paste.pocoo.org/show/7714/
Version 2: http://paste.pocoo.org/show/7837/
* Kommentierter Code

Version 3: http://paste.pocoo.org/show/8238/
* PEP8 Konformer Code

SigMA
Zuletzt geändert von SigMA am Montag 3. Dezember 2007, 22:51, insgesamt 2-mal geändert.
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Von der Idee finde ich es ganz nett, aber 1) nicht PEP8-konform 2) keine Kommentare 3) ``n``, ``n2``, ``k``, ``z`` sind alles andere als gelungene Variablennamen 4) die Rumindexerei macht das Programm so kompliziert, dass ich es gar nicht nachvollziehen will. Ich glaube auch, dass ich so viel Zeit nicht habe, mir zu überlegen was du da eigentlich machst. Der Mangel an Kommentaren macht es nicht besser. 5) Der Kommentar unterhalb der Deklaration gehört in einen Docstring 6) Das Dict ``female`` finde ich auch nicht gut. Sowie ich das sehe, übersetzt du dort die Namen aus der ``male`` Variante?!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Was mir nur so beim rüberschauen aufgefallen ist: Es gibt `random.choice()`. Bitte benutzen.
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Danke für den Tipp mit random.choice.

So hab den Code jetzt überarbeitet und gesäubert, ist wie gesagt in ner Freistunde entstannden ^^

Neuer, kommentierter Code: http://paste.pocoo.org/show/7837/

@Leonidas: Ja female hat ne "Übersetzung" der male Bezeichnungne drinne. Wie würdest du das machen? Ich halte es für noch sinnloser alles nochmal extra für female zu bauen.

Freue mich über weitere Rückmeldungen :)
SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SigMA hat geschrieben:@Leonidas: Ja female hat ne "Übersetzung" der male Bezeichnungne drinne. Wie würdest du das machen? Ich halte es für noch sinnloser alles nochmal extra für female zu bauen.
Mit so einer Struktur:

Code: Alles auswählen

additional_names = (
    ("Rabe", "Krähin")
    ("Krake", "Nixe"),
    ("Stecher", "Stecherin"),
    ("Rüppel", "Männliche"),
)
Noch dazu finde ich, dass die Kommentare nun zwar da sind, aber unbrauchbar sind, dh. das erklären was sowieso schon klar ist.

Ein Beispiel:

Code: Alles auswählen

        if volk == "human":
            # Wenn als Volk "human" ausgewählt wurde
            for i in range(random.randint(minsilben, maxsilben)):
                # Zahl zwischen minsilben und maxsilben
                z = random.randint(0, len(self.silben_human_evil)-1)
                while name[len(name)-1:] in konsonanten \
                  and self.silben_human_evil[z][:1] in konsonanten:
                    # Überprüft die Endung von name und den Anfang von
                    # der neuen Silbe. Wenn beides konsonanten sind
                    # generiert er weiter bis es kein Konsonant mehr ist
                    # > Ziel ist es, dass der Name schöner klingt
                    z = random.randint(0, len(self.silben_human_evil)-1)
                name += self.silben_human_evil[z]
Der erste Kommentar ist doch so banal, wie es nur geht. Der ist kaum verständlich und er dokumentiert einen Code, den man mit ``random.choice()`` hätte wesentlich vereinfachen können, weil dann die hässlichen Indizes wegfallen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Hier kommt der Dritte Versuch 8) Hab jetzt hoffentlich die PEP-8 gut genug beachtet. Auch habe ich jetzt komplett random.choice() benutzt. Sollte im allgemeinen jetzt übersichtlicher sein

http://paste.pocoo.org/show/8238/

Freue mich weiterhin über Feedback (vllt auch inhaltlich gerichtet)
SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SigMA hat geschrieben:Auch habe ich jetzt komplett random.choice() benutzt. Sollte im allgemeinen jetzt übersichtlicher sein
Ja, ist es. Ich hatte keine Möglichkeit es mir jetzt genau anzusehen, aber jetzt ist es zumindest in einem Zustand, in dem ich es mir ansehen würde und nicht frustriert aufgeben würde.
SigMA hat geschrieben:Freue mich weiterhin über Feedback (vllt auch inhaltlich gerichtet)
``Ngenerator.namen_init()`` in ``Ngenerator.__init__()`` umbenennen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Leonidas hat geschrieben:``Ngenerator.namen_init()`` in ``Ngenerator.__init__()`` umbenennen.
ich wollte noch Funktionen für Items und Städtenamen einbauen, deswegen habe ich nen "namen_init()" gemacht es würde dann "item_init()" und "stadt_init()" folgen
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
Vingdoloras
User
Beiträge: 53
Registriert: Sonntag 2. Dezember 2007, 18:25

Naja, die __init__ führt er aber schon beim Erstellen einer Instanz aus, daher wäre es sicher einfacher, wenn du die Items und Städte zusammen mit den Namen in die __init__ packst...
Dann könntest du dir die Zeile

Code: Alles auswählen

debug.namen_init()
sparen, denk ich mal.

Und ich wollte dich fragen, ob ich mich mal dran versuchen dürfte, mit Tkinter nen GUI für das Prog zu erstellen?
Vingdoloras
User
Beiträge: 53
Registriert: Sonntag 2. Dezember 2007, 18:25

Noch ne Frage... wieso steht auf
http://nebelland.drei-rpg.de/namensgenerator/
dass das Prog ein Perl Skript ist?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Vingdoloras hat geschrieben:Noch ne Frage... wieso steht auf
http://nebelland.drei-rpg.de/namensgenerator/
dass das Prog ein Perl Skript ist?
Weil die Online Anwendung eines ist... (denk ich mal)
Vingdoloras
User
Beiträge: 53
Registriert: Sonntag 2. Dezember 2007, 18:25

da steht aber, dass man für die download-version perl brauch, da es ein perl skript ist^^
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ja, es ist eben in Perl geschrieben und in die Webseite eingebunden. Was ist da jetzt nicht zu verstehen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Vingdoloras
User
Beiträge: 53
Registriert: Sonntag 2. Dezember 2007, 18:25

Sry ich glaub da besteht ein Missverständnis...
also Sigma hat uns den Link zum Programmcode gegeben.
Im Code In den Kommentare ist die URL einer Seite...
Auf der seite ist der Generator eingebunden (ob das eingebundene nun in Python oder Perl ist weiß ich nicht), aber die Download-Version ist laut Aussagen der Internetseite in Perl geschrieben.
Das finde ich komisch (selstam komisch, nicht idiotisch komisch=>war nicht negativ gemeint).

Edit: hab mir den Pythoncode nochmal angesehen. Kann auch sein, dass ich mich geirrt habe, also dass das Programm nicht das selbe wie das hier ist, sondern das Programm, aus dem die Silben für einige Dinge entnommen wurden (ja ich liebe Schachtelsätze :twisted: )

Falls das so ist, muss ich mich entschuldigen :oops:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ja, die Silben sind aus dem Perl-Programm entnommen, aber das sind zwei ganz unterschiedliche Programme. Also das was du da online siehst ist nicht das Programm was hier verlinkt ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten