Anonymous avatar Anonymous committed 2c18e53

tutorial_de: Create chars and let them speak.

Comments (0)

Files changed (2)

rpg_lib/textrpg.py

     from rpg_lib.anyrpg import _
 
 
-# Changing things. I want to tell stories in lines, broken at word borders. 
+# Changing things. I want to tell stories in lines, broken at word borders, so I want story() to use the split diag. 
 
 class Story(any_story): 
     def __init__(self, *args, **kwds): 
-	self.line_length = 80 #: The maximum length of story lines. 
         super(Story, self).__init__(*args, **kwds)
-
-    def split_diag(self, text, line_length = None, localize=True, autoscroll=False): 
-	"""Print a dialog in single lines split at word borders. 
-	
-	@param text: The text to output. 
-	@param line_length: Maximum length of a line. 
-	
-	"""
-	# Split the text by words to output at most 80 chars per line. 
-	if line_length is None: 
-	    line_length = self.line_length
-	text_to_print = ""
-	for j in text.split(): 
-	    if len(text_to_print) + len(j) > line_length: 
-		self.diag(text_to_print, localize=localize, autoscroll=autoscroll) # TODO: If j > 80 -> split j. 
-		text_to_print = j
-	    else: 
-		# if we already have text_to_print, add j with a space. 
-		if text_to_print: 
-		    text_to_print += " " + j
-		else: 
-		    text_to_print = j
-	self.diag(text_to_print, localize=localize, autoscroll=autoscroll)
     
     def story(self, data=None, *args, **kwds): 
         """Tell a part of the story.
             data = _(data)
             for i in data.split("\n"): 
 		self.split_diag(i, localize=False, autoscroll=True, *args, **kwds)
-	# Wait after each full storypart and promt the user to read on. 
-	self.diag("""...press enter to read on...""", *args, **kwds)
         
 
 # Define helper functions. 
 
 story("""Willkommen im Interaktiven TextRPG Tutorial!
 
-Dieser Leitfaden wird Ihnen Schritt für Schritt die Möglichkeiten des TextRPG nahebringen und es Ihnen so ermöglichen auf einfache Weise eigene TextRPGs zu schreiben. 
+Dieser Leitfaden wird Ihnen Schritt für Schritt die Möglichkeiten des TextRPG nahebringen und es Ihnen so ermöglichen, auf einfache Weise eigene TextRPGs zu schreiben. 
 
 Erstmal zur Definition: Ein TextRPG ist eine interaktive Geschichte, in die ihre Nutzer eintauchen und so deren Ausgang beeinflussen können. 
 
 
 Obwohl diese erste Version rein textbasiert ist, sind die Skripte auf eine Art geschrieben, die eine spätere Übertragung in graphische Oberflächen einfach macht, so dass in den Skripten nur eingefügt werden muss, welche Oberfläche sie nutzen sollen. Das gleiche gilt für sonstige Erweiterungen. 
 
-Für Charakterinteraktionen gibt sie Ihnen ausserdem eine vollständige RPG Bibliothek, die das Ein Würfel System implementert, ein universelles und frei lizensiertes Rollenspielsystem. Weitere Informationen zum Ein Würfel System finden Sie auf http://1w6.org . 
+Für Charakterinteraktionen gibt sie Ihnen ausserdem eine vollständige RPG Bibliothek, die das Ein Würfel System implementert, ein universelles und frei lizensiertes Rollenspielsystem (weitere Informationen zum Ein Würfel System finden Sie auf http://1w6.org). 
 
 Da das TextRPG in Python geschrieben wurde, funktioniert es direkt auf den verschiedensten Plattformen, GNU/Linux, MacOSX und Windows eingeschlossen. 
 
 
 Damit können sie dann die Funktionen des TextRPG nutzen, z.B. story(). 
 
-Als nächsten Schritt rufen sie wie bereits beschrieben die Funktion story() auf: 
+Als nächsten Schritt rufen Sie wie bereits beschrieben die Funktion story() auf (das heißt, Sie tippen einfach das folgende ein): 
 
 story('''Träume in Texten, 
 Welten in Träumen
 
 story("""Lektion 3: Charaktere erzeugen und sprechen lassen.
 
-In Arbeit. 
+Nun ist es soweit, den Geschichten eins ihrer Grundelemente zu geben: Charaktere. 
 
+Das TextRPG gibt Ihnen eine einfache Möglichkeit Charaktere zu erzeugen, die auf vielfältige Weise interagieren können. Als erste Interaktion zeige ich Ihnen in dieser Lektion die direkte Rede. 
+
+Um einen Charakter zu erzeugen, erstellen Sie ihn wie im folgenden Beispiel: 
+
+charakter = Char()
+
+Das bedeutet: "Erzeuge einen Char und nenne ihn charakter, um später etwas mit ihm machen zu können". 
+
+Um ihm mehr Persönlichkeit zu geben, sollten Sie ihm noch einen Namen geben: 
+
+charakter.name = "Rannar"
+
+Um den Charakter etwas sagen zu lassen, nutzen Sie einfach die folgende Syntax 
+
+charakter.say('''Endlich kann ich frei sprechen!''')
+
+charakter.say() unterscheidet sie nur dadurch von story(), dass es der Charakter ist, der spricht, was im TexTRPG dadurch ausgedrückt wird, dass der Name des Charakters vor jeder Zeile steht. 
 """)
+
+test_in_interpreter = ask("Wollen Sie das gleich im Interpreter testen?  (Ja, nein)")
+
+if test_in_interpreter.lower() in ["ja", "j", ""]: 
+    story("""Der Python Interpreter wird gleich gestartet. 
+
+Wie üblich können Sie ihn mit exit() verlassen, um mit dem zweiten Teil von Lektion 3 fortzufahren.""")
+    call("python -ic 'from rpg_lib.textrpg import *")
+
+story("""Mit diesen einfachen Schritten können Sie nun bereits Charaktere erzeugen und sprechen lassen, aber ich möchte mir noch den Moment Zeit nehmen, Ihnen zu erklären, was sie damit intern tun. 
+
+""")
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.