HeldenGenerator für "Das Weltenbuch"

Code-Stücke können hier veröffentlicht werden.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Beitragvon derdon » Dienstag 2. Dezember 2008, 15:42

siehe [wiki=Lange_Zeilen_im_Sourcecode#LangeStrings]diesen wiki-eintrag[/wiki]
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Beitragvon gkuhl » Dienstag 2. Dezember 2008, 15:54

Danke, funktioniert :D
pheder
User
Beiträge: 11
Registriert: Dienstag 14. Oktober 2008, 15:56
Kontaktdaten:

Beitragvon pheder » Dienstag 2. Dezember 2008, 16:50

Ich glaub ich muss auch mal mitmischen, wenns auch nur ne ganz unwichtige Sache ist:

Code: Alles auswählen

i = 0
print ''
for race in STEREOTYPES.keys():
    i += 1
    print str(i) + ': ' + race

kannst du auch ersetzen durch:

Code: Alles auswählen

i = 0
print ''
for race in STEREOTYPES:
    i += 1
    print str(i) + ': ' + race

Eine Iteration über ein Dictionary liefert immer die Keys.

Was mich trotzdem noch stört ist dieses "i=0" und "i+=1", ich komm vom Gedanken nicht weg, dass man das vermeiden könnte... Aber das wird wohl auch nur eine Wunschvorstellung sein :cry:
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Dienstag 2. Dezember 2008, 17:12

Klar geht das besser ;)

Code: Alles auswählen

for i, race in enumerate(STEREOTYPES):
    print i+1 " : " + race

wenn mans denn bei der Nummerierung lassen will, statt bei 0 anzufangen.
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Dienstag 2. Dezember 2008, 17:15

Das ist keine Wunschvorstellung, sondern nennt sich
'enumerate()'

Code: Alles auswählen

In [49]: for i, k in enumerate(['hexe', 'Gnom', 'Beamter']):
   ....:     print '%s: %s' % (i, k)
   ....:     
   ....:     
0: hexe
1: Gnom
2: Beamter


:wink:
yipyip
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Dienstag 2. Dezember 2008, 17:15

ups, zuuu spät...
:cry:
yipyip
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Dienstag 2. Dezember 2008, 17:30

yipyip hat geschrieben:ups, zuuu spät...
:cry:
yipyip

Wobei das String-Formating viel schöner ist :)
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Dienstag 2. Dezember 2008, 17:41

Wobei das String-Formating viel schöner ist Smile


...kommt immer drauf an...
Hatte mich nur spontan für '%s...' % (... ) entschieden,
weil ich's manchmal übersichtlicher finde.

:wink:
yipyip
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 2. Dezember 2008, 18:05

Das String-Formatting ist eigentlich immer schöner, weil es nicht-Strings von selbst nach bestimmten Regeln in Strings konvertiert und in die Strings einsetzt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Beitragvon yipyip » Dienstag 2. Dezember 2008, 20:01

ACK!
:wink:
yipyip
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Dienstag 2. Dezember 2008, 20:02

lunar hat geschrieben:Eher nicht. Ein Objekt der Logik-Schicht hat keine Ahnung vom Darstellungsmedium und kann sich deswegen auch nicht "drucken". Dafür ist dann die entsprechende Ansicht in der Präsentationsschicht verantwortlich.

Da es hier um die Stringrepräsentation geht, halte ich das durchaus für sinnvoll. Natürlich nicht im Sinne von grafischer Darstellung aller Art! Da hast Du natürlich Recht. Aber eine __str__() Methode zu haben ist schon sinnvoll imho. Ich hätte das sofort klarer ausdrücken müssen.
lunar

Beitragvon lunar » Dienstag 2. Dezember 2008, 20:09

Naja, das kommt auch darauf an. Ein Objekt, dass sich sinnvoll in eine Zeichenkette überführen lässt, sollte auf jeden Fall eine __str__ Methode haben. Das kanonische Beispiel wäre eine Zahl ...

Bei einem komplexeren Objekt, dass keine sinnvolle String-Darstellung hat, ist __repr__ besser, um eine Repräsentation der internen Daten zu erzeugen.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Mittwoch 3. Dezember 2008, 14:17

Mir ist nicht aufgefallen, dass jemand schon das Attribut-Array angesprochen hat. Das würde ich so nicht realisieren. Es ist nicht [0] sondern Geist, nicht [5] sondern Sinne. Daher würde ich hier ein eigenes Objekt vorschlagen:

Code: Alles auswählen

class Attributes:
  def __init__(self, geist, körper, geschick, sozial, wille, sinne):
    self.geist, self.körper, self.geschick, self.sozial, self.wille, self.sinne = ...

held.attributes = Attributes(geist=4, körper=6, ...)
if held.attributes.wille < 5:
  print "Du bist zu willensschwach, um dem Zauber zu widerstehen..."

Falls dich das ö wundert: Wenn's jetzt mit Python losgehen soll, würde ich gleich bei Python 3.0 starten und da kann man alle Buchstaben, die der Unicode-Zeichensatz hergibt, für Namen benutzen. Andernfalls müsste man "koerper" benutzen, was weniger schoen ist.

Stefan
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Mittwoch 3. Dezember 2008, 14:34

Guter Einwurf, wobei man zum Erzeugen der Attributs-Objekte aber hinzufügen sollte - da es ja rassenspezifische Startattribute gibt, dass man das entweder in einen Wrapper packt, der die Rasse auswertet, oder das über die Attributsklasse löst (evtl weniger schön).

Das mit den Umlauten stimmt schon, die Frage ist aber, ob man nicht generell den Quelltext in Englisch schreiben sollte, da es zum Programmieren eh benötigt wird und da es den einfachsten Schriftsatz hat - auf einer englischen Keymap ein `ü' zu schreiben ist eine sehr lustige Geschichte, wenn man keinen Editor hat, der Digraphen unterstützt ;).
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 3. Dezember 2008, 15:39

cofi hat geschrieben:Das mit den Umlauten stimmt schon, die Frage ist aber, ob man nicht generell den Quelltext in Englisch schreiben sollte, da es zum Programmieren eh benötigt wird und da es den einfachsten Schriftsatz hat - auf einer englischen Keymap ein `ü' zu schreiben ist eine sehr lustige Geschichte, wenn man keinen Editor hat, der Digraphen unterstützt ;).

Ja, ich finde auch dass Umlaute in Bezeichnern alles andere als gewünscht ist. Es mag sein, dass das für sehr beschränkte Sachen nützlich ist. Aber ich habe mir angewöhnt alles in Englsich zu machen: Bezeichner im Code, Kommentare, Dokumentation.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder