Seite 1 von 1
Re: RPG Spiel - Level ups, Skills, jobs, Kaepfe und mehr!
Verfasst: Samstag 24. Dezember 2011, 23:21
von cofi
Lionhard hat geschrieben://Sorry ich weiss nicht wie ich das 'Euer können' mit einem Wort ausdrucken kann, ich bin aus Tschechien, ich spreche nur Deutsch
Du sucht "Fähigkeiten".
Ansonsten willst du vielleicht noch einen Link angeben, wo man das bereits geschaffene einsehen kann?
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 11:05
von Krabman318
Könntest du uns den Teil vom Quelltext zeigen, in dem der Error auftritt?
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 12:06
von BlackJack
@Lionhard: Wenn irgend wo in einer Funktion oder in einer Methode einem Namen ein Wert zugewiesen wird, dann ist es für Python ein lokaler Name. Du hast da ein ``coins -= 80`` stehen, aber dem Namen `coins` wird davor im Programmfluss nirgends ein Wert zugewiesen. Von etwas Unbekanntem kann man nicht 80 abziehen.
`coins` scheint auf Modulebene zu existieren also könnte man das theoretisch mit ``global`` lösen. Nur sollte man ``global`` vermeiden, da dass zu unübersichtlichen und fehleranfälligen Programmen führt bei denen man schlecht bis gar nicht einzelne Funktionen isoliert testen oder zur Fehlersuche ausprobieren kann. Auf Modulebene sollten in der Regel nur Definitionen von Konstanten stehen. Also importierte Namen, Definitionen von Funktionen und Klassen, und Werte die sich nicht ändern.
Der Quelltext sieht sehr unflexibel aus wenn da für jede Stadt, jedes Geschäft, jedes Produkt extra Code geschrieben werden muss. Das sind alles Sachen die man generischer über Datenstrukturen lösen sollte, statt die Daten in statischen Code zu verstecken. Und das auch noch extrem redundant. Preis, benötigte Stärke, und Schadenspunkte für das Schwert kommen da *viel* zu oft in Code und Daten vor.
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 13:01
von webspider
BlackJack hat geschrieben:Der Quelltext sieht sehr unflexibel aus wenn da für jede Stadt, jedes Geschäft, jedes Produkt extra Code geschrieben werden muss. Das sind alles Sachen die man generischer über Datenstrukturen lösen sollte, statt die Daten in statischen Code zu verstecken. Und das auch noch extrem redundant. Preis, benötigte Stärke, und Schadenspunkte für das Schwert kommen da *viel* zu oft in Code und Daten vor.
Klingt so als müsste er Objektorientierung mit Python erlernen. Wobei, zugegebenerweise ist das schon allein dann Pflicht wenn man gut von mehreren Leuten verbesserbaren Code erstellen will.
@Lionhard: Überhaupt, mir fehlt noch ein konkretes Konzept, so sieht es mehr danach aus als wolltest du das ultimative RPG erschaffen ohne wirklich zu wissen was dir an den vorherigen nicht ausreicht. "[…] ein eigenes Spiel […] wo ich solche Sachen wie wenig Skills, kleines oder zu großes Inventory usw. vermeiden kann." ist schon sehr schwammig ausgedrückt, findest du nicht auch?
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 13:24
von BlackJack
@Lionhard: „Hauptsache es klappt“ hat nichts mit Programmieren zu tun. Aufräumen kann man den Quelltext IMHO auch nicht — den muss man schon von Grund auf neu schreiben. Es sind ja keine kleinen Änderungen sondern das grunsätzliche Konzept.
Wo auch immer ``global coins`` steht, in `on_btnDaerion_mouseClick()` steht es jedenfalls nicht. Und dort wird dem lokalen Namen `coins` nichts zugewiesen bevor ``coins -= 80`` ausgeführt wird. Letztlich sollte *nirgends* ``global coins`` stehen. Wenn man das sauber lösen will, dann müsste man das objektorientiert angehen.
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 17:03
von Dav1d
Deshalb spricht BlackJack von Objekt-Orientiert
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 17:20
von webspider
Erlerne Objektorientierung, dann gucken wir weiter. In der Form wird das nichts mit dem Spiel.
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 20:58
von Krabman318
Lionhard hat geschrieben:omg koennt ihr mir einfach nicht den richtigen Code schicken?

Code: Alles auswählen
class item():
def __init__(self, value = 0):
self.value = value
class player():
def __init__(self, coins = 0, inventory = []):
self.coins = coins
self.inventory = []
def buy(self, item):
if self.coins >= item.value:
self.coins -= item.value
self.inventory.append(item)
else:
print("Insufficient funds!")
Das hier ist doch schonmal ein Anfang.
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 25. Dezember 2011, 22:21
von Dav1d
PEP-8 konform:
Code: Alles auswählen
class Item():
def __init__(self, value=0):
self.value = value
class Player():
def __init__(self, coins=0, inventory=None):
self.coins = coins
if inventory is None:
self.inventory = []
def buy(self, item):
if self.coins >= item.value:
self.coins -= item.value
self.inventory.append(item)
else:
print("Insufficient funds!")
PS: "def __init__(self, coins=0, inventory=[]):" ist keine so gute Idee:
Code: Alles auswählen
In [1]: def foo(a, x=[]):
...: x.append(a)
...: return x
...:
In [2]: foo(1)
Out[2]: [1]
In [3]: foo(2)
Out[3]: [1, 2]
In [4]: foo(3)
Out[4]: [1, 2, 3]
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Montag 26. Dezember 2011, 18:34
von webspider
Das löst dein Problem nicht wirklich. Erlerne wie gesagt Objektorientierung und überleg mal in welche Richtung es genau gehen soll, dann könntest du Mitstreiter finden.
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Dienstag 27. Dezember 2011, 16:14
von /me
Lionhard hat geschrieben:Wieso sollte das nicht mein Problaem loesen? wen man die Variable ¨coins' 0 ist und man in einer der Definition global coins schreibt, dan geht alles und was genau heisst dieses Objekt orientierung... heisst das ich soll einfach nur so programmieren damit man sich im Code besser auskennt?
Die Verwendung von
global führt zu großen und unpraktischen Abhängigkeiten im Code.
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 24. Februar 2013, 11:56
von HarteWare
Also ein Anfang wäre mal:
http://www.google.de/
oder vllt. hier:
http://net.tutsplus.com/tutorials/pytho ... ogramming/
Zum besseren Verständnis der Objektorientierten Programmierung fällt mir noch das Stichwort "EOS" ein, mit Verweis auf den ersten Link

Ein kleines nettes Programm...
Ich hoffe das hilft dir in irgend einer Weise
mfg
EDIT/:whooops, das "Topic" ist ja mal voll "out of date"

Naja, kann ja nicht schaden...
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 24. Februar 2013, 12:19
von Hyperion
HarteWare hat geschrieben:
EDIT/:whooops, das "Topic" ist ja mal voll "out of date"

Naja, kann ja nicht schaden...
Doch, kann es... dieser "python-kurs.eu"-Link ist dafür ein Beispiel. Dieser ist schlicht und ergreifend an vielen Stellen *falsch*. Zugriffsschutz gibt es in Python de facto nicht - es gibt sehr wohl Konventionen, aber aus dem Artikel wird das nicht deutlich; zumal, wenn dort von "private" gesprochen wird. Und das Elend mit den "Destruktoren" kennen wir ja schon hinlänglich aus dem Galileo Open Book

Ich meine mich zu erinneren, dass es da noch einige andere "Hämmer" gab, habe jetzt aber keine Lust das wieder durchzugucken.
Fazit: Finger weg von diesem Tutorial!
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 24. Februar 2013, 13:03
von /me
Hyperion hat geschrieben:Fazit: Finger weg von diesem Tutorial!
*unterschreib*
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 24. Februar 2013, 13:26
von HarteWare
Vielen dank für den Hinweis, ich werds sofort entfernen.
mfg
Re: RPG Spiel(2D) - Level ups, Skills, jobs, Kaepfe und mehr
Verfasst: Sonntag 15. September 2013, 10:40
von bwbg
Den verbliebenen Link (tutsplus.com) kann ich auch nicht empfehlen. Ich habe die Seite nur überflogen, bekomme aber von den Erklärungen zu Instanzen und deren Attributzugriff (dort properties genannt) einen Würgereiz:
Der Autor weist dem Klassenobjekt ein Attribut zu und vermittelt die Auffassung, dessen Instanzen besitzen nun dieses Attribut. Das ist schlichtweg falsch und bildet dabei den Kern des Artikels.
Grüße ... bwbg