Erst mal Respekt für die Initiative, (jungen) Menschen das Programmieren beibringen zu wollen. Das finde ich gut und ich denke auch, Spiele sind ein gutes Mittel dazu.
Die Art der Präsentation spricht mich leider nicht sonderlich an. Dokuwiki mag ein mächtiges Werkzeug sein, aber es hat mir zu viel "visual clutter" und auch solche Informationen wie dass es 3 Millisekunden gedauert hat, 8 Token zu Syntax-Highlighten hat in einem Tutorial nichts zu suchen.
Ich würde vorschlagen, den Text noch mal von einem "native speaker" durchschauen zu lassen. So heißt es z.B. "You chose" und nicht "Your choosed". Auch würde es meinem Sprachgefühl mehr entsprechen, den Drachen anzugreifen und nicht zu bekämpfen, also "You attack the dragon. It runs away."
Ich denke, ein Tutorial sollte immer ideomatischen (also guten) Code zeigen. "myanswer" ist kein guter Name für eine Variable. Niemals. Und einmal schreibst du auch "mymyanswer".
Die "line by line discussion" würde ich ganz anders darstellen. Du hast Zeilennummern. Beziehe dich einfach darauf. Die Tabellendarstellung nimmt nur unnötig Platz weg. Ich würde mir wahrscheinlich so kleine Pfeile mit Nummern drin als Grafiken basteln und die hinter die Zeilen einfügen. Dann kann man sich auf diese Nummern beziehen und braucht gar keine Zeilennummern. Und dann muss man auch nicht extra erwähnen, dass man diese nicht mit eintippen soll.
Ein Kommentar "# filename: python0001.py" ist IMHO auch für Menschen total überflüssig. Der Name steht sowieso als Hyperlink über den jeweiligen Abschnitt.
Auch in Österreich wird man doch bestimmt die Regel haben, dass vor Interpunktionszeichen kein Leerzeichen stehen soll, oder ? !
Wenn du "while" erklärst, würde ich nicht gerade mit einer "repeat-until" Schleife als Beispiel beginnen. Genau die hat Python ja nicht und man muss etwas tricksen. Ich glaube, ich würde auch sofort mit
Code: Alles auswählen
while True:
choice = input("....")
if choice in "123q": break
beginnen, was ich klarer finde als `myanswer="something stupid"` in die Schleife einzusteigen.
Noch besser wäre wahrscheinlich, mit einer kleinen Bibliothek - die man zunächst nicht erklärt - einzusteigen, und dort bereits eine Funktion anzubieten, die nur zurückkehrt, wenn eine gültige Anwort gegeben wurde:
Code: Alles auswählen
def ask(question, answers):
answer = input(question)
while answer not in answers:
s = ", ".join(answers[:-1])
if s: s += " or "
print("incorrect answer, please enter " + s + answers[-1])
answer = input(question)
return answer
Ach, und bitte, niemals - ich wiederhole NIEMALS - will ich Code wie `belly==True` für eine Boolsche Variable `belly` sehen. Das ist (will man nicht eine dreiwertige Logik implementieren) immer falsch und überflüssig. Wo will man aufhören? Auch `belly==True` ist ja ein Wahrheitswert, um den zu testen, muss ich als `(belly==True)==True` benutzen oder wie? Und bei `while not gameOver == True:` heben sich langsam die Fußnägel an ;)
Oh, und `def getanswer(acceptable=[])` ist auch ein Fehler. Der Ersatzwert für `acceptable` sollte kein veränderbares Objekt sein, außer man weiß genau, was man da tut.
Ansonsten noch eine Bemerkung zu dem Spiel. Vielleicht wäre ich da zu ambitioniert und würde potentielle Leser überfordern und so ist das genau richtig, doch einfach nur eine Zahl zwischen 1 und 3 einzutippen und eine fest verdrahtete Antwort zu lesen ist schon sehr simpel, finde ich. Wäre nicht vielleicht etwas wie "Wer wird Millionär" ein interessantes Beispiel, wo das Spiel dann sogar Spaß machen kann?
Stefan