Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Hallo nochmals,
in meinem Rollenspiel http://www.python-forum.de/viewtopic.php?f=9&t=30862
möchte ich dass wenn die erste quest abgeschlossen ist, dass man sie nicht wiederholt, sondern dei zweite beginnt.
Ich kam jetzt nur auf diese Lösung:
class Quest(object):
def __init__(self, name):
self.name = name
self.solved = False
quests = [Quest('Start'), Quest('nächste Aufgabe')]
quests[0].solved = True
for quest in quests:
if not quest.solved:
print quest.name
Löschen aus Listen, wenn es sich nicht gerade um das letzte Element handelt, ist keine sehr schöne Lösung. Am einfachsten ist es, wenn du die shuffle-Funktion aus dem random-Modul verwendest und damit alle Quests mischt. Anschließend kannst du die Liste ganz normal mittels for-Schleife durchlaufen. Damit sparst du dir das unnötige Löschen oder das Markieren der bereits erledigten Quests.
Wenn ich das Programm dann aber neu starte fangen die Quest wieder von vorne an, aber ich möchte ja dass man jede Quest nur einmal spielt.
Deswegen kann man dann die Liste abspeichern und sie beim nächsten Programmstart wieder verwenden ohne dass man eine Quest wiederholt.
Gruß Pythoraner
@Pythoraner123: Bleibt trotzdem unschön ein beliebiges Element aus einer Liste zu entfernen. Ein `shuffle()` beim ersten mal und dann entfernen des letzten Elements mit `pop()` ist effizienter. Letztlich würde ich es aber umgekehrt lösen: Beim Spieler nicht vermerken welche Quests noch offen sind, sondern welche schon bestanden wurden. Dann kann sich die Anzahl der Quests auch ändern zwischen den Spielen. Der Spieler spielt nix doppelt, bekommt aber die Chance auch neu hinzu gekommene Quests zu spielen. Umgekehrt hat er keine ungespielten Quests in seiner Liste stehen die mittlerweilse vielleicht gar nicht mehr existieren.